Attribution, cost and ROI
SEO attribution for service businesses: how to credit organic when buyers use five channels
Written by the Top SEO Experts Team
Reviewed by Ritik NamdevLast updated 18 min read
Quick answer
For a service business, SEO attribution works best as a range, not one number. The floor is the jobs where call tracking and the customer’s own answer agree. The ceiling is the jobs where either one points to organic, and GA4 alone will undercount because phone calls never reach it.
Key takeaway Report SEO results as a range. The floor is where independent methods agree, and the ceiling is where either one points to organic.
Example Take a hypothetical plumber. Her GA4 report credits organic search with 5 booked jobs last month, and her CRM shows 60 jobs booked in total. Both numbers are correct, but they answer different questions.
The rest of this post is about closing that gap with data a small business can actually collect. It includes a worked model with every step of arithmetic shown, so you can swap in your own jobs and margin.
Why is SEO attribution harder for service businesses than for ecommerce?
Because the sale rarely ends on your website. An online store sees the click, the cart and the payment in one system. A plumber or HVAC company often sees a phone call, a text, or a form followed by a quote weeks later.
Picture a homeowner with a leaking water heater. She searches at 9 p.m., skips the ads, opens two sites and saves a map listing. The next morning a neighbor texts her a different name.
At lunch she calls the saved one. That’s one job, four touchpoints, and no clear view in your analytics.
- 9 p.m.She searches, skips the ads, opens two sites and saves a map listing.
- The next morningA neighbor texts her a different name.
- At lunchShe calls the saved one. Nothing in your analytics shows the full path.
What three things break the chain?
Three things break the chain:
- The conversion often happens off-site, since a call from a map listing never touches your pages.
- The person who books is sometimes not the person who searched.
- The journey spans devices, with research on a laptop and the call from a phone.
None of this makes attribution pointless. It means you should expect a range and narrow it with evidence. Our post on SEO and ServiceTitan attribution covers the version where job data lives in field-service software.
What does GA4 credit to SEO, and what does it miss?
GA4 credits organic search only for sessions it sees, tied to events you’ve marked as key events. It knows nothing about calls that don’t start with a click on your site, and it files many untagged visits under “Direct.”
Here’s what Google documents, as we read it on 22 October 2026.
How do attribution models work now?
Attribution models first. Google’s help page on advertising and attribution says the first click, linear, time decay and position-based models are no longer available as of November 2023. Search Engine Land’s report says data-driven attribution became the default in GA4 and Google Ads.
How does GA4 sort channels?
Channels next. In the default channel group, Organic Search is traffic whose source matches Google’s list of search sites, or whose medium is exactly “organic.” Google’s description says it includes AI Overviews and AI Mode.
Direct is source “(direct)” with medium “(not set)” or “(none)”, and anything matching no rule is “Unassigned.”
What counts as a conversion?
Then conversions.
Definition A key event is “an event that measures an action that’s particularly important to the success of your business.”
You choose which events to mark, and the page says reports such as Landing pages and User acquisition carry a “Key events” column.
Look at what’s missing from those definitions. Nothing mentions a phone call, a walk-in or a text message. If a job produced no tagged event in a browser, GA4 doesn’t know it happened.
So the model debate is the smaller problem for a local business. Keep GA4’s default for web leads and spend the saved time on the missing calls.
Which attribution questions can each data source answer?
Each source answers a different question, and none answers all of them.
| Question | Best source | What it cannot tell you |
|---|---|---|
| Which pages and queries bring visitors from Google? | Search Console Performance report | Who called, or whether a click became a lead |
| Which web sessions ended in a form or call-button click? | GA4 key events by default channel group | Calls that start off-site or off-browser |
| Which calls came from which source? | Call tracking with a number per source | Why the caller picked you |
| How many people tapped call on the map listing? | Business Profile performance data | Whether the call connected or became a job |
| Which source booked the job? | A required source field in your CRM | Anything the person entering it guessed |
| What did the customer remember? | A “how did you hear about us” answer | The first touch, which they often forget |
What can Search Console tell you?
Search Console is the cleanest view of search demand, but Google warns that the position value “can be misleading if you don’t understand the subtleties”. Use it for direction, not for counting leads.
What can Business Profile data tell you?
Business Profile data needs its own caution. Google’s performance help page defines Calls as “the number of times a customer clicked on the call button on your Business Profile.” That’s a tap count, and a tap isn’t a conversation.
The same page adds three limits. Search term data updates monthly, and a person is counted only once a day in Views. The performance data also includes both organic results and Google Ads, so a spike in listing taps may not be an SEO win.
How do you track phone calls and forms back to organic search?
Mark the web actions as key events and give each source its own tracking number. Tag the links you control, and make the job record carry a source. Do these in order.
- Define what countsSet a minimum call length and a service-area rule for forms.
- Mark key eventsMark form submissions and call-button clicks in GA4.
- Track callsUse a tracking number per source on the website.
- Tag your linksAdd UTM parameters to links you control.
- Require a sourceMake the CRM source field mandatory.
- Review mismatchesRead five mismatches each month.
- Define what counts: a lead is a call over a minimum length, or a form from inside your service area. Google Ads call conversions work the same way, since you set a minimum call length and calls at least that long count. Borrow the idea for your own call log.
- Mark form submissions and call-button clicks as key events in GA4. Test each with a real submission and a real tap. Our GA4 for SEO guide walks through the setup.
- Use call tracking with dynamic numbers on the website. A visitor from organic search sees a number tied to that source, so the call log shows where it came from. Our call tracking for SEO guide covers the number-consistency risks to plan for.
- Tag the links you control, such as the Business Profile website link, with UTM parameters, which is our practice and not a Google requirement. Google’s URL builder documentation says to always use
utm_source,utm_mediumandutm_campaign. It also says values are case sensitive, and missing parameters show up as “(not set).” - Make the source field mandatory in your CRM. Whoever books the job picks a source from a short list. Ask the caller one question and write the answer down in their words.
- Review the mismatches monthly. Where the tracked source and the stated source differ, read five of them.
What about click-to-call on mobile?
Be careful with click-to-call on mobile. Google’s own Ads help distinguishes tracked calls from clicks on a number on a mobile website.
For those clicks, it says it can only track the clicks, not the calls themselves. A tap you can’t confirm shouldn’t count as a lead.
Watch out A call-button tap is not a connected call. Count answered calls above your minimum length.
How do you tag a Business Profile link?
A hypothetical tagged Business Profile link might look like this:
https://example.com/?utm_source=google&utm_medium=organic&utm_campaign=gbp-listing
Watch out GA4’s Organic Search channel matches medium “organic,” so this tag files listing visits there. To see map listing visits separately, pick a different medium and accept that they land in another channel.
What should the CRM source list say?
For the CRM source list, six to eight choices is enough. Use Google search, Google Maps, paid search, Local Services Ads, referral, repeat customer, other, and “unknown, asked and didn’t say.”
Leave “Website” off the list, because it invites a lazy default.
Our guide on branded versus non-branded search shows how to split queries so people who already knew you don’t inflate the organic row.
Want to apply this to your site?
Not sure where to start? Get a plan for your own business.
What does a worked SEO attribution model look like?
It looks like a table of booked jobs where each method makes a different claim, and the useful output is the range between the claims. Everything below is hypothetical: a made-up plumbing company with 60 booked jobs in a mature month. None of it is client data, a benchmark or our pricing.
What does each method see?
First, what each method sees for those 60 jobs.
| Method | Jobs it can trace | Jobs it credits to organic search or the map pack | Share of 60 |
|---|---|---|---|
| GA4 key events, default model | 24 | 5 | 8% |
| Call tracking plus CRM source (branded sessions excluded) | 60 | 28 | 47% |
| Customer says “Google search” or “Google Maps” | 60 | 27 | 45% |
GA4 alone says 5 jobs. Of its 24 traceable jobs, it credits organic 5, paid search 9, direct 8 and referral 2. The other 36 jobs came in by phone with no tracked web session.
How do the methods overlap?
Now overlay the second and third methods, job by job.
| Overlap | Jobs |
|---|---|
| Tracking and customer both say organic or map pack | 19 |
| Tracking says organic, customer names something else | 9 |
| Customer says Google, tracking says direct, paid or unknown | 8 |
| Neither points to organic | 24 |
| Total | 60 |
Read the table from the top. The first row is your floor. The next two rows are the disagreements to investigate.
The last row is the jobs organic did not touch, as far as these methods can tell.
Key takeaway The floor is 19 jobs, where independent methods agree. The ceiling is 19 + 9 + 8 = 36 jobs, where either method points to organic. As a check, 28 + 27 - 19 = 36.
What does the money math look like?
Now money. Assume gross profit of $420 per job and an all-in SEO cost of $4,000 for the month. Both are invented.
| Measure | GA4 only | Floor | Ceiling |
|---|---|---|---|
| Jobs credited to SEO | 5 | 19 | 36 |
| Gross profit credited | 5 x $420 = $2,100 | 19 x $420 = $7,980 | 36 x $420 = $15,120 |
| Net of $4,000 cost | -$1,900 | $3,980 | $11,120 |
| Net return on cost | -47.5% | 3,980 / 4,000 = 99.5% | 11,120 / 4,000 = 278% |
| Cost per credited job | $4,000 / 5 = $800 | $4,000 / 19 = $210.53 | $4,000 / 36 = $111.11 |
Source: Hypothetical example
View the data as a table
| Item | Value |
|---|---|
| GA4 only | 5 |
| Floor | 19 |
| Ceiling | 36 |
The spread is the finding. The same month supports “SEO lost money,” “SEO returned about 2 times its cost in gross profit” and “SEO returned about 3.8 times,” depending on which data you trust. A report showing only one of them is choosing a story.
Is there a quicker test?
There’s a quicker test too. Break-even is cost divided by gross profit per job: $4,000 / $420 = 9.5, so about 10 jobs.
GA4 alone credits 5, half of break-even. The floor credits 19, roughly twice break-even. That framing is easier to take to an owner than a percentage.
To rerun this, swap in your own jobs and margin. Use our SEO ROI calculator for the return side and the SEO cost calculator to check the cost side. Our post on the five numbers behind SEO ROI explains each input.
How should you read a range instead of a single number?
Make the decision with the floor and investigate the gap. The gap is information, because each type of disagreement points to a different problem. These rules are our view, not an industry standard.
Our view Judge the channel on the floor, and investigate the gap. If only the ceiling pays back, you do not have an answer yet.
If the floor already pays back the cost, as in the model, the decision is easy and the ceiling is a bonus.
What does each gap point to?
| Gap in the model | What it likely means |
|---|---|
| 9 jobs where tracking says organic and the customer says otherwise | Often people who searched your name after a referral. That’s branded demand. It may still be partly SEO’s doing, but it’s a different claim, so report it separately. |
| 8 jobs where the customer says Google and tracking says direct | Likely a Business Profile call that no tracked number covered, or someone who saved your site and typed it in later. Each cause has a different fix. |
| 36 of 60 jobs with no tracked web session | If more than half your jobs have no tracked web session, fix tracking before you argue about SEO. Any channel report would be mostly guesswork. |
Judge agency reporting the same way. Our post on when an SEO agency should show you calls lists what to expect and when.
How do payback and cost per lead change once attribution is honest?
They get wider and more believable. Run the floor and ceiling through our SEO payback period post and our cost per lead post, and report both ends.
Close rate and job value come from your CRM. Our post on lead value math for home services shows how to get a gross profit per job that survives scrutiny.
Keep paid channels in their own columns. Local Services Ads count a lead by Google’s rules. Its help page says you pay for valid leads.
Watch out A missed call during business hours is charged if the caller stays on the line for more than 20 seconds. Reconcile those counts with your own call log.
Which mistakes distort SEO attribution most?
Most of these make organic look better or worse than it is, and nobody notices.
- Crediting SEO for branded searches. Someone who typed your name was coming anyway.
- Reading “Direct” as loyalty. Google defines it as source “(direct)” with a medium of “(not set)” or “(none)”, a catch-all for visits with no recorded source.
- Mixed-case UTM values.
Googleandgoogleare different values in GA4, so one channel splits into two rows. - Counting a tap as a call. A call-button click isn’t a connected call. Count answered calls above your minimum length.
- Letting the CRM source default to “Website.” If the field has a default, nobody changes it, and every unknown becomes a web lead.
- Ignoring AI search: Google says Organic Search includes AI Overviews and AI Mode. GA4 now has a separate “AI Assistant” channel for ChatGPT, Gemini, Copilot and Grok. Unrecognized referrers can still land in Referral or Direct, so see AI referral traffic in GA4.
- Judging one month. Seasonal work moves too much. Compare quarters, or the same month a year earlier.
What does the data not show?
- It doesn’t show an industry-average share of jobs that come from SEO. We looked for a source that discloses its method for service businesses and didn’t find one we’d quote, so there’s no benchmark in this post.
- The worked model is invented. Real accounts will have different overlap, margins and messier edges, so don’t read its 19-to-36 spread as typical.
- Our own evidence has limits as well. Our case studies report Google Search Console clicks and impressions, measured on SaaS, B2B and solar sites. They don’t include leads, booked jobs or revenue, so we can’t show you a measured organic-to-job conversion, and we won’t suggest one.
- Every method here carries bias. Call tracking misses calls to numbers it doesn’t own, customers misremember, and busy people fill in CRM fields badly. The point of blending them is that the errors differ.
What should you do this week?
Pull last month’s booked jobs into one sheet and add three columns: GA4 channel, call-tracking source, and what the customer said. Fill what you can, count the overlaps, and write down the floor and ceiling.
Quick check A job joins the floor only when the tracked source and the customer’s own words both point to organic or the map pack. If the notes are blank, mark the job unknown instead of guessing.
Let unknown jobs sit outside both numbers until someone calls the customer back.
Then fix the biggest hole: call tracking if most jobs have no tracked source, a mandatory CRM source field if it’s blank. Re-run the sheet next month with the method unchanged, so the trend means something.
If you’re weighing what a result like this should cost, our pricing overview shows how we scope SEO work. For broader reporting setup, see our guide to measuring SEO.
Frequently asked questions
What is the best SEO attribution model for a service business?
No single model wins, because the bigger gap is the data, not the model. Google Analytics 4 only sees sessions and key events on your site, so phone calls and word-of-mouth jobs fall outside it. Keep GA4’s default model for web leads, then add call tracking and a required source field in your CRM.
How do I track organic leads in GA4?
Mark form submissions and call-button clicks as key events, then read them by session default channel group, where Organic Search is the row to watch. Google’s help page says that group covers sources on its search-site list and a medium exactly equal to organic. Calls with no click on your site won’t appear.
Why does Google Analytics show fewer organic leads than my CRM?
GA4 records a lead only when a tagged event fires in a browser session. A caller who dials from a Google Business Profile, a truck or a friend’s text never triggers one. Your CRM logs the job whatever the path, so the two numbers measure different things and rarely match.
Should I count branded searches as SEO leads?
Not as leads SEO created, since someone who typed your company name already knew you. Report branded searches in a separate row, since branded demand can still come from SEO, reviews or other marketing. The conservative version of your numbers leaves them out.
Is “how did you hear about us” still worth asking?
Yes, as a second opinion rather than a replacement. Customers often name the last thing they remember, and they may say a friend when a Google search came first. Compare the answer with your tracked source: where the two agree you have strong evidence, and where they differ you have something to investigate.
Rerun the return math with your own floor and ceiling job counts in the free ROI calculator for SEO, then Get Your Organic Growth Plan.
Sources
- Google Analytics Help, Advertising and attribution, accessed 22 Oct 2026.
- Search Engine Land, Google confirms sunset details for 4 attribution models in Ads and Analytics, accessed 22 Oct 2026.
- Google Analytics Help, Default channel group, accessed 22 Oct 2026.
- Google Analytics Help, About key events, accessed 22 Oct 2026.
- Google Analytics Help, URL builders: collect campaign data with custom URLs, accessed 22 Oct 2026.
- Google Search Console Help, Performance report and What are impressions, position, and clicks?, accessed 22 Oct 2026.
- Google Business Profile Help, Understand your Business Profile performance and insights, accessed 22 Oct 2026.
- Google Ads Help, About phone call conversion tracking, accessed 22 Oct 2026.
- Google Local Services Ads Help, Lead charging rules, accessed 22 Oct 2026.
Want to apply this to your site?
Not sure where to start? Get a plan for your own business.
