Skip to content
All insights

Attribution for a business where half the customers call

Every attribution model is wrong for a local service business. Here is a way of measuring that survives the phone.

Abraham Viteri

Founder, Viterium · UC Berkeley, Data Science & Economics

3 min read

Attribution advice assumes an e-commerce checkout. A local business has a phone, a walk-in door, a receptionist and a referral network, and no attribution model handles any of them well.

Why the platforms disagree with each other

Meta reports conversions it can attribute within its window, using its own matching. Google reports what it can see. Your booking system records what the patient said when asked. All three describe the same month and none of the numbers match.

They are not lying. They are answering different questions.

Stop trying to reconcile the platforms to each other. Reconcile all of them against your own bank.

The measurement that actually holds

Total new customers this month, from your own records. Not the ad platform's. Yours.

Total marketing spend this month. Everything — ad spend, agency fee, tools.

Divide. That is your blended cost per acquisition, and it is the only number nobody can massage.

It will be worse than the number in Meta's dashboard. It is the true one.

Track it monthly against a trend. If blended CAC is falling while volume holds, the marketing is working regardless of which channel takes credit.

Then improve the signal where you can

Ask, and record it. "How did you hear about us?" as a required field, asked by a person rather than a form. Imperfect — people say "Google" when they mean an Instagram ad they saw last week — but directionally useful in volume.

Send booking conversions server-side. Not form submissions. The Conversions API lets you tell Meta when someone actually booked, which is both a better optimization signal and a more honest number.

Use a distinct number where it does not break your NAP. Call tracking is useful and it can damage local SEO if the swapped number ends up in your markup or your citations. Configure it so the canonical number stays put.

Run holdout tests occasionally. Turn a channel off for two weeks and watch total bookings. Crude, unpopular, and the closest thing to real causality available at local volumes.

What to stop doing

Stop optimizing to platform-reported ROAS. It is measuring itself.

Stop cutting a channel on its own reported numbers alone. Turn it off and watch total bookings instead. We have seen channels that looked unprofitable in-platform whose removal cut total volume by more than they cost.

Stop expecting the numbers to reconcile. They will not, and the hours spent trying are the least productive in marketing.


If you do not currently track blended cost per acquisition monthly, that is one spreadsheet and it will change what you think about every channel you run.

Rather skip the reading?

Let's just look at your numbers.

Thirty minutes. We'll tell you what we'd change and whether it's worth doing.

No contract to sign on the call. No obligation afterwards.