Skip to main content

UTM attribution convention

This page defines the link-tagging convention for Ophiuchus external links. Use it when posting a link to a social platform, developer community, or any external channel so that attribution is consistent and queryable in GA4.

Parameters

Four parameters are used. Every external link pointing at the Ophiuchus site must carry all four.

ParameterMeaningExample values
utm_sourceWhere the link is postedthreads, hackernews, linkedin, x, discord, newsletter
utm_mediumThe channel typesocial, community, email, direct
utm_campaignThe campaign or content pushalpha_launch, alpha_update_v001, founder_update
utm_contentThe specific post or variant within a campaignhero_cta, thread_reply, bio_link

Keep values lowercase, snake_case, and short. GA4 treats them case-sensitively, so Threads and threads appear as separate sources.

Convention by channel

Threads

Threads is a social medium. The utm_source is threads. Differentiate posts within the same campaign by utm_content.

https://ophiuchus.horonom.com/?utm_source=threads&utm_medium=social&utm_campaign=alpha_launch&utm_content=launch_post

A reply to a developer's question about context handoffs would use:

https://ophiuchus.horonom.com/?utm_source=threads&utm_medium=social&utm_campaign=alpha_launch&utm_content=dev_reply

Linking to the quickstart instead of the landing page:

https://ophiuchus.horonom.com/docs/quickstart?utm_source=threads&utm_medium=social&utm_campaign=alpha_launch&utm_content=quickstart_link

Developer community posts (Hacker News, dev.to, etc.)

Developer community posts are community medium:

https://ophiuchus.horonom.com/?utm_source=hackernews&utm_medium=community&utm_campaign=alpha_launch&utm_content=show_hn_post

For a dev.to article:

https://ophiuchus.horonom.com/docs/quickstart?utm_source=devto&utm_medium=community&utm_campaign=alpha_launch&utm_content=article_cta

Newsletter or direct email

https://ophiuchus.horonom.com/?utm_source=newsletter&utm_medium=email&utm_campaign=alpha_launch&utm_content=header_link

How UTM attribution reaches GA4

When a visitor follows a tagged link, the parameters arrive in the landing page URL. The GA4 script reads them from location.search before the page fires its first event. GA4 then associates the session with the source/medium/campaign triple without any additional code on this site.

What is verified: The parameters survive in the URL when tested manually, which is what GA4 reads. Docusaurus's router does not strip query strings. The GA4 stream (G-SK9BL6R66J, "Official website", HORO-568) exists and is wired to production.

What is not yet verified end-to-end: whether a tagged link's source/medium actually appears correctly attributed in the GA4 Acquisition reports depends on GA4's own processing (standard reports can lag by up to 24 hours); Realtime/ DebugView is the practical way to confirm a specific click's attribution immediately after following a tagged link.

Limitations and housekeeping

  • Do not share un-tagged links for tracked campaigns. A visitor who arrives without UTM parameters is attributed to "Direct" or "(none)" and the campaign data is lost.
  • Do not reuse a utm_content value across different posts in the same campaign. Distinguish them so individual posts are measurable.
  • GA4 does not deduplicate visitors across sessions. A visitor who clicks two links from the same campaign appears as two sessions with two sources, which is the correct count for acquisition measurement.
  • fake_door_click and fake_door_signup events belong to the Fake Door feature (HORO-250/264) and are not part of this UTM convention; they use separate low-cardinality feature parameters defined in those tickets.