Veltos.Tech

Consulting

End-to-End Analytics: Connecting Your Website, Ads and CRM

Standard analytics shows clicks and leads, not money. A step by step guide to connecting your website, ad accounts and CRM into one system that reports real cost per customer, by channel.

In short

End-to-end analytics links your website, ads and CRM through the Client ID: UTM tags record the source, ad spend flows into Metrica, the Client ID travels to the CRM when a lead is created, and once a deal closes, the outcome, paid, cancelled, the amount, flows back. What comes out the other end is the real cost of a customer by channel, not the cost of a click or a lead.

The problem standard analytics cannot solve

Picture two ad channels with the same lead cost, say 800 RUB per lead on both. The ad account dashboard makes them look equally effective, and the obvious move is to split budget evenly between them, or even scale up whichever produces more leads for the same spend. But if channel A converts 25 percent of its leads into paid deals and channel B converts 8 percent, the real cost per sale differs threefold: 3,200 RUB for channel A against 10,000 RUB for channel B. Standard analytics never sees that gap, because it stops at the lead.

This is not a hypothetical edge case, it is the typical picture for B2B and for any business with a longer sales cycle: different channels bring in people at different stages of readiness to buy, and a lead is not yet money. End-to-end analytics closes exactly this gap, carrying the data chain from the click all the way to actual payment instead of cutting it off at the moment someone fills in a form.

How it works technically: five steps

Technically, end-to-end analytics is not one magic integration, it is a chain of five sequential links. A break at any one of them stops the whole chain, which is why it matters to understand what happens at each step rather than treating it as "connecting some analytics" in the abstract.

StepWhat happens
1. UTM tagsEvery ad link gets a tag with source, campaign and ad name. Without it the chain never starts, there is nothing to attach the later data to.
2. Ad spend in MetricaYandex Direct pushes spend automatically once accounts are linked. VK Ads and Telegram Ads need manual report imports or an API connector, no ready-made bridge exists for them.
3. Client ID to CRMWhen a form is submitted, the visitor Client ID from Metrica is passed to the CRM along with the deal, typically through a hidden form field or a JS snippet on the site.
4. Deal outcome back to MetricaOnce a deal closes, the outcome (paid, cancelled, the amount) flows back through the CRM native integration, the offline conversions API, or Direct Conversion Center.
5. The reportMetrica matches spend, the lead and the deal outcome by Client ID and produces a report on the real cost per sale by channel, not per click or per lead.
The end-to-end analytics chain

What is already built into amoCRM and Bitrix24, and what needs custom work

AmoCRM connects to Yandex.Metrica through a ready-made widget and can pass the Client ID on deal creation and send the deal status back with almost no custom code, setup takes hours rather than weeks, assuming both services already run standard configurations. Additional channels such as VK Ads or Telegram Ads have no ready bridge into this pair and need either manual spend import or a separate API connection.

Some Bitrix24 plans include a built-in "end-to-end analytics" report that matches ad spend against deal data on its own, provided the channels are connected through integrations inside the portal. This is convenient when the entire advertising mix fits the sources Bitrix24 natively supports, but the moment a channel appears that Bitrix24 has no ready integration for, the connection still has to be assembled by hand, the same way it would with amoCRM.

The general rule: the more standard the channel (Yandex Direct, organic and display search traffic), the less custom work is required. The less standard the channel, or the more bespoke the CRM (something other than amoCRM or Bitrix24), the more the whole setup turns into a developer task rather than a few clicks in an admin panel.

Common mistakes that break the data

The first and most common mistake is tagging some channels and not others: Yandex Direct gets UTM tags, a newsletter, a social post or an offline banner with a QR code does not. As a result, real sales quietly drop into the "direct" or "source unknown" bucket, making untagged channels look worthless simply because nobody tagged them.

The second is the Client ID failing to reach the CRM correctly: the form is built in a page builder or widget that does not expose hidden fields, or the visitor switched devices or cleared cookies between the first visit and submitting the form. In either case the Client ID either never gets passed at all or gets passed but belongs to a different session, breaking the chain at its single most important step.

The third is deals closing outside the window anyone actually checks: in a long B2B cycle a lead might arrive in March and close in June, and if nobody reconciles old Client IDs against new outcomes, those sales simply drop out of the report even though the underlying data never went anywhere. The fourth is sampling in reports: at high traffic volumes, aggregated reports in analytics tools are sometimes built from a sample, and cross-checking against exact CRM figures then shows a small but noticeable gap, normal for sampled data, alarming if the cause is not understood. The fifth is deals entered into the CRM manually from a phone call or offline, with no Client ID at all, without a deliberate "how did you hear about us" fallback process for those, the "source unknown" bucket quietly grows and distorts the picture across every channel at once.

How to confirm the setup actually works

After setup it is worth running one manual end-to-end test rather than trusting that the connection works on faith. Open the site through a tagged UTM link, submit a test lead, and confirm the Client ID shows up on the deal card in the CRM. Then manually move the test deal to a paid status with an arbitrary amount, and a day or two later check whether that outcome appears in the Metrica report against the right channel. If data fails to show up at either step, the break is right there, and only that specific link needs checking from then on, not the whole chain from scratch.

From there it is worth building a habit of a monthly reconciliation: the total value of paid deals in the CRM for a period and the total the end-to-end report shows for the same period do not need to match to the last ruble, a small gap from manual deals or sampling is normal, but a gap of tens of percent means a leak has appeared somewhere in the chain. A separate quick health indicator is the share of deals with an unidentified source: stable is fine, growing month over month is a signal to check whatever recently changed on the site or in the lead form.

What you get once it works: a worked example

Before end-to-end analytics is set up, the ad report shows clicks, impressions and the price per lead. After it is set up, it shows money. The example below is illustrative, but structurally typical of what shows up in almost every first report after the connection goes live.

Say Yandex Direct produces 40 leads at 750 RUB each, and 12 of them turn into paid deals, a real cost per customer of 2,500 RUB. VK Ads over the same period produces 55 leads at 600 RUB each, cheaper at first glance, but only 6 turn into paid deals, a real cost per customer of 5,500 RUB, more than double, despite looking like the better deal on lead price alone. Without end-to-end analytics, the decision on where to increase budget would favour VK Ads. With it, the decision favours Yandex Direct, and that decision is worth exactly the gap in real acquisition cost.

Frequently asked questions

How long does setting up end-to-end analytics take?

If the CRM is amoCRM or Bitrix24 and the ad mix is just Yandex Direct, a basic connection takes 1 to 2 weeks: widget setup, verifying the Client ID actually passes through, and test deals. Adding VK Ads, Telegram Ads or a non-standard CRM pushes that to 2 to 4 weeks, since channels without a ready integration need manual or API-based work.

Does this work for offline sales, calls or showroom visits?

Partially. If the call goes through IP telephony with call tracking, linking it to a Client ID and a channel is entirely realistic. A showroom visit with no digital trail has no Client ID by definition, so those deals need a manual process instead: the salesperson asks and records how the customer heard about the business, and that field then feeds into the report as a separate, less precise category rather than an automatically tracked channel.

Does a small business with a modest ad budget need this?

It depends on the number of channels and how long the sales cycle runs. If ad budget goes into a single channel and deals close quickly, the gap between lead cost and customer cost is usually small, and a complex setup may not pay for itself. If two or more paid channels run at once and the cycle is not instant, even a modest budget benefits from knowing precisely which channel brings in money and which one only brings in leads.

What if the numbers in the CRM and in Metrica do not match?

First check the usual suspects in order: missing UTM tags on some channels, deals entered manually with no Client ID, sampling in aggregated reports at high traffic volumes, and deals closing outside the period being checked. In the overwhelming majority of cases the gap traces back to one of these four causes rather than a broken integration itself.

Can this be set up without a CRM, just on the site and in ads?

Partially: ad spend can be linked to on-site goals and micro-conversions (a form submitted, a call made) without a CRM at all. But real end-to-end analytics ends at the fact of payment, not the fact of a lead, and payment data lives almost exclusively in a CRM or an accounting system. Without one, the report stops at cost per lead, the exact limitation this whole article started with.

Need a hand with this?

We do this work, not just write about it. Describe the task and we will scope it and send a staged estimate.

Related services

Read next