Analytics

End-to-end analytics

End-to-end analytics links ad spend to visits, leads, calls, CRM deals and revenue, so channels are judged by money earned.

In short

End-to-end analytics (Russian: сквозная аналитика) is a measurement setup that links each ad rouble or dollar to the visits it bought, the leads and calls those visits produced, the CRM deals that followed and the revenue they brought. It lets a team compare channels by cost per paying customer, not by cost per click or per lead.

Origin
Runet marketing practice, no single inventor (Yandex Metrica and Russian analytics vendors use the term), No documented origin year
Level
201 · Tool
Fits
Startup, Small and mid-size, Scale-up
Time to apply
1 to 2 weeks for a first working chain on one channel
What you need
a CRM where every lead and deal is recorded, with a status and an amount · an analytics tag on the site and tagged ad links · a call tracker if phone calls bring in customers · one person who owns the data and can ask developers for changes

End-to-end analytics is a measurement setup that connects advertising spend to site visits, to leads and phone calls, to deals in a CRM and finally to revenue. The name is a translation of the Russian “сквозная аналитика”, a common term in Runet marketing. Yandex Metrica has a menu section called End-to-end analytics, and Russian vendors such as Roistat sell it as a product. Outside that market the same idea goes by closed-loop reporting or lead-to-revenue attribution.

Why stop counting leads

A lead is not a sale. Two channels can bring equal leads at an equal price while only one brings paying customers. Roistat describes the goal as showing which channels generate profit and which only produce costs.

Five boxes joined by arrows from left to right: Ad spend, Visits, Leads and calls, CRM deals, Revenue, with a blue bracket labelled Visitor ID under the last four.
The chain runs from spend to revenue; one visitor ID has to survive from the visit onward.

Take the dental clinic from the examples: 1,000 per lead on both channels looks fine, but the CRM shows 10,000 per paid patient on one and 4,000 on the other.

Horizontal bars on one scale: both channels cost 1,000 per lead, but Channel A costs 10,000 per paid patient and Channel B 4,000.
Illustrative numbers: equal cost per lead, a 2.5 times gap in cost per paid patient.

How the pieces join

Each link uses a different key, and most failures come from a missing key. Four joins matter.

Spend to visits runs on tags. Google’s help for campaign URLs says to always use utm_source, utm_medium and utm_campaign, and warns that values are case sensitive. GA4 cost import matches rows on utm_source, utm_medium and the date, then shows non-Google cost per click and return on ad spend under Reports, Acquisition, Non Google campaign. Yandex Metrica pulls Yandex Direct costs automatically, connects Google Ads, Facebook Ads, myTarget and VK Ads through integrations, and takes a CSV for other systems. Its Sources, costs, and ROI report sits under End-to-end analytics.

Visits to leads runs on a visitor ID. Yandex Metrica’s ClientID is the value of the _ym_uid cookie, and its help calls it the most precise way to match offline data. GA4 uses client_id for the same purpose. Google Ads uses a click ID (GCLID), plus hashed email under enhanced conversions for leads, and Yandex Direct uses a yclid. Meta’s Conversions API takes offline events the same way. The site must store the ID in a hidden form field and pass it to the CRM. The event tracking plan is where that field and its name get defined.

Calls to visits needs a call tracker. Metrica’s help describes two modes. With dynamic tracking the service shows each session its own number, and Metrica links the call to the nearest session by time. Static numbers are not linked to sessions at all. A call-tracking vendor such as smrtPhone describes the same mechanism: JavaScript swaps the displayed number according to the visitor’s source. Yandex Direct’s help adds a warning: calls to static numbers can be up to 80% of all calls, and only a CRM upload can attribute them.

Deals to visits runs on the CRM. Metrica accepts CRM orders with an order ID, customer ID, status, revenue and cost, lets you edit them for 111 days, and matches them through ClientID, phone or email (hashed with MD5 if you prefer). Bitrix24 has a ready integration that links the first 21 days of orders on its first run and then refreshes hourly, feeding the Order sources from CRM report, and Roistat maps deal statuses to four groups (Not included, In work, Paid, Cancelled) and stores its own visit number in a cookie called roistat_visit and writes it into a CRM field. For GA4, the Measurement Protocol sends server-side or offline events, but Google states it is meant to augment tag collection from gtag or Tag Manager, not replace it.

Bitrix24 leads reach Metrica as orders only if the Upload leads option is on, and Roistat’s proxy-lead route holds a lead for 2 days if the CRM is down.

Yandex Direct’s help ranks the quality of the match: ClientID plus phone or email is the best, ClientID alone is good, and phone or email alone gives about half the attribution.

Where the chain breaks

The chain is only as long as its shortest window. Yandex Metrica adds offline conversions, uploaded as CSV or through its API with a JavaScript-event goal and a Unix timestamp, only when 21 days or less have passed since the visitor’s last session. GA4 requires an offline event for ad export within 63 days of the latest online event, and a custom timestamp within the last 72 hours. A treatment that closes in two months will fall out of the first window unless the visitor returned.

Calls follow the same 21-day rule: Metrica does not link a call whose session ended after the call or more than 21 days before the data was sent. Upload mechanics add their own delay. Yandex Metrica shows call data within 3 hours of upload, Google Ads asks you to allow 24 to 48 hours for imported conversions, and GA4 attaches an offline event to a session only if it carries a session_id and arrives within 24 hours of that session’s start. Yandex Direct’s Conversion center takes CRM files over FTP, SFTP, an HTTP link or Google Sheets, so a daily export is easy to automate. Roistat’s duplicate check covers the last 12 hours, which matters when a manager re-creates a deal.

Metrica’s own attribution rule also shapes the report, and its automatic attribution option is calculated from April 8, 2023. Its Last click, Last non-direct click and First click models read session history with a 90-day break, and its help page schedules the legacy First click and two Yandex Direct models for removal on May 20, 2026.

Browsers cut the visitor ID itself. Safari’s Intelligent Tracking Prevention, built on WebKit, deletes script-written storage after 7 days without a visit and caps cookies at 24 hours when the landing URL carries a click ID. A patient who clicks an ad, thinks it over for ten days and then books may arrive as a new, unattributed visitor.

Lag also bends recent numbers. Google Ads says conversions can be reported up to 90 days after the click, advises ending report ranges at least 30 days ago, and offers a Days to conversion segment to measure your own lag. In a long-cycle business the last month will always look worse than it is.

Privacy is the last limit. Google’s Analytics policy forbids sending data it could recognize as personally identifiable, such as emails or phone numbers. For a clinic, a diagnosis in a custom field is worse. Send amounts and statuses, and check local health-data law with a lawyer.

What it does not prove

End-to-end analytics counts what happened. It cannot say what would have happened without the ad. In a study of 15 Facebook experiments, Brett Gordon, Florian Zettelmeyer and co-authors found observational methods often failed to match randomized results, even with extensive data. A follow-up by Gordon, Robert Moakler and Zettelmeyer on 663 experiments found the same with machine-learning methods: for lower-funnel outcomes the experiments’ median lift was 5%, while double/debiased machine learning estimated 24% and propensity matching 64%. Ron Berman of Wharton showed in Marketing Science in 2018 that last-touch credit can overpay ad exposures and cut advertiser profit, and that the Shapley value method does better. Which touch gets credit is a separate question, covered by attribution models. To test whether a channel adds sales, run incrementality testing next to the report. The numbers also feed ROAS and DRR, and sit inside the wider unified measurement approach.

If visitor IDs live in several tools, a customer data platform can hold them in one profile, and customer journey analytics extends the joined data to whole paths. A Growth Lab plan starts from the CRM statuses and the budget decision the report must support.

How to apply End-to-end analytics, step by step

  1. Agree what counts as a lead and a sale. Write down the CRM statuses for qualified, booked, paid and cancelled, and who changes them. Result: a short status list the sales team accepts.
  2. Tag every ad link. Add utm_source, utm_medium and utm_campaign in lowercase to every paid link and to cost files. Result: one naming sheet that ads and analytics follow.
  3. Capture the visitor ID with every lead. Save the analytics client ID, and the ad click ID where the ad system provides one, in a hidden field of every form and pass it to the CRM. Result: each new lead record carries the ID of the visit that produced it.
  4. Track calls. Install a call tracker that swaps the number for each session and sends calls to your analytics tool. Result: calls from the site arrive with a source.
  5. Send deal results back. Upload paid orders and amounts from the CRM to the analytics tool, within its upload window. Result: reports that show revenue by campaign.
  6. Reconcile once a month. Compare the CRM total with report revenue and count deals with no source. Result: a known share of unattributed revenue.

Examples

A dental clinic, two channels

Illustrative. A clinic spends 100,000 on each of two channels and gets 100 leads from each, so cost per lead is 1,000 for both. The joined CRM data shows 10 paid patients from channel A and 25 from channel B, so cost per paid patient is 10,000 and 4,000. A report that stopped at leads would call them equal.

A fintech onboarding funnel

Illustrative. A payments company buys search ads and partner banners. Sign-ups are cheap on banners, but the CRM marks most as rejected at verification. Joining status to source shows banner traffic costs far more per approved account, so the team moves budget to search.

When to use it

Use it when you pay for traffic and the sale closes later in a CRM, by phone or in person, as in clinics, B2B services, education or financial products. It pays off once you run more than one channel.

When not to use it

Skip it for an online shop whose checkout already reports revenue to the ad platform, or when a handful of monthly leads lets sales name every source. It counts what happened, so it cannot alone prove a channel caused sales.

Common mistakes

  • Buying a service before cleaning the CRM. Empty statuses and duplicate deals flow straight into the report.
  • Tagging links with mixed spellings. Imported cost rows match only on exact utm values, so Facebook and facebook become two campaigns.
  • Reading recent weeks as final. Deals close weeks after the click.
  • Sending names, phone numbers or diagnoses to an analytics tool in plain form. Google's Analytics policy forbids passing personally identifiable information.
  • Treating attributed revenue as proof of cause. Observational attribution can disagree sharply with experiments.

FAQ

What is end-to-end analytics?

A setup that follows a customer from the paid ad through the visit, the lead or call and the CRM deal to booked revenue, giving cost and profit per channel or campaign. Western teams call it closed-loop or lead-to-revenue reporting.

How is end-to-end analytics different from web analytics?

Web analytics stops at the site: sessions, goals, online orders. End-to-end analytics adds what the site cannot see: phone calls, CRM statuses and later offline payments. Yandex Metrica and Google Analytics 4 accept that data by import or API.

Which tools do you need?

A web analytics tag, a CRM, a call tracker if calls matter, and a way to load costs. Some teams use Yandex Metrica or GA4; others buy a service such as Roistat. Keeping one visitor ID from first visit to paid deal matters more than the brand.

Why do the numbers never match the ad platform?

Each system uses its own attribution rule and window. Yandex Metrica notes its figures can differ from Yandex Direct, Yandex Market, Google Ads and Facebook Ads. Treat the CRM as the source of truth for revenue and compare against it.

How long can a CRM sale still be linked to a visit?

Yandex Metrica adds offline data only if 21 days or less passed between the last session and the upload. GA4 accepts events for ad export up to 63 days after the last online event. Upload paid deals soon after they close.

Sources

  1. Yandex Metrica Help, Importing offline data
  2. Yandex Metrica Help, How to track calls in Yandex Metrica
  3. Yandex Direct Help, Offline conversions
  4. Yandex Direct Help, Call and request conversions
  5. Yandex Metrica Help, Connecting to Bitrix24 to upload data from a CRM
  6. Yandex Metrica Help, Sources, costs, and ROI report
  7. Yandex Metrica Help, Attribution model
  8. Google, Measurement Protocol overview for GA4
  9. Google, Measurement Protocol use cases for GA4
  10. Google Analytics Help, Import cost data
  11. Google Analytics Help, Collect campaign data with custom URLs
  12. Google Analytics Help, Best practices to avoid sending personally identifiable information
  13. Google Ads Help, Upgrading offline conversion imports
  14. Google Ads Help, About offline conversion imports
  15. Google Ads Help, Find out how long it takes for your customers to convert
  16. Meta for Developers, Conversions API
  17. Roistat (vendor), Setting up end-to-end analytics
  18. Roistat (vendor), End-to-end analytics
  19. smrtPhone (call tracking vendor), Dynamic number insertion overview
  20. WebKit, Tracking Prevention in WebKit
  21. Ron Berman, Beyond the Last Touch: Attribution in Online Advertising, Marketing Science 37(5), 2018
  22. Brett R. Gordon, Florian Zettelmeyer, Neha Bhargava, Dan Chapsky, A Comparison of Approaches to Advertising Measurement, Marketing Science 38(2), 2019
  23. Brett R. Gordon, Robert Moakler, Florian Zettelmeyer, Close Enough? Non-Experimental Approaches to Advertising Measurement, arXiv

Last updated Oct 9, 2026

Ilia PushinFounder, PUSHERS & COO Fintech ServiceIlia builds operating systems for growing companies in fintech and healthcare. Since 2021 he has run cross-border payments at ARBI Exchange, a licensed currency exchange in Thailand, including KYC and AML and the move into new jurisdictions.About the authorLinkedIn
Related frameworks
More frameworks
Want End-to-end analytics running inside your company?Request an operations audit