For Advertisers

    Telegram Pixel and Conversion Tracking Guide for Bot Campaigns

    14 min read

    Learn how to connect Telegram ad spend with bot starts, onboarding progress, qualified leads, and purchases. This guide explains where Telegram Pixel fits, where server-side bot tracking is required, and how to calculate CPA and CPL without double-counting conversions.

    Sara Al Mansoori

    Sara Al Mansoori

    AdTech Strategist & Editorial Lead

    Telegram Pixel and Conversion Tracking Guide

    Telegram conversion tracking needs more than one tool. Telegram Pixel can record eligible events on a website, but it cannot observe a user's journey inside a standard Telegram bot. Bot campaigns need deep links with start parameters, a server-side event log, and a CRM or payment record for the final business outcome.

    The practical measurement chain is:

    Ad spend -> impression -> bot start -> onboarding milestone -> qualified lead -> purchase

    Give every campaign or placement a short tracking token. Pass that token in the bot link, save it when the user starts the bot, and attach later events to the same internal user record. Use Telegram's ad statistics or your buying platform for delivery and spend, then join those totals with the bot and CRM data. That is the foundation for cost per start, CPL, CPA, funnel conversion rates, and placement-level optimization.

    Telegram Pixel and Bot Tracking Solve Different Problems

    A browser pixel runs JavaScript on a web page. It can record a page view, completed form, checkout, or another website action when the user's browser loads the code and sends the event. Telegram has an official Pixel documentation page, and some Telegram Ads account or reseller routes expose Pixel Tag controls for website campaigns.

    A standard bot chat is not your website. There is no page where you can install a browser tag, and a pixel cannot see a /start command, callback button, questionnaire answer, or Bot API payment update. Those events arrive at the bot's backend through Telegram updates and must be recorded there.

    Destination and event

    Primary measurement method

    What it can prove

    External website page or form

    Telegram Pixel, where available, plus website analytics

    A browser loaded a page or fired a configured website event

    Standard Telegram bot

    Start parameter plus Bot API event log

    A Telegram user started the bot and completed defined in-bot actions

    Telegram Mini App

    startapp parameter plus validated Mini App and server events

    A user opened a campaign-specific app flow and completed validated actions

    Sales handled outside Telegram

    CRM record joined to the acquired user or lead

    A lead became qualified, booked, purchased, or generated revenue

    Availability needs a pre-launch check. Telegram's public Getting Started documentation says ad URLs must point to a Telegram channel or bot, while the current Ad Policies and Guidelines also discuss website destinations. Pixel controls and permitted destinations may therefore differ by account, country, or buying route. Confirm what your account supports before building a funnel around website events.

    Treat the pixel as one input to the measurement system, not as the system itself. The event closest to revenue usually lives in your bot backend, billing service, or CRM. Optimize against that verified event whenever the campaign has enough volume.

    Sara Al Mansoori

    AdTech Strategist at MangoAds.

    Write the event dictionary first. If marketing, sales, and engineering use different meanings for "lead" or "activation," the dashboard will look precise while answering the wrong question.

    A useful bot funnel might contain these events:

    Event

    Trigger

    Counting rule

    Business role

    bot_start

    Backend receives /start <token> or an untagged /start

    One first start per user, plus separate raw restart events if useful

    Acquisition

    onboarding_complete

    User completes the last required onboarding action

    Once per onboarding version

    Activation

    lead_submitted

    Backend accepts a complete lead form

    Once per valid submission ID

    Lead volume

    lead_qualified

    CRM applies the agreed qualification rule

    Once per lead after status validation

    CPL optimization

    purchase_success

    Payment provider or Bot API confirms payment

    Once per transaction ID

    CPA or ROAS optimization

    refund

    Provider or Bot API confirms a refund

    Once per refund ID

    Net performance

    Do not count a message sent by the bot as proof that the user viewed it. Do not count a CTA click as a submitted lead if validation or delivery can fail. Telegram's Bot API exposes successful_payment and refunded_payment service messages for supported bot payments, but an external checkout should use the payment provider's confirmed server event.

    Choose one primary conversion for each campaign. A lead-generation campaign might use lead_qualified; a self-serve product might use purchase_success; an early test with little sales volume might use onboarding_complete as a temporary optimization event. Keep downstream quality as a guardrail even when the primary event is higher in the funnel.

    Telegram supports bot deep links in this form:

    https://t.me/your_bot?start=<parameter>

    The official Telegram bot features documentation allows A-Z, a-z, 0-9, _, and - in the parameter, with a maximum length of 64 characters. Telegram recommends base64url when binary or other structured content must be encoded. The Telegram Ads Guidelines also explicitly allow start parameters in links to destination bots.

    Avoid placing a full UTM string, email address, Telegram user ID, or readable customer data inside the parameter. Use a short opaque token and keep the campaign details in your own mapping table.

    Ad link: https://t.me/acme_demo_bot?start=k7P3xQ2

    Server-side mapping:
    k7P3xQ2 -> source=mangoads
    campaign=q3_demo_us
    creative=benefit_a
    placement=saas_channels_02

    This design stays within the character limit, avoids exposing business metadata in a forwarded URL, and lets the team correct labels without changing the live link. Use a new token whenever the reporting dimension must remain separable. If two creative variants share one token, no later query can recover which creative produced the lead.

    For a Mini App, Telegram supports a startapp parameter and passes it to the app as start_param and tgWebAppStartParam, according to the official Mini Apps documentation. Keep the same token dictionary across bot and Mini App entry points so campaign reporting uses one naming system.

    Capture a Bot Start Without Losing Attribution

    Opening a bot link is not yet a bot start. The user normally has to press the Start button, after which the bot receives a command such as: /start k7P3xQ2

    That difference matters. A deep-link click can abandon before the command reaches your backend. Count bot_start only after receiving the Telegram update, not when generating or redirecting the link.

    When the update arrives, the backend should:

    1. verify that the message is a valid private-chat /start command;
    2. parse and validate the token against the campaign mapping table;
    3. create or update the internal user record;
    4. preserve the original acquisition touch;
    5. record the current touch and a timestamp;
    6. emit an idempotent bot_start event;
    7. send the correct onboarding version.

    A minimal event record can look like this:

    event_id: tg_update_93844102
    event_name: bot_start
    occurred_at: 2026-08-21T14:03:11Z
    internal_user_id: usr_81c7
    telegram_user_id: [stored securely]
    acquisition_token: k7P3xQ2
    onboarding_version: v3

    Keep first_touch_token and latest_touch_token as separate fields. A returning user may open a later campaign link and trigger /start again. Overwriting the first touch destroys acquisition history; ignoring every later touch hides re-engagement. Store both, then apply a documented attribution rule in reporting.

    Telegram can retry unsuccessful webhook deliveries. Its Bot API documentation says update_id can be used to ignore repeated updates and offers a webhook secret_token for request verification. Make event writes idempotent, because a retry should not create a second lead or purchase.

    Instrument the Onboarding Sequence as a Funnel

    The start count shows acquisition, not value. A bot can attract many starts and still fail because the welcome message is unclear, the first question asks too much, or the handoff to a human breaks.

    Track only milestones that help diagnose a decision. For a B2B demo bot, the sequence could be:

    bot_start
    -> value_proposition_selected
    -> business_email_validated
    -> company_size_submitted
    -> lead_submitted
    -> lead_qualified
    -> demo_booked

    For an ecommerce or digital-product bot, the sequence might be:

    bot_start
    -> product_viewed
    -> checkout_started
    -> purchase_success
    -> refund

    Attach campaign_id, creative_id, placement_id, onboarding_version, and occurred_at to each event through the user's stored acquisition record. Do not ask the user to carry the token through every step.

    Track step completion when the backend accepts the action. If a user submits an invalid email, record a validation failure for product diagnostics but do not count a lead. If a sales representative later disqualifies the submission, retain lead_submitted and add the separate lead_disqualified status. This preserves the difference between media quality and sales qualification.

    The onboarding itself should reveal value quickly. Ask only for information needed to deliver the next step or qualify the lead. A long questionnaire may produce fewer leads and higher CPL while improving sales quality. Compare both funnel volume and the qualified or purchased outcome before deciding that shorter is always better.

    Join Ad Delivery, Bot Events, and CRM Outcomes

    No single source owns the entire funnel. Build the report from three layers:

    Data layer

    Typical fields

    Source of truth

    Media delivery

    campaign, creative, placement, spend, impressions, clicks when available

    Telegram Ads, MangoAds, publisher report, or another buying platform

    Product behavior

    token, bot start, onboarding events, internal user ID, timestamps

    Bot backend or Mini App backend

    Business outcome

    lead status, booking, order, revenue, refund

    CRM, billing system, or payment provider

    Join aggregated media data to the token mapping by campaign, creative, placement, and reporting period. Join user-level bot and CRM data with your own internal identifiers. Do not assume that an aggregated Telegram Ads start count can always be matched to individual users.

    The official Telegram Ads statistics page reports views and the number of users who joined a channel or started a bot after viewing the sponsored message. Use that figure as the platform's attributed result. Use your bot backend as the count of starts it actually received with your tracking design. The totals can differ because definitions, attribution windows, time zones, filtering, missing tokens, and buying routes differ.

    Reconcile the systems daily during a new launch:

    • compare spend and impressions with the buying dashboard;
    • compare platform-attributed starts with backend starts;
    • report invalid, missing, and unknown tokens separately;
    • check delayed CRM updates before closing a cohort;
    • keep refunds and duplicate suppression visible.

    Do not silently force the totals to match. A discrepancy is a diagnostic signal.

    Calculate Cost per Start, CPL, and CPA

    Use unique, validated conversions for the same spend period or acquisition cohort.

    Cost per bot start = Ad spend / Unique attributed bot starts

    Onboarding completion rate = Unique onboarding completions / Unique bot starts x 100%

    Lead rate = Unique qualified leads / Unique bot starts x 100%

    CPL = Ad spend / Unique qualified leads

    CPA = Ad spend / Unique target actions

    Suppose a hypothetical campaign spends $1,200 and produces:

    • 200,000 impressions;
    • 960 unique attributed bot starts;
    • 576 onboarding completions;
    • 72 qualified leads;
    • 9 new customers.

    The results are:

    Cost per bot start = $1,200 / 960 = $1.25

    Onboarding completion rate = 576 / 960 x 100% = 60%

    Lead rate = 72 / 960 x 100% = 7.5%

    CPL = $1,200 / 72 = $16.67

    Customer CPA = $1,200 / 9 = $133.33

    These numbers are a calculation example, not Telegram benchmarks. If the buying route does not expose reliable clicks, do not invent CTR, CPC, or click-to-start rate. Optimize with the stages you can verify.

    Use the same cost and conversion scope. If spend includes three placements but the lead query includes only two tokens, CPL is wrong. If customers convert 20 days after starting the bot, use acquisition cohorts and wait for the agreed window to mature. The MangoAds guide to CPC and CPM explains the upstream cost math, while the A/B testing guide shows how to compare variants without changing several conditions at once.

    Choose and Document an Attribution Rule

    Attribution is a reporting rule, not an observable law. A user may see an official sponsored message, click a channel post later, reopen the bot from search, and buy after a sales call. Your data can record several touches, but the campaign report still needs one declared method.

    Common choices include:

    • first touch for measuring original acquisition;
    • last paid touch for deciding which recent campaign receives credit;
    • cohort reporting, where every later outcome stays attached to the user's first attributed start;
    • multi-touch analysis for investigation, kept separate from finance totals.

    For most bot acquisition programs, preserve first touch permanently and store every later paid touch. Use first-touch cohorts for CAC and retention, then add a last-paid-touch view for campaign optimization. State the attribution window, time zone, conversion status, and refund treatment beside the report.

    A simple documented model is more useful than a complex model nobody can reproduce. Start with one finance view and one optimization view. Add multi-touch analysis only when the event volume and decision value justify the extra maintenance.

    Sara Al Mansoori

    AdTech Strategist at MangoAds.

    Use Telegram Pixel Where a Website Is Part of the Journey

    If your approved buying route sends traffic to a website and your account exposes Pixel controls, use the pixel to measure the browser stage. The implementation pattern is familiar:

    1. create the pixel or event source in the available Telegram Ads interface;
    2. place the base code according to the current account documentation;
    3. fire the conversion event only after the website confirms success;
    4. associate the eligible event with the relevant ad where the interface allows it;
    5. test in a browser and check the event status before spending.

    Do not fire a lead event on the form button alone. The button can be clicked while client validation fails, the network request times out, or the backend rejects the submission. Trigger the event after the server confirms the lead, or load a unique success state that appears only after acceptance.

    Keep your own website analytics and backend records. Browser pixels can be blocked, delayed, duplicated, or prevented by consent choices. The pixel dashboard and CRM therefore answer related but different questions. Telegram's bot developer terms also require an accessible privacy policy, data minimization, appropriate retention, deletion handling, and secure storage. Review the rules that apply to your markets and implementation rather than treating this guide as legal advice.

    For a Mini App, use the startapp token and validated server events as the durable attribution layer. A Mini App uses web technology, but do not assume that every website pixel or consent setup behaves identically inside Telegram's webview. Test the actual clients, account permissions, and event delivery before launch.

    QA the Entire Path Before Buying Traffic

    Run a test matrix across mobile, desktop, new users, and returning users. Telegram's ad rules require destination bots to respond properly on mobile and desktop, so measurement QA should cover both experience and data.

    Test

    Expected result

    Open valid tagged link as a new user

    Start button appears; one attributed bot_start is stored after it is pressed

    Open the same link twice

    Raw restart may be logged; unique acquisition start is not duplicated

    Open a second campaign link as a returning user

    First touch remains; latest touch updates according to policy

    Use an invalid or expired token

    Bot still works; event goes to an explicit invalid_token bucket

    Complete onboarding

    Each milestone appears once and in the correct order

    Submit invalid lead data

    Validation error is logged; no qualified lead is created

    Complete payment or refund

    One transaction event is stored; refund updates net results

    Retry the same webhook update

    Idempotency prevents duplicate events

    Reconcile the dashboard

    Spend, starts, leads, and customers use the same date and token scope

    Also test the untagged path. Users can find the bot through search, shares, profile links, or old messages. Record these starts as organic, direct, or unattributed according to a fixed rule. Never assign them to a paid campaign simply because that campaign was active.

    Turn Conversion Data Into Campaign Decisions

    The most useful report is a funnel by campaign, creative, placement, and acquisition date. Read it from the bottom up.

    • High cost per start can point to weak creative, poor placement fit, or expensive delivery.
    • Healthy start volume with low onboarding completion points to the bot experience or a mismatch between ad promise and first screen.
    • Strong onboarding with weak qualification suggests the questions or targeting admit low-intent users.
    • Good CPL with poor customer CPA shifts attention to lead quality, sales follow-up, pricing, or product fit.

    Change one major variable at a time and preserve its token. The article on how to run Telegram ads compares official, manual, and automated buying routes. If you buy direct placements, also vet inventory before scaling; clean conversion tracking cannot repair fabricated reach or an irrelevant audience.

    MangoAds can reduce the operational work of CPM campaign distribution, targeting, channel matching, and advertising reporting. Connect those media records to your own token map, bot event log, and CRM outcomes. The buying platform supplies the top of the funnel; your backend supplies the conversion truth needed for CPL and CPA decisions.

    FAQ

    What happens when someone forwards a tracked bot link?
    -

    The forwarded link keeps its original start parameter, so later starts may be attributed to the campaign or placement that created it. That is technically consistent but may mix paid response with earned sharing. Flag tokens that produce unusual delayed or repeated activity, and consider a separate referral mechanism after onboarding. Keep the original paid cohort intact, while reporting forwarded or user-generated referrals as a secondary distribution effect when your data can distinguish them.

    How should organic bot starts appear in campaign reports?
    +

    Put untagged /start events in a visible organic, direct, or unattributed bucket based on a written rule. Do not distribute them proportionally across active campaigns, because that creates conversions the paid links did not prove. Track their onboarding and revenue normally so product teams still see their value. A rising unattributed share can also reveal broken links, copied bot usernames, missing parameters, or discovery through Telegram search and forwarded messages.

    Do I need a Telegram username to identify a converting user?
    +

    No. Usernames are optional and can change, so they should not be the primary join key. Create an internal user ID and associate it securely with the numeric Telegram user ID received by the bot. Use that internal ID in event, CRM, and billing tables. Collect email, phone, or other contact data only when the service or qualification process needs it, explain the purpose, and apply your privacy and retention rules.

    How long should the attribution window be for a bot campaign?
    +

    Choose a window from the observed buying cycle and the decision you need to make. A low-consideration purchase may mature in days, while a qualified B2B lead can take weeks. Report conversion lag by acquisition cohort before fixing the cutoff. Then keep the window stable across variants, label late conversions separately, and avoid judging recent cohorts against older cohorts that have had more time to produce leads, purchases, cancellations, or refunds.

    How can offline sales be connected to a Telegram campaign?
    +

    Pass the bot's internal lead ID into the CRM when a user requests a call, demo, or quote. Sales should update that same record with qualified, won, lost, and revenue fields instead of creating an unrelated contact. Import or query those status changes back into the cohort report. Limit access to the mapping, document the lawful purpose and retention period, and avoid exposing the campaign token or Telegram identifier in shared sales notes.

    5.0

    1 rating

    Related Posts
    A/B Testing Telegram Ads
    Sara Al Mansoori
    For Advertisers
    How to Detect Fake Telegram Channels
    Sara Al Mansoori
    For Advertisers