Cost per qualified lead, including calls, WhatsApp and walk-ins
How to work out what each channel really costs per enquiry and per qualified lead when many enquiries arrive by phone, WhatsApp or walk-in.
5 min read
Open the traffic acquisition report in GA4 and look at session source and medium. If facebook / social, Facebook / Social, fb / post and FB-ads / paid all appear as separate rows, you have the usual UTM problem. Everyone who shared a link invented their own labels. The data exists, but it is split across rows nobody can add up with confidence, and some of it has slipped into Unassigned.
UTM parameters are labels added to the end of a URL. When someone clicks the link, GA4 reads the labels and records where the visit came from. Three of them do most of the work and belong on every tagged link.
Two more are optional. utm_content tells versions apart within one campaign, such as the header button and the footer link in the same email. utm_term was designed for paid search keywords and is seldom needed now, because Google Ads auto-tagging already passes keyword detail.
Two facts about GA4 shape the rules. It treats values as case-sensitive, so Email and email are counted as different mediums. And it sorts visits into default channel groups by matching source and medium against fixed definitions, so a medium it does not recognise lands in Unassigned.
A shared Google Sheet works for most small teams, because it puts the rules inside the tool people use to make links.
Rules written in a document get forgotten; rules built into the tool people use every day get followed.
Give it these columns: date, owner, destination URL, source, medium, campaign, content, final URL, where used and notes. Turn source and medium into dropdowns with data validation, so nobody can type a new variant. Build the final URL with a formula that joins the parts, converts them to lowercase and swaps spaces for hyphens. If the destination URL already contains a question mark, the formula must join the tags with an ampersand instead, or the link breaks.
Consider an engineering components exporter that sends a monthly newsletter to distributors and prints a QR code in its expo catalogue. The newsletter link uses source newsletter, medium email and campaign 2026-09_valve-range-launch. The QR code uses source expo-catalogue, medium print and the same campaign. Months later, the team can see which route sent more distributors to the new product pages, and nobody has to remember what fb-2 meant.
Lock the dropdown lists and give one person the job of adding a new source when a genuinely new channel appears. That person also decides what a new value should be called, so two people never add the same channel under different names.
Tagging everything creates its own mess. Leave tags off in these places.
Once a quarter, export source and medium from GA4 and compare them with the sheet. When you find a stray value, trace it back to the link that created it and fix the link, not just the report.
Export last month's session source and medium from GA4, list every spelling variant you find, and turn the clean versions into dropdowns in a shared link sheet.
Written by Fibvo — Bengaluru and Erode, India — working with clients in other time zones. Questions, or think we have it wrong? Tell us.
Keep reading
How to work out what each channel really costs per enquiry and per qualified lead when many enquiries arrive by phone, WhatsApp or walk-in.
5 min readHow to build a monthly report short enough to be read: a handful of numbers, commentary that explains change, and decisions with named owners.
4 min readWhy Google, Meta and your SEO report all claim the same enquiry, and a practical method for deciding where the next rupee of budget should go.
5 min readNext step
Send the problem in a paragraph. We will reply within one working day with an honest view of whether we can help, and what it is likely to cost.