Campaign to utm_campaign
The obvious one, and the one worth getting exactly right: if the value matches the campaign name in Ads Manager character for character, spend and sessions line up without a lookup table.
Your first client is free. Set up your naming system in two minutes.
Tracking parameters for Facebook and Instagram campaigns, built from the three levels you already have open in Ads Manager. Source and medium are fixed, because for paid social they are not a decision.
Fixed for Meta
One spelling, forever. Not fb, not facebook.
Groups Meta with your other paid social.
From your Ads Manager structure
The campaign name in Ads Manager.
utm_campaign
NIKE_META_PUR_NL_BRD
Usually the audience, which is what an ad set really varies.
utm_term
NL_BRD_18-45_ADV
The creative. This is the column that tells you which ad worked.
utm_content
UGC_PAIN_HOOK03_SARAH_V2
https://example.com/product?utm_source=meta&utm_medium=paid_social&utm_campaign=NIKE_META_PUR_NL_BRD&utm_content=UGC_PAIN_HOOK03_SARAH_V2&utm_term=NL_BRD_18-45_ADV
The obvious one, and the one worth getting exactly right: if the value matches the campaign name in Ads Manager character for character, spend and sessions line up without a lookup table.
There is no keyword on paid social, so utm_term is free. An ad set is mostly an audience, and audience is what you actually want to segment by, so it earns the slot.
utm_content exists to separate two links that are otherwise identical, which is exactly what two creatives in the same ad set are. This is the column that answers which hook worked.
Every Meta paid placement is meta / paid_social. Leaving them editable is how an account ends up with fb, facebook and Facebook as three sources.
Placement is not acquisition channel. Both run through Meta, both are billed by Meta, and Meta already reports placement. Splitting them here only makes your channel report harder to read.
Meta can inject {{campaign.name}} and its siblings at delivery. That works, but you inherit whatever was typed in Ads Manager, which is only useful if the names already follow a convention.
Naming the campaigns too?
UTMConfig generates the campaign, ad set and ad names and the tracking URL from one set of values, so the two can never disagree.