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.

An admin approves every new account by hand. Nothing is created until then. We reply by email; no newsletter, no sequence.

  • Published in full
  • No email required
  • Copy-ready value lists
app.salescrew.io/outreach
Campaigns: segment, sequence and schedule

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.

ParameterWhat it answersRuleExample
utm_sourceWhich platform or senderFrom the source list below; never free textgoogle
utm_mediumWhich kind of trafficFrom the medium list belowcpc
utm_campaignWhich campaign, offer and audienceThe four-part pattern2026-09_search_crm-demo_agencies
utm_contentWhich ad, email step or linkShort variant labelrsa-variant-b
utm_termWhich keyword (search only)The keyword, hyphenatedcrm-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.

Channelutm_sourceutm_medium
Paid searchgoogle, bingcpc
Paid socialmeta, linkedinpaid-social
Organic sociallinkedin, x, youtubesocial
Cold emailoutboundemail
Newsletternewsletteremail
Partner or referralthe partner's domain, hyphenatedreferral
Marketplace profileupwork, fiverrmarketplace

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-cfo

A 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-agencies

Rules 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 channel

In 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

Outbound links carry UTMs like any other channel. Use source "outbound" and medium "email", and put the cadence step in utm_content. Cold email then shows up in cost per meeting beside paid search, and the lead gen client report template can report both on one line each.

Put spend and deals in one database

The marketing module comes with SalesCrew Agency, $1,200 a month with unlimited seats.

An admin approves every new account by hand. Nothing is created until then. We reply by email; no newsletter, no sequence.