Skip to content
Advertising18 minJuly 20, 2026

How to count Telegram leads: attribution when clients skip the form

Robert MirovUpdated Sep 5, 2026

How to count Telegram leads: attribution when clients skip the form

In Tashkent and across Uzbekistan, after an ad click people often do not submit a website form. They open Telegram and ask “how much?”, “any slot tomorrow?”, or send a voice note. In Google Analytics that can look like a bounce. In Google Ads — like “no conversion.” For the manager — like a normal work chat that later becomes a booking or a payment. Without a carried source, the business owner is left with an awkward question: which campaigns actually bring chats, bookings, and money — and which only bring clicks and spend. The Ads report and the messenger reality live in different worlds. Below is a calm order without a “magic button”: what breaks in the familiar funnel, how to pass the source through a deep link with UTM (traffic source tags), which CRM fields to lock, which attribution maturity level to pick, what GCLID (Google Ads click ID) and offline conversions are for, why last click often lies, and what to check in two weeks. Tag basics — UTM: how to set up and why. Brand UZNEO writes this the same way it runs ads: honestly, step by step, without promising perfect attribution on day one.

01Why “website form” is not the only conversion

Many case studies and textbooks assume: click → form → thank-you page → conversion tag. The dashboard looks clean: the event is visible, the algorithm learns, the report adds up. In Uzbekistan clients live in messengers — and a path through Telegram is normal for many niches, not a “broken” funnel. Typical local-business path: • Google Ads or Instagram click → landing or site • tap “Write on Telegram,” a username button, or a QR • chat in DM or bot: price, district, timing, photos • booking, visit, deposit, or payment off the website If you only count form submits, Ads under-credits the channel. You may cut a campaign that actually brings chats and deals, and keep one where people politely fill a form but never answer the phone.
BeforeAfter
Conversion = website form onlyConversion = chat / booking / payment, even via Telegram
Exit to messenger = “drop-off”Exit to messenger = normal next step
Watch only the Ads numberReconcile Ads with CRM and manager statuses
Cut campaigns with no Analytics conversionFirst check whether the source reached the deal card
Channel wiring — Telegram bot and Google Ads. Full funnel — site + Ads + bot + CRM.

02Where the trail breaks: site, messenger, CRM

Attribution (tying a result to a source) fails not because “Telegram is bad,” but because the customer path crosses three different systems. 1. Browser and counters. UTM and cookies live on the site. Analytics and the Ads tag see the click, the pageview, sometimes the button click. Once the person opens the Telegram app, the site tag no longer hears the conversation. 2. Telegram. DMs and bots are a separate world. Without a link parameter, the bot does not know whether the person came from Google, Instagram, Stories, or “just found the username.” 3. CRM and the manager. Deals often start in chat. If the card is created by hand “from memory” (“client from ads, I think”), a week later the source cannot be checked. What you need to connect: • the ad click (ideally with GCLID for Search) • the move into the bot or DM with a saved source code • the CRM card with the same code • a status closer to money: qualified lead, booking, payment Until those four points are linked, any pretty slide about “attribution” stays a story without data.

03UTM in bot deep links: a working minimum

A bare `t.me/YourBot` button does not carry the source past the browser. A deep link with a `start` parameter is the simplest way to pull the tag into the chat. Working minimum: • links like `t.me/YourBot?start=google_brand_jul` or an encoded payload with utm_source / utm_campaign • on `/start` the bot reads the parameter and writes it into the CRM card (or at least a log/sheet) • the site Telegram button injects the same payload from the current session UTM — via script or server redirect • different codes in ads and posts when sources differ (Search, Performance Max, Instagram, Stories) Tag dictionary (agree once and do not rewrite every week):
FieldExampleWhy
sourcegoogle / instagram / directchannel
mediumcpc / organic / referraltraffic type
campaignbrand_jul / chilonzor_accampaign or offer
content (optional)ad_v3 / hero_btnad or button
Do not invent dozens of chaotic codes like `test1`, `new`, `promo`. In a month nobody remembers what they meant. One dictionary, short clear values, CRM write on first touch. More on tags — UTM tags. For a Tashkent business bot — Telegram bot for business.

04CRM source fields — discipline without drama

Even a careful deep link fails if the card source is empty or the manager rewrites it “by gut feel” three days later. Lock at least this on the deal card: • channel (Google Ads, Instagram, Direct, referral, Maps) • campaign / ad group or your internal code from `start` • first source (first touch) — a separate field that is not overwritten • lead type: bot / DM / form / call • funnel status: new → in chat → qualified → booking → paid / lost Rule: the system sets source when the card is created. Managers may add a comment (“district clarified: Chilonzor,” “asked for a price list”), but must not change the channel to “I think it was a neighbour.”
BeforeAfter
“Client from ads” in a commentChannel and campaign fields filled by the system
Manager edits source by handFirst touch protected; comment is separate
End of month: “we forget where leads came from”Weekly report: spend ↔ statuses by channel
Offline conversions “someday”Field discipline first — then Ads import
Without CRM logging, offline conversions into Google Ads are almost impossible: you are left with chats unlinked from spend. Even a simple deals sheet beats “everything in the manager’s head.”

05Three attribution levels: a maturity fork

You do not need a perfect model on day one. Pick a level for your lead volume and team readiness. Skipping a step usually yields a pretty diagram and empty fields.
LevelWhat you haveWhat you watchWho it fits
Minimumstart param → CRM fieldsAds spend ↔ chats and bookings by channel10–30 leads/mo, starting
Working+ GCLID in cookie / with bot; “lead / booking” statusesCPL on qualified leads, not button clickssteady Ads + CRM
Matureoffline conversion import into Google Adsoptimize on bookings and paymentsregular import, clear statuses
Fork — what to implement now: • few leads, no CRM → CRM (or a sheet) + one start parameter first • CRM and Ads exist → store GCLID and reconcile statuses weekly • qualification already in CRM → prepare offline conversions A guide, not a mandatory ladder in one sprint. UZNEO more often meets businesses that do well at the working level: reconciling spend with qualified leads already changes budget decisions.

06Google Ads offline conversions: the idea without magic

When booking or payment happens in Telegram, the site tag never hears it. Offline conversion import means you upload to Google Ads an event (lead / booking / payment) tied to the click via GCLID or another agreed ID. In plain words: you tell Google not “the person tapped Telegram,” but “the person from this click later booked / paid.” The algorithm gets a signal closer to money. Practical order for small business in Tashkent: 1. On the landing, store GCLID (cookie, hidden field, or with the bot start parameter). 2. In CRM — an exportable status without debate: e.g. “booking confirmed” or “payment received.” 3. Regular import (sheet or API) only for agreed conversions. 4. In Ads, primary (main learning goal) = closer to money, not the messenger click. Not a one-click button and not perfect multi-touch attribution. Usually better than optimizing only on Telegram-button clicks.
BeforeAfter
Primary = messenger button clickPrimary = booking / payment from CRM
Ads does not know about chat dealsOffline events imported by GCLID
Optimize for “many TG clicks”Optimize for a qualified outcome
Import “like big retail” on day oneStatuses and GCLID first, then import
Goal setup — Google Ads conversions in Uzbekistan. Ads delivery — Ads services.

07Why last click often lies — and what to watch instead

Last click (the final click before conversion) is convenient in reports, but with messengers it often lies. A client may see you on Google Maps, click Ads, leave, then two days later message a saved Telegram username — last click says “direct / organic / unknown.” Keep in mind in Uzbekistan: • messengers break the browser cookie path • multi-touch: Stories → site → bot → manager DM • chats that bypass the bot = Analytics blind spot • people save the username and return without a new ad click Do not chase a complex multi-channel model in week one. First: paid click → source saved in CRM. Then compare channels on qualified leads and deals, not only on the last touch in the counter. Counter setup — Google Analytics and Yandex Metrica in Uzbekistan.

08Typical mistakes for businesses in Tashkent

The same misses show up in clinics, services, schools, delivery, and local trades. Naming them helps you avoid fixing creatives when the measurement link is broken. What most often breaks tracking: • five different Telegram buttons on the site with different (or empty) links • Stories and Ads share one bare username; the site uses another bot • the manager creates cards by hand and writes “insta” for everything • Ads conversion = button click, while CRM bookings are never reconciled • GCLID is not stored, then people wonder why offline import “did not take off” • waiting for perfect attribution before running a simple “click → card with code” test
BeforeAfter
Many buttons, mixed linksInventory: one dictionary, one format
Source “from the manager’s memory”Source from parameter / UTM on create
Primary = Telegram clickPrimary = status closer to booking/payment
Jump straight to complex Ads importPass checklist step 4 below first
If the “UTM → bot → CRM” test fails, talk of Smart Bidding and attribution is early. Fix the link first.

092-week checklist + timing guides

Week 1 — base 1. Inventory every Telegram / WhatsApp button on the site, in ads, header, footer, Stories, and QR. 2. One start/UTM format and field dictionary (source, medium, campaign). 3. CRM source fields; ban overwriting first touch by hand. 4. Test: UTM click → bot → card with the same code. Do not move on without a green test. Week 2 — reconcile 5. Decide which CRM event is the Ads conversion (qualified lead / booking / payment). 6. Store GCLID if you already run Search. 7. Weekly report: Ads spend ↔ qualified CRM leads and bookings by channel. 8. If step 4 fails — fix links and fields, not creatives or bids. Soft timing guides: • 3–5 workdays — deep link + CRM fields on a simple stack • 1–2 weeks — stable report reconciliation • offline import — when CRM statuses are disciplined and GCLID is accumulating What to watch in the weekly report: spend by campaign, chats with a source code, qualified count, bookings/payments, share of “no source.” If “no source” grows — fix buttons and card creation, not ad copy.

Summary

Telegram leads count when the source reaches CRM from the click, not when it stops on a “message us” button. Parameterized deep links, strict source fields, cautious last click, and — as you mature — offline conversions into Google Ads. Start with the minimum level in the table: tag dictionary, “click → card” test, weekly spend-vs-booking reconcile. Strengthen what already gives numbers for budget decisions — not what sounds good in a meeting. Need a stack for yours — Google Ads and Telegram bot from UZNEO, or the full funnel. A calm order beats a perfect model on day one.

Launch ads without burning budget?

Google Ads with anti-fraud built in. Budget estimate and forecast in 24h on Telegram.