Documentation
Attribute revenue in five minutes
NumberHill joins your web traffic to your payment processor. Instead of sessions and bounce rates, every channel, page and campaign gets a dollar value — revenue per visitor. Three steps get you there, and none of them need a data warehouse.
Install the scriptOne tag in your <head>. Raw HTML, Tag Manager, WordPress or NPM.Connect checkoutPass numberhill_visitor_id into your processor's metadata.Payment webhooksPoint payment.succeeded at NumberHill to close the loop.Goals & eventsTrack signups, trials and any custom event you care about.
How it works
The tracking script assigns each browser a visitor ID and posts pageviews to the ingest endpoint, where bot traffic is filtered and the traffic source is resolved to a named channel. When that visitor pays, your processor's webhook carries the same visitor ID back to NumberHill, which looks up their first touch and credits that channel with the revenue.
the whole loop
visitor lands → numberhill.js posts a pageview → source resolved (e.g. GitHub)
↓
checkout starts → numberhill_visitor_id in metadata → Stripe / LemonSqueezy / …
↓
payment succeeds → webhook → first-touch lookup → GitHub credited $299First-touch attribution
Revenue is credited to the channel that first brought the visitor, not the last click before checkout. That is what makes the number useful for deciding where to spend.What you need
- A site you can add a
<script>tag to. - One of the supported processors: Stripe, LemonSqueezy, Polar, Shopify, or Dodo Payments.
- Access to your checkout code, so the visitor ID can ride along in metadata.
Migrating from DataFast?
The ingest acceptsdatafast_visitor_id anywhere it accepts numberhill_visitor_id, so switching is a one-line rename — or no change at all while you transition.