The ad account knows clicks, the front desk knows calls, the till knows payments. End-to-end attribution links them into one chain and shows how much revenue each ad channel brought in. Here is how it works and how to set it up at a clinic.

End-to-end attribution is a tracking setup in which every paying patient is linked to the ad source they came from. "End-to-end" means the data runs through every stage: from the ad impression to payment and repeat visits.
Standard web analytics stops at the lead: Google Analytics sees that someone submitted a form. The ad account sees that there was a click. But neither knows whether the patient showed up for the appointment or how much they paid. That data lives in the CRM or at the till.
End-to-end attribution joins these pieces on a shared key: the source tag captured on the first website visit, and the patient's phone number.
Without end-to-end attribution, ad decisions rely on intermediate metrics — clicks and leads — that are only loosely tied to money.
| Without end-to-end attribution | With end-to-end attribution |
|---|---|
| Budget is split by lead count | Budget is split by revenue and cost per patient |
| "Quizzes bring lots of leads — let's scale them" | You can see quizzes bring cheap leads but expensive patients |
| Calls have no source | Each call is linked to the ad the person came from |
| A report is built by hand once a month | The report updates as leads and payments come in |
| The agency reports clicks | The agency reports patients and revenue |
The main value is being able to cut a channel that looks good but doesn't make money, and scale a channel that looks expensive but pays off. How to calculate these numbers is covered in the guide to patient acquisition cost.
End-to-end attribution is a chain of six links. If one breaks, the numbers at the end are incomplete.
The most common breaks happen at steps 2 and 4. Tags get lost if the person leaves the site and comes back directly a week later. Calls lose their source if the telephony isn't connected to the CRM.
An attribution model is the rule for assigning a patient's revenue to a source when there were several touchpoints.
Example: someone clicked a Meta ad, left, found the clinic in Google search five days later and called.
| Model | Who gets credit | When it fits |
|---|---|---|
| First touch | Meta | Seeing which channels bring in new people |
| Last touch | Google, organic | Seeing which channel closes the decision |
| Linear | Split equally between Meta and Google | Long journeys with many touchpoints |
| Self-reported | Based on the patient's answer to "how did you hear about us" | As an extra check |
For most clinics, first touch is a sensible starting point: it answers "which ad brought in a new patient." If the decision takes a long time (rehab, care homes, expensive treatment courses), it also helps to ask patients "how did you hear about us?" and compare their answers with the system's data.
End-to-end attribution exists to produce a handful of key metrics for each channel.
| Metric | Formula | Question it answers |
|---|---|---|
| CPL | Spend / leads | What an inquiry costs |
| Lead-to-patient rate | Paying patients / leads | How good the leads are |
| CAC | Spend / paying patients | What a patient costs |
| Channel revenue | Sum of payments from the channel's patients | How much money the channel brought in |
| ROMI | (Revenue − spend) / spend × 100% | Whether the channel pays off |
| LTV by channel | Revenue per patient over the whole relationship | Which channels bring loyal patients |
A hypothetical quarterly example (amounts in Ukrainian hryvnia, UAH):
| Channel | Spend, UAH | Leads | Patients | CAC, UAH | Revenue, UAH | ROMI |
|---|---|---|---|---|---|---|
| Google Ads, search | 150,000 | 600 | 96 | 1,563 | 672,000 | 348% |
| Meta, quizzes | 120,000 | 1,200 | 60 | 2,000 | 420,000 | 250% |
| Meta, lead forms | 60,000 | 500 | 20 | 3,000 | 140,000 | 133% |
| Total | 330,000 | 2,300 | 176 | 1,875 | 1,232,000 | 273% |
The average ticket in this example is UAH 7,000. Meta quizzes and lead forms lead on lead volume, but Google search wins on revenue and ROMI. Lead forms have the weakest return, and if you calculate ROMI on profit rather than revenue, they may not pay off at all: optimize or cut them. Without linking leads to payments, you couldn't reach this conclusion.
In 95sales CRM, source attribution works like this: the 95sales tracking code is added to the site with one line or through Google Tag Manager, remembers which ad brought the visitor (UTM tags, a Google Ads or Meta click) even if they submit the form later, and captures submissions from Contact Form 7, Elementor, WPForms and other forms. Leads from Tilda, WordPress, adsquiz and Marquiz quizzes, Google Ads lead forms and Meta (via Zapier or Make) arrive by webhook, and duplicates are detected by phone number. The Sources section turns raw tags into readable channel names.
For clinics, calls are the weakest link in end-to-end attribution because a phone call has no UTM tag. There are three ways to tie a call to a source.
In 95sales CRM, calls from Binotel and Ringostat (Ukrainian telephony providers; other systems connect through a generic webhook) are matched to leads by phone number — so a call from a patient who earlier submitted a lead inherits that lead's source. More in the guide on missed calls and on the telephony integration page.
One more practical detail is repeat inquiries. If a patient from your old, archived database calls again, you want to avoid creating a duplicate with an empty source and instead bring back their existing record. In 95sales CRM, a call or lead from a number in the archive automatically returns that record to the active pipeline.
End-to-end attribution is never 100% accurate, and that's fine. What matters is knowing where the gaps are.
End-to-end attribution is only useful if you make decisions with it. Weekly or monthly, look at a few questions.
In the 95sales CRM analytics section, conversion and revenue by source, average ticket and LTV can be filtered by brand, website and manager — so you can answer these questions without exporting to Excel. Clinic groups and clinics running several websites should look at channels separately for each brand — see clinic chains.
You pay nothing and owe nothing.
We discuss a subscription only if you want one after the demo. The price is known before you start.
FAQ
It connects advertising to money: the system shows how many patients and how much revenue each ad channel brought in, not just how many clicks and leads it generated.
UTM tags on ads, a website script that stores the source, a CRM that receives leads and calls with their source, and payments recorded on the patient's record.
Match each call to a record by phone number, use separate numbers for different channels, or record the patient's answer to "how did you hear about us." Combining methods works best.
Start with first touch: it shows which ads bring in new patients. When decisions take a long time, also ask patients where they heard about you.
You can merge ad, call and payment spreadsheets by hand, but it's slow and error-prone. A CRM captures the source when the lead comes in and links it to the payment automatically.
We store a traffic source marker in your browser so we can tell which ad or link brought an enquiry. Nothing is stored without your consent. Learn more