Attribution API
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.
What exists today
- For each source it reports signups, confirmed, invited, paying now and ever paid, plus current MRR and collected revenue per currency.
- Group by referring site, UTM source, UTM campaign, or by referral code to see which existing signup brought in paying customers.
- Source is first touch, recorded on the signup itself. The hosted waitlist page and the script widget capture it from the referrer and the page URL with no cookie and no browser storage, so it needs no consent banner. The referrer is stored as a hostname only.
- It only covers people who signed up through a Launch waitlist form, page or widget. It is not page analytics. If you switch on page views per source, it also shows how many times your pages were opened from each source, as an anonymous count: there are still no visitors, sessions or paths.
- Paying and revenue come from your connected Stripe account, matched by email. Without Stripe the funnel still works and paying is zero.
- Sources are recorded on every plan, so the report has history on the day you upgrade.
Endpoints
| GET | /v1/attribution | Funnel and money per source. group_by: referrer, utm_source, utm_campaign, referral_code |
| POST | /v1/waitlist/signups | Pass a source object from your own form |
Full reference with request and response schemas: docs.nordva.dev. Every response uses the same envelope and stable error codes.
MCP tools
The same operations are available to Claude Code, Claude Desktop and Cursor through the Nordva MCP server at mcp.nordva.dev:
get_attribution_report
Arguments, example prompts and client setup →
Questions
- Do I need a tracking script?
- No. There is nothing to install beyond the waitlist form you already use. The source is read once, when the form page loads, and sent with the signup. If you also want the top of the funnel, you can switch on page views per source: the same widget then sends one anonymous count per landing, with the referring site and the UTM values and nothing else. It is off by default.
- What does counting page views collect?
- A number per day and source. No cookie, no browser storage, no IP address, no user agent and no visitor or session identifier is stored, so there are no unique visitors and nothing to link to a person. Only landings are counted, not navigation inside your site, and obvious bots are left out. It runs only when you switch it on for the project and add data-count-views to the widget tag.
- Is this a replacement for web analytics?
- No. It answers one question, which sources produce customers, and only for people who signed up through Launch. It can count page views per source if you switch that on, so you can see views, signups and customers side by side, but sessions, unique visitors and paths through your site are out of scope, on purpose.
- What about customers who never joined my waitlist?
- They are not in this report, because they have no recorded source. They still appear in Revenue and in Contacts.