# Analytics and UTM attribution for launch day

> Know which launch site, post and AI assistant sent each signup, not just how many visitors came.

Canonical: https://abacklaunch.com/prompts/launch-analytics-attribution
Last updated: 2026-10-26

Version 1.0.

When the production site launches I will post on several launch sites and social networks on the same day. I need to know which of them sent the people who signed up, not only how many visitors arrived. Set up analytics with the analytics tool this project already uses (or tell me the options if there is none), capture UTM parameters and referrers, and store the first touch with each new account.

Site: not given. Find the production URL in the project config, or ask me.

## Ground rules

1. Read before you write. Explore the parts of the codebase this job touches and tell me what is already in place.
2. Plan, then stop. Give me a numbered plan: what you will change, in which files, and why. Wait for my approval before editing anything.
3. Fix things at their source (the shared layout, the config, the generator), not with one-off patches page by page.
4. Keep the project's conventions: its framework APIs, file layout, naming and code style. Add no new dependency without asking.
5. Where something is already done well, say so and leave it alone.

## You will not

- Edit `.env` files, secrets or API keys, or print their values.
- Deploy, push, merge or publish anything.
- Delete data, or run migrations or scripts against a production database.
- Add tracking, third-party scripts or links to any site I did not ask for.
- Change copy, design or behaviour that this job does not need.
- Add a second analytics tool when one already exists, unless I agree.
- Send personal data (emails, names) to the analytics tool.

## Your stack

- Framework: Work out the framework, router and build output from the project files (package.json, lockfiles, framework config) before planning, and say which you found.
- Host: Work out where the site is hosted from the config files (vercel.json, netlify.toml, wrangler config, Dockerfile, fly.toml) and say which you found.

## Steps

### 1. Check what is there

Find any existing analytics script, event calls, cookie or consent banner, and where sign-up completes on the server. Tell me what is tracked today and what is missing.

### 2. Pageviews and the events that matter

Make sure pageviews are recorded on every page, including client-side route changes. Add events for the steps of the launch funnel: sign-up started, sign-up completed, and the first meaningful action in the product (name it with me). Use the tool's documented API, and keep event names short and consistent (`signup_completed`, not `User Signed Up!`).

### 3. Capture where each visitor came from

- On the first page view of a visit, read `utm_source`, `utm_medium`, `utm_campaign`, `utm_content` and `utm_term`, plus `document.referrer`, and keep them (a first-party cookie or `localStorage`, 30 days) until sign-up.
- When an account is created, save that first touch on the user record (new nullable columns or a small table), so I can count signups by source in the database even if an ad blocker hid the analytics event.
- Treat referrers from AI assistants as their own source: chatgpt.com, chat.openai.com, perplexity.ai, claude.ai, gemini.google.com, copilot.microsoft.com. Store them as, for example, `ai:perplexity`.

### 4. Respect consent and privacy

If the site shows a consent banner, analytics that set cookies must wait for consent; the first-touch capture should only store the UTM and referrer values, never personal data. Update the privacy policy's list of tools if a new one is added, and show me the wording.

### 5. Give me launch links

Write a short table of UTM links I can use on launch day, one per channel (each launch site, X, LinkedIn, Reddit, Hacker News, my newsletter), with `utm_source` set to the channel and `utm_campaign=launch`. Explain how to see signups by source in the analytics tool this project already uses (or tell me the options if there is none) and with one database query.

## Done means

- [ ] Pageviews are recorded on every page, including client-side navigation.
- [ ] Sign-up started and completed events fire once each, with consistent names.
- [ ] The first UTM source and referrer are saved on every new account.
- [ ] AI assistant referrers are recorded as their own sources.
- [ ] I have a table of launch-day UTM links and a query that counts signups by source.

## Report back

When you finish, give me:

- what you changed, file by file;
- anything you skipped, and why;
- anything I must do by hand (DNS records, dashboards, accounts, deploys);
- how to check each change on the live site.

## Related

- [Get ready for a launch day traffic spike](https://abacklaunch.com/prompts/launch-day-traffic-readiness)
- [Pre-launch audit with a prioritised fix list](https://abacklaunch.com/prompts/pre-launch-audit)
- [From waitlist to launch day email](https://abacklaunch.com/prompts/waitlist-launch-email)
