The UTM Standard: How We Attribute Waitlist Signups to Specific Posts
If you can’t trace signups back to a post, you’re not validating—you’re broadcasting.
The UTM Standard: How We Attribute Waitlist Signups to Specific Posts
If you’re building in public, you’ll ship a lot of posts.
Without attribution, you’ll learn almost nothing from them.
So we made a simple decision: every link that can drive signups must be attributable, and attribution must be stored in the same system of record as validation.
The problem: content without attribution is expensive
Even when content is “free” to publish, it has real costs:
- opportunity cost (time)
- attention cost (audience fatigue)
- execution cost (scheduling tools, creatives)
- and the biggest one: learning cost
When you can’t answer “which post drove confirmed signups?” you can’t iterate systematically.
The standard: 3 required parameters
We enforce three UTMs on every outbound CTA link:
utm_source— the channel (linkedin,x,instagram, etc.)utm_campaign— the experiment theme (<idea-slug>-<theme>)utm_content— the unique content id (one post, one id)
If those aren’t present, the post fails preflight.
The key insight: utm_content should be your content item id
Most teams invent a random scheme for utm_content (“post-7”, “thread-a”, “v2-final”).
We use a better default: the workflow content item id.
That single decision gives you:
- stable identity across edits
- a 1:1 mapping between “draft in workflow” and “signup in DB”
- easy rollups by channel/campaign/content
Where we store attribution
To keep attribution durable, we store it in two places:
- On the content item (the plan)
{ source, campaign, content }
- On the waitlist signup (the outcome)
- UTM params + referrer stored in waitlist metadata at submit time
This means you can answer:
- Which channel is working?
- Which campaign theme is working?
- Which specific post is working?
…without relying on screenshots or “I think that one did well.”
What “good” looks like
At minimum, your validation reporting should show:
- signups by
utm_source - signups by
utm_campaign - optional: top
utm_contentperformers by confirmed signups
Confirmed signups matter because they’re closer to intent than raw traffic.
Takeaways
- Attribution isn’t “analytics work.” It’s validation hygiene.
- If you can’t connect a post to a signup, you can’t improve systematically.
- The simplest robust system is: one content item id → one utm_content.