Documentation

Install in three minutes. Understand every number after that.

Novexa Pilot needs one script tag and a verified domain. These pages cover the install itself, what np.js sends back, and the precise definition behind each metric — so nothing on a dashboard has to be guessed at.

Looking for a definition instead? Jump to the metric glossary.

The tag you install

under 6 KB gzipped
<script async src="https://cdn.novexapilot.com/np.js"
        data-nk="pk_live_YOUR_PUBLIC_KEY"
        data-np-host="yourdomain.com"
        data-np-consent="respect_dnt"></script>
Your own tag carries your public key, hostname and consent mode.
Loads
async, non-blocking
Dependencies
none
SPA routes
detected

Quick start

Three steps, one tag

  1. 01

    Get your domain’s key

    Add a domain in the app. Each one gets its own pk_live_ public key, hostname and consent mode baked into a ready-made tag under Domains → your domain → Settings.

  2. 02

    Paste one tag into <head>

    Put it in your shared layout or template, not on one page at a time. It is async, has no dependencies, and never throws into the host page — on any internal error it disables itself silently.

  3. 03

    Publish, then verify

    Verification fetches your homepage looking for the tag and also checks whether a signed beacon arrived recently. Either one passing flips the domain to active.

Calling np() before the script has loaded

Add the command-queue stub above the tag and nothing fired early is lost — calls are buffered and replayed once np.js is ready.

<script>
  window.np = window.np || function () { (np.q = np.q || []).push(arguments); };
</script>

If verification fails

  • The tag went to staging rather than production.
  • A cache or CDN is still serving the previous HTML.
  • The tag landed in the body instead of the head.
Troubleshooting checklist

Browse by area

Everything we have written down

Areas without a written article yet link to the nearest real reference rather than a placeholder.

Getting started

Register, open a domain access request, add your first domain, then paste one script tag into your site’s <head>. Nothing is counted until verification passes, so a mistyped hostname never pollutes anyone’s numbers.

Typical time from paste to first session: minutes.

First crawl finishes within the hour.

Developer API

Five commands, one global

Everything beyond automatic pageviews goes through the same np() function. There is no SDK to install and no build step — the tag defines the global, and these calls are safe to make from anywhere on the page.

np('event', 'signup_started', { plan: 'pro' });
np('conversion', 'demo_request', { value: 5000, currency: 'INR' });
np('identify', { email: 'a@b.com', name: 'Asha' });
np('consent', 'granted');
np('set', { userId: 'crm-123' });
np('event', name, props?)
Records a custom event. Names are capped at 120 characters; props allow 20 keys at most.
np('conversion', goal, { value, currency })
Marks a goal complete with a value. A given goal fires at most once per session.
np('identify', { email, name })
Links the current visitor hash to a CRM lead, creating the lead if it does not exist.
np('consent', 'granted' | 'denied')
The switch strict_consent waits on. Call it from your own cookie banner.
np('set', { userId })
Attaches your own identifier to the session for joining against your systems later.

Debugging an integration? Append ?npdebug=1 to any page, or call np('debug', true) — every event is logged to the console and nothing is sent.

Data handling

What the tracker never collects

No input values, ever

Password fields, anything marked data-np-private, and everything inside [data-np-ignore] are skipped outright. For every other field the tracker records only that it was interacted with — never what was typed.

No raw IP address stored

The IP is used server-side for country, region and ASN lookup, then discarded. The visitor identifier is a salted hash whose salt rotates every 24 hours, so the same person on two consecutive days is two visitors, not one.

Redaction on ingest

Anything matching an email, phone-number or card pattern is stripped from event payloads before they are written — including from custom properties you send yourself.

Where readers go next

  1. 01Install guideThe full walkthrough, framework by framework, plus what to check when verification fails.
  2. 02Metric glossaryForty-odd definitions — the exact arithmetic behind every figure the product shows you.
  3. 03Keyboard operabilityWhat is reachable without a mouse today, and what deliberately is not built yet.
  4. 04Cookie & tracking noticeWhat is stored on a visitor’s device, and what each consent mode changes about it.
    Docs · Novexa Pilot