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.

December 16, 2025
2 min read
Growth
utm
attribution
validation
analytics
distribution

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:

  1. On the content item (the plan)
    • { source, campaign, content }
  2. 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_content performers 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.