Guide
UTM parameters for social media
Social clicks are allergic to clean reporting. In-app browsers, link shorteners, and “I’ll just put the homepage in the bio” all conspire to feed Direct. UTMs are how you fight back without yelling at a phone. Paid ads have their own pages for Meta; this page is the organic vs paid split and the placements that are not an ad object.
Paid and organic are different mediums
If money moved, utm_medium=paid_social. If it did not, utm_medium=social. Using cpc on Meta or LinkedIn often files sessions as Paid Search, which is a fun way to make Search look like a genius. Using social on ads makes Organic Social look expensive. Be literal. Future-you is literal.
Source is the platform: facebook, instagram, linkedin, tiktok, youtube, pinterest, reddit. Meta ads can use facebook even when the placement is Instagram if that is your team rule — just write the rule down so two people do not pick two sources for one ad set.
Bios, stories, and posts
One campaign can cover a moment (product-launch-2026). Content distinguishes bio, story-swipe, feed-caption, pin-comment. Change utm_content when the bio destination changes so last month’s product launch does not merge with this month’s webinar.
| Placement | Source | Medium | Content example |
|---|---|---|---|
| Instagram bio | social | bio | |
| Story link sticker | social | story-swipe | |
| LinkedIn post | social | feed-caption | |
| Boosted post / paid ad | platform | paid_social | the creative |
| Paid creator | creator-handle | paid_social | collab or video id |
| Unpaid creator | creator-handle | social | gifted or seed |
Influencer work: source = creator handle (lowercase slug), medium = social or paid_social depending on the invoice, campaign = the collab or the product program. Do not invent medium influencer unless you have a custom channel and a written rule. Default grouping will not know that word.
Shorteners and in-app browsers
Shorten after you tag, never before. A short link should 301/302 to the full UTM URL and keep the query string. If the shortener strips parameters, it is not a shortener. It is a magician, and you did not book a magician. In-app browsers (Instagram, LinkedIn) sometimes drop tags on a second hop. Click your own story on a phone that is not on office Wi‑Fi. Decode the final URL in the decoder.
Build variants in the bulk generator. Validate a paid sample with the validator before the media team spends the rest of the budget. Bio links without tags are Direct with a pretty icon — that is the hole in why track campaign traffic.