UTM naming convention for cost per lead
Fixed values for source and medium, a four-part campaign name, and rules that let spend and leads join on the same channel.
- Published in full
- No email required
- Copy-ready value lists

The short answer
- Cost per lead by channel only works when every link uses the same utm_source and utm_medium values, so the convention fixes those values in a list.
- This SalesCrew UTM convention uses lowercase, hyphens inside values, underscores between campaign parts, and a {yyyy-mm}_{channel}_{offer}_{audience} campaign name.
- Spend is joined to leads by channel, which comes from the source and medium pair; campaign, content and term add detail without breaking the join.
- Capture the UTM values on the lead record at the first form submit, or the cost-per-lead maths has nothing to divide by.
Why cost per lead breaks without a convention
Your ad platforms report spend by campaign. Your CRM holds leads with whatever UTM values the link carried. If one person tags a link "Facebook" and another "fb", the leads split across two channels and neither matches the spend. You end up with a cost per lead that's too high on one line and blank on the other.
A written convention fixes that at the source. You choose the allowed values once, and everyone picks from the list instead of typing.
The five UTM parameters
Required on every paid, email and social link. Lowercase only.
| Parameter | What it answers | Rule | Example |
|---|---|---|---|
| utm_source | Which platform or sender | From the source list below; never free text | |
| utm_medium | Which kind of traffic | From the medium list below | cpc |
| utm_campaign | Which campaign, offer and audience | The four-part pattern | 2026-09_search_crm-demo_agencies |
| utm_content | Which ad, email step or link | Short variant label | rsa-variant-b |
| utm_term | Which keyword (search only) | The keyword, hyphenated | crm-for-agencies |
Parameter rules from the SalesCrew UTM naming convention, September 2026.
Allowed source and medium pairs
Each pair maps to exactly one channel. The channel is what spend and leads join on.
| Channel | utm_source | utm_medium |
|---|---|---|
| Paid search | google, bing | cpc |
| Paid social | meta, linkedin | paid-social |
| Organic social | linkedin, x, youtube | social |
| Cold email | outbound | |
| Newsletter | newsletter | |
| Partner or referral | the partner's domain, hyphenated | referral |
| Marketplace profile | upwork, fiverr | marketplace |
Channel map from the SalesCrew UTM naming convention, September 2026.
The campaign name pattern
The campaign value carries four parts in a fixed order, joined by underscores. Hyphens join words inside a part. Putting the month first sorts every report by date without extra work.
utm_campaign = {yyyy-mm}_{channel}_{offer}_{audience}
Examples
2026-09_search_crm-demo_agencies
2026-09_social_migration-guide_ops-leads
2026-10_outbound_audit-offer_saas-cfoA complete tagged link looks like this:
https://example.com/demo
?utm_source=google
&utm_medium=cpc
&utm_campaign=2026-09_search_crm-demo_agencies
&utm_content=rsa-variant-b
&utm_term=crm-for-agenciesRules that keep the data clean
Use lowercase everywhere, because many tools treat "Google" and "google" as two sources. Never tag internal links on your own site. A UTM on an internal link overwrites the visitor's real source in your analytics.
Keep the value lists in one shared sheet or a link builder, and add a value only with an owner's sign-off. Review last month's leads for values that aren't on the list, and fix the link that sent them.
From UTM values to cost per lead
Store the first-touch UTM values on the lead when the form is submitted, using hidden form fields. Then the maths is a join between spend and leads on channel and month:
cost per lead (channel, month)
= ad spend for that channel and month
÷ leads whose first-touch utm_source + utm_medium map to that channel
cost per meeting (channel, month)
= channel spend ÷ meetings held from leads in that channelIn SalesCrew, the marketing module collects spend and traffic from GA4, Google Search Console, Bing, Google Ads, Meta Ads and PostHog into the same database as your leads and deals. Cost per lead by channel is a query there, and channel economics shows meetings, deals and cost per meeting by channel. The case for cost per lead as a query explains why that beats exporting both sides to a spreadsheet.
Tag cold email links too
Put spend and deals in one database
The marketing module comes with SalesCrew Agency, $1,200 a month with unlimited seats.