Skip to content

Attribution

A source that brings a thousand signups and no customers is worth less than one that brings twenty signups and five customers. Attribution joins where each waitlist signup came from to who is paying you in Stripe.

It covers people who signed up through a Launch waitlist form, hosted page or widget. It is not page analytics: it knows nothing about visitors who never signed up, and customers who never joined your waitlist have no recorded source. There is no tracking script, no cookie and no browser storage, so it needs no consent banner.

The hosted page at launch.nordva.dev/waitlist/<slug> and the script-tag widget record the source automatically. From your own form, pass it with the signup; see Where signups came from.

Only the first signup for an email records a source. The referrer is stored as a hostname only, and the landing page as a path without its query string.

Tag your links so the report is useful:

https://launch.nordva.dev/waitlist/acme?utm_source=producthunt&utm_campaign=launch-day

Connect Stripe read-only so Launch knows who is paying. Without it the funnel still works and paying is zero. Signups and Stripe customers are matched by email.

Terminal window
curl "https://api.nordva.dev/v1/attribution?group_by=referrer&period_days=90" \
-H "Authorization: Bearer nv_live_YOUR_SECRET_KEY"
{
"data": {
"group_by": "referrer",
"rows": [{
"source": "news.ycombinator.com",
"signups": 412, "confirmed": 398, "invited": 120,
"paying": 9, "ever_paid": 11, "signup_to_paying": 0.022,
"money": [{ "currency": "usd", "mrr_minor": 20100, "revenue_minor": 46300 }]
}],
"stripe": { "connected": true, "status": "active" }
}
}
group_byGroups byPlan
referrer (default)Referring site’s hostname; (direct) when noneIndie
utm_sourceutm_source; (none) when absentBuilder
utm_campaignutm_campaignBuilder
referral_codeThe existing signup whose referral link brought the person in. Rows include referrer_emailBuilder

period_days limits the report to signups from the last N days. Omit it for all time. Rows are ordered by paying, then signups.

paying is people with an active or past-due subscription now. ever_paid is people with at least one paid invoice. money is per currency and never converted.

“Which waitlist source produced paying customers last month, and what have those customers asked for?” The assistant calls get_attribution_report, then list_contacts filtered by that source and paying, then get_contact for their feedback.