To track every lead, give each one a source the moment it arrives: GA4 key events for forms and bookings, call tracking numbers for phone calls, UTM tags on every link you control, and hidden form fields that carry the source into your CRM. Then divide each channel’s monthly cost by the leads and customers it produced.
List every way a lead can reach you
Tracking gaps usually come from a contact route nobody thought about. Before touching any tools, write down every way a new customer can get in touch:
- Contact and quote forms on your website
- Phone calls from the website, your Google Business Profile, ads, vehicles, print and word of mouth
- Online bookings through a scheduling tool
- Live chat and text messages
- Emails sent from a mailto link on your site
- Social media messages and lead forms on Facebook or LinkedIn
- Walk-ins and referrals, which need a person to record them
Next to each route, note where those leads end up today (an inbox, a mobile phone, a calendar, a spreadsheet) and who is responsible for logging them. The aim is one place, usually a CRM, where every lead lands with its source attached.
Count forms and bookings as GA4 key events
Google Analytics 4 calls the actions you care about key events. GA4 renamed them from conversions in 2024, while Google Ads still uses the word conversions for the ones it bids on. Every lead action on your site should be set up as one.
- Forms. The most dependable trigger is a thank-you page that only loads after a successful submission. If your form shows a message on the same page instead, have Google Tag Manager fire an event such as generate_lead when that message appears. GA4’s automatic form tracking can count forms that were started and abandoned, so test it before trusting it.
- Bookings. Scheduling tools often run inside an embedded frame your site’s tags can’t see into. Look for a setting that sends people to your own confirmation page after they book, or for the tool’s own analytics integration.
- Phone and email taps. Record taps on your phone number and email address as events, and treat them as signs of intent. Only call tracking confirms that a call actually happened.
Mark only genuine lead actions as key events, then import them into Google Ads or record them with the Google Ads tag so bidding learns from real inquiries. Check each one in GA4’s DebugView to make sure it fires once per submission. If your property was moved to GA4 without these events, our GA4 setup service covers it.
Use call tracking to see where calls came from
For many service businesses the phone brings in more leads than forms do, yet it is the channel most often left untracked. Call tracking gives different sources different phone numbers and forwards them all to your normal line.
- Number swapping on your website. A script shows each visitor a number tied to how they arrived, such as paid search, organic search, social or email, and logs the source when they call. Your main number still appears in your listings and directories.
- Fixed numbers for offline marketing. Give each van wrap, mailer, billboard and print ad its own number, so you can see which ones earn their cost.
- Google Business Profile. Profiles allow additional phone numbers. Many businesses put a tracking number in the primary field and list their main number as an additional one, so profile calls are counted and the main number stays tied to the listing.
- Google Ads calls. If you run Google Ads, calls from call assets and from your site after an ad click can be counted inside the account, with a minimum duration set so misdials and quick hang-ups are left out.
Existing customers, suppliers and robocalls ring tracking numbers too, so a call is not automatically a lead. Have staff tag each call’s outcome or review a sample of recordings, and count only new-customer inquiries. If you record calls, play a short notice first: some states, including California, require consent from everyone on the line.
Tag every link you control with UTMs
UTM tags are labels added to the end of a link that tell GA4 where a visit came from. Google Ads handles this through auto-tagging, which you should leave switched on. Every other link you share needs tags added by hand or by the tool that sends it.
| Tag | What it records | Example value |
|---|---|---|
| utm_source | The platform or sender | facebook, newsletter, google |
| utm_medium | The type of traffic | paid_social, email, organic |
| utm_campaign | The campaign or offer | spring_tuneup, gbp |
| utm_content | The ad or link version | owner_video, footer_link |
- Use lowercase and keep a shared naming sheet, because GA4 treats “Facebook” and “facebook” as different sources.
- Tag the website link on your Google Business Profile so profile visits stand apart from other organic search.
- Tag QR codes, newsletters, social profile links and every Meta ad.
- Leave links between pages of your own site untagged. Tagging them starts a new session and wipes out the visitor’s real source.
Carry the source into your CRM
GA4 counts how many leads each channel produced. Your CRM shows which of those leads became customers, and that is the number that pays the bills. To connect the two:
- Add hidden fields to every form for UTM source, medium and campaign, plus the Google Ads click ID (gclid) and the Meta click ID (fbclid). A small script reads them from the landing page address, stores them in a first-party cookie and fills them in on submission, even if the visitor browsed other pages first.
- Use a lead source field with fixed choices such as Google Ads, organic search, Business Profile, Facebook ads, email, referral and other. Free-text sources quickly turn into a dozen spellings of the same thing.
- Ask callers and walk-ins how they heard about you and store the answer in a separate self-reported field. When it disagrees with the tracked source, both are telling you something.
- Move leads through stages such as new, qualified, booked, won and lost, with a reason for each loss. Mark spam, sales pitches and job seekers as not a lead.
- Send outcomes back to the ad platforms. Google Ads offline conversion imports, using the gclid or enhanced conversions for leads, and Meta’s Conversions API let each platform learn which clicks turned into customers.
Report cost per lead by channel
Once every lead carries a source, the monthly report needs only a few columns:
| Column | How to work it out |
|---|---|
| Spend | Ad spend plus management fees, or SEO and content fees for organic channels |
| Leads | New-customer inquiries from that source, after removing spam and duplicates |
| Cost per lead | Spend divided by leads |
| Qualified leads | Leads your team would happily take more of |
| Customers won | Leads that bought within the period you choose |
| Cost per customer | Spend divided by customers won |
Cost per lead flatters cheap channels that send weak inquiries, so check cost per customer before moving budget. Channels with long sales cycles, such as B2B content, need a longer review window than a single month.
No setup catches everything. Cookie choices, private browsing and people who call after spotting your truck will leave some leads under direct or unknown. That’s acceptable while the share stays steady, and a sudden jump usually means a tag or form has broken. A short monthly check keeps the numbers honest:
- Submit each form and confirm the lead reaches the CRM with the right source.
- Call each tracking number and confirm it rings through and logs the call.
- Make a test booking and confirm the key event fires.
- Compare lead counts in GA4, the ad platforms and the CRM. Large gaps point to something broken.
If you’d rather not build this yourself, our marketing and sales automation team sets up the tracking and connects forms, calls and bookings to your CRM.
