tellmetric
TikTok ads

TikTok ads to Telegram conversion tracking

Find out which TikTok campaigns, ad groups and ads bring people who join your Telegram group, message your bot and deposit, and send those conversions back to your TikTok pixel so the campaign can optimise for them.

Where TikTok's reporting stops

A TikTok ad that points at Telegram hands the visitor to an app TikTok cannot see into. Ads Manager records the impression and the click, and then nothing. The join, the first message to your bot and the deposit a week later all happen inside Telegram or in a payment system, where no TikTok pixel runs. Without help, every campaign looks the same after the click.

Tracking a TikTok to Telegram funnel has two parts: attribution, which records the campaign, ad group and ad behind each click and keeps it attached to the person inside Telegram, and reporting back, which sends the join, message or deposit to TikTok with the click id so TikTok can credit the ad and learn from it. This guide explains how Tellmetric does each, and where the limits are.

What you connect

On the TikTok page under Ad accounts you enter three things from TikTok Ads Manager:

  • Pixel code. Found under Tools, Events, then your pixel. Conversions are sent to this pixel.
  • Access token. Generated in the same pixel's settings. It is stored encrypted and never shown again after saving.
  • Test code (optional). From the pixel's Test events tab, for checking that events arrive before real traffic starts.

No TikTok code has to run in the browser. Delivery happens server to server through TikTok's Events API. A Telegram bot connected to the workspace is still needed, because the bot is what records joins and messages and links them to the click.

TikTok delivery is part of the Pro and Agency plans. The Free plan reports to Meta only, and the TikTok fields can be saved only once the workspace is on a paid plan. A workspace whose delivery is paused keeps its events waiting rather than sending them.

Capturing the click

Point the TikTok ad at a Tellmetric tracking link, or at your own landing page with the tracker snippet installed. The tracking link records the click before Telegram opens and reads the ad data from the address: TikTok's click id, ttclid, the UTM tags and the TikTok campaign, ad group and ad ids. The landing page snippet captures the same values, passes them on to the tracking links on the page, and also reads TikTok's _ttp browser cookie when your own TikTok pixel has set one.

TikTok does not send campaign or ad ids on its own. The Links page gives you a URL suffix to add to each ad's destination URL in TikTok Ads Manager:

?utm_source=tiktok&tt_campaign_id=__CAMPAIGN_ID__&tt_adgroup_id=__AID__&tt_ad_id=__CID__&utm_placement=__PLACEMENT__

TikTok replaces the macros on every click. Start the suffix with & instead of ? if the link already contains a question mark. The ids are useful because they stay the same when a campaign is renamed.

From there, the tracking link carries a click id of its own into Telegram, through a single-use invite or a deep link into your bot. When the person joins or writes to the bot, the join or message inherits everything recorded on the click: the ttclid, the TikTok ids, the UTMs, the IP address and the browser.

Which events reach TikTok, and under which names

Tellmetric translates its own events into TikTok's standard event names:

  • Join of your group or channel is sent as Subscribe.
  • Message to your bot is sent as Contact, whether or not a link explains it.
  • Deposit and first deposit, and purchases such as Telegram Stars payments, are sent as CompletePayment.
  • Lead is sent as SubmitForm, and CompleteRegistration keeps its name.

Link clicks that carry a ttclid are sent as well, under Tellmetric's own names (JoinClick, AdminDMClick, OfferClick) rather than a TikTok standard event.

Some events are recorded in Tellmetric but never sent to TikTok. Leaves, refunds and ended paid-channel subscriptions are negative signals and are not reported as conversions. Follow-up activity after a join, such as still being a member after a set number of days, a first group message, a reaction or a boost, has no TikTok standard event and is also kept out.

Deposits carry their value and currency, plus an order id and whether the customer is new or returning when your deposit source provides them. Telegram Stars are converted to US dollars first, because ad platforms accept only ISO currencies.

What TikTok receives for matching

Each event is sent with the identifiers Tellmetric holds for it, and nothing it does not have:

  • The ttclid from the original click, and the _ttp cookie when it was captured
  • Email address and phone number, SHA-256 hashed, when they reached Tellmetric, for example in a deposit postback
  • A hashed external id, which for Telegram events is the person's Telegram account id
  • The IP address and user agent recorded on the click
  • The TikTok campaign, ad group and ad ids, the click time and click URL, and the UTM tags, in TikTok's ad block

Every event also carries a stable event id, which TikTok uses to deduplicate repeats. An event needs at least one of ttclid, hashed email, hashed phone or external id to be sent; one with none of them is marked as skipped and never posted.

Events without a TikTok click id

The ttclid is the identifier that ties a conversion to a specific TikTok click. Joins and messages always carry a hashed Telegram account id, so they are sent even when there is no ttclid: a join from a shared t.me link, or a message to the bot that no link explains. TikTok can only credit such an event to an ad if it matches it some other way, through the IP address, user agent or a hashed email or phone number. Treat them as weak signals.

In Tellmetric's own reporting, nothing is guessed. A join with no click behind it shows up as unattributed rather than being assigned to a TikTok campaign, and the TikTok page under Ad accounts counts only clicks, joins, messages and deposits whose record carries a ttclid.

How delivery works

A background worker checks for new events every 30 seconds and sends them to TikTok in batches of up to 200. A rate limit or a temporary TikTok error keeps the events queued for the next round, for up to 60 attempts, after which they are marked as failed. A permanent rejection is marked as failed straight away, with TikTok's message stored next to the event.

The worker only looks at events recorded in the last three days. That has three practical consequences:

  • A deposit reported today for a click from three weeks ago is still sent, because the deposit itself was recorded today and, once matched to that click, inherits the original ttclid.
  • If you connect TikTok after a campaign has been running, only the last three days of events are sent.
  • The Retry button on the TikTok page puts failed sends back in the queue, but only those from the last three days are picked up again.

Testing before real traffic

  1. Copy the test code from the Test events tab of your pixel in TikTok Events Manager and save it in the Test code field.
  2. Click your tracking link from a phone, with the TikTok URL suffix and a sample ttclid in the address, and join the group or message the bot.
  3. Watch the events arrive in the Test events tab, and check the TikTok page under Ad accounts for sent and failed counts and the last error.
  4. Clear the test code before the campaign goes live. While it is set, every event to that pixel is sent as a test event.

Reading the results

The dashboard's funnel table can be grouped by TikTok campaign id, ad group id or ad id, as well as by UTM campaign, ad, placement and country. Each row shows clicks, joins, messages and deposits with their value, so two ad groups with similar click costs can be compared on what they produced inside Telegram. Opening an entry in the activity list shows the identifiers it carries and whether TikTok accepted it.

Tellmetric does not import TikTok spend. Spend import currently covers Meta and Google Ads accounts, so the funnel table shows no spend or cost columns for TikTok rows. Cost per join, cost per deposit and return on ad spend for TikTok campaigns have to be worked out against the spend figures in TikTok Ads Manager, row by row against the TikTok campaign, ad group or ad id.

Using the data in TikTok

  • Optimisation event. While deposits are rare, a campaign has more to learn from Subscribe or Contact. Once CompletePayment events arrive regularly for the pixel, they are the better signal for a revenue funnel.
  • Judge on deposits. A creative with cheap joins and no deposits is not a winner. Group by TikTok ad id and compare deposits, not just joins.

Common mistakes

  • Pointing the ad straight at a t.me link, so there is no click record and no ttclid to send back
  • Leaving out the URL suffix, so results exist per UTM campaign but not per TikTok ad group or ad
  • Never checking that a test click actually arrives with a ttclid in the address
  • Leaving the test code in place after launch, so real conversions only show as test events
  • Connecting TikTok weeks after launch and expecting older joins to be sent
  • Comparing creatives on cost per join when the business is paid on deposits

Frequently asked questions

Do I need the TikTok pixel on my landing page?

No. Conversions are sent server to server with the pixel code and an access token. If your own TikTok pixel already runs on a landing page that uses the tracker snippet, its _ttp cookie is passed along as an extra identifier.

Is TikTok available on the Free plan?

No. Free reports to Meta only. TikTok, Snapchat, Reddit, Spotify, X and Google Ads delivery are part of Pro and Agency.

Can I see TikTok spend and return on ad spend in Tellmetric?

Not at the moment. Spend import covers Meta and Google Ads. TikTok results can be grouped by campaign, ad group and ad id, but the spend figures come from TikTok Ads Manager.

Can the same events go to Meta as well?

Yes. Every event is stored once and delivered separately to each platform you connect, each under that platform's own event names and with that platform's click id.

Related guides

Track Telegram conversions from your Meta ads

The Free plan requires no card. Upgrade to Pro at any time.