Live·Meta + Google server-side·Your CPA gets the conversion·One link — different landings

You pay for the click.
You earn on the lead. Between them, your blind spot.

An ad click → they hit /start on your bot → they join the channel. It fires server-side to Meta and Google: Lead on the start, Subscribe on the join — the pixel learns on the lead, not the click. For media buyers: pay per lead, not per seat.

$50 balance on signup No card, no lock-ups GDPR · we don't sell your audience

One link. Different landings.

Tier-1 on iPhone and Android out of a cheap geo shouldn't hit the same offer. The click goes where it pays off, and that call is made on the redirect itself.

Branch on 15 click fields
Geo, device, browser, OS, sub1-9, ad account, pixel
Postbacks to your CPA
The event hits your tracker once: dedupe off / once per user / once per user per source
Publish — and traffic runs the graph
Deactivate instantly restores the previous redirect. Whatever falls over on our side, the paid click runs the old route rather than erroring out
One charge per person
$0.07 / $0.04 / $0.02 by geo tier. Bonus and referral spend before your own money
leadgram.org/campaigns/flow
LG
Campaign
apr 30 · 14:00 utc
SCREEN SCHEMATIC
CLICKS
EVENTS · 24H
BOTS
Click route
PUBLISHED
Traffic SourceCondition · geoRedirect · T1Redirect · else

Tracking doesn't end in a dashboard. It ends in your ad account.

Click tagged → bot and channel → click routed → conversion in Meta and Google → delivery verified. Five links in one chain, not five tabs.

Tracker

Every click. Tagged.

0xA3F19BFTD+$24.5002s
0xC72E04CLICK+$004s
0x91DA28FTD+$24.5007s
Telegram

The channel join is tied to the click.

@
@bigtrafficbot
14:02
Hey 👋 Ready to claim your bonus?
→ claim
@bigtrafficbot is typing…
Click Flows

One link. Different landings.

SRCGEO ?T1T2ELSE
CAPI

Server-side to Meta and Google. No iOS gaps.

fb.0xA3F1SUBSCRIBE200 OK12ms
fb.0xC72ELEAD200 OK09ms
go.0x91DASUBSCRIBE200 OK14ms
Postbacks

Postback to your CPA. One person — one conversion.

POST /postback
200 OK
click_id=0xA3F1
event_type=channel_join
sub1=us_ios
200 OK · deduped
Keitaro · RedTrack · custom

From bot token to your first attributed subscriber.

Connect the bot and the channel, draw the click's route, hand out the link. Three steps that actually happen.

01

Connect the bot and activate the channel

Open @BotFather, type /newbot, paste the token into your workspace. Then add your channel and activate it with that bot — from that moment joins are written as events.

02

Draw the click's route

Click Flow canvas: Traffic Source → Condition → Redirect. Publish — and live traffic already runs the graph. Deactivate puts the campaign back on its old redirect instantly.

03

Hand out the link and watch who arrives

Someone joins the channel — the join is tied to their click (campaign, geo, sub1-9) and fires server-side to Meta as Subscribe and to Google. You see it in the live feed, flagged as sent to CAPI.

One token from @BotFather is the whole setup.

All three steps happen inside your own workspace: connect the bot, draw the route, drop the link into a campaign. The bonus balance pays for your first subscribers, and there's nowhere to enter a card.

Sign-up is an email and a password. One click puts the campaign back on its old redirect.
Connect a bot

Built for buyers: your first launch is walked through.

A checklist on the dashboard, 16 guides and hints on the form fields. Not “read the 60-page README”.

/bots
You don't have any bots yet.
Let's add one in 60 seconds →
@BotFather → /newbot
?
Empty state mentoring
An empty screen hands you the next step with an inline link, not “contact support”.
POSTBACK URL
Postback URL: where to send the conversion. Paste your CPA's URL and drop in the macros — {click_id}, {event_type}, {sub1}.
?
Hints on the form fields
The field explains itself in one sentence — what to type and where to get it. No trip to the docs.
You've been credited $50 welcome bonus
Bonus ledger · covers your first campaign · spent before Main
?
$50 on the bonus balance
The bonus sits in its own bucket and is spent before Main: the first campaign runs on us, your own money starts going after that.
  • bot
  • campaign
  • pixel
  • first click
  • test conversion
?
First-launch checklist
Five steps on the dashboard: bot → campaign → pixel → first click → test conversion. The ticks come from your real stats, and the finish line is proof that pixel and token are alive before you spend.
⌘K
16 guides and ⌘K search
You wire it up yourself, at night, without waiting on a manager. RU/EN/UK, texts checked against the code in a dedicated pass — honest caveats about the limits included.
3 languages · Workspace, emails and guides — in RU/EN/UK.

One person = one charge. Forever.

$50 on your balance at signup is ≈700 leads in T1: your first campaign is on us. No card, no lock-up periods, no minimum commits.

Pushing volume — write to us, we'll work it out. Message the team →

Tier 1US · UK · CA · AU · NZ · IE · DE · NL · CH · SE · NO · FI · JPTier 2UA · KZ · BY · BR · MX · AR · IT · ES · PL · TR · CZ · RUTier 3EG · ID · IN · MA · NG · PH · TH · VN · ZA · all otherResolutionGeo-IP at entry · cached 24h

Your stack counts clicks. Telegram starts after that.

Keitaro honestly covers clicks and postbacks, and we mark it so. But the path click → bot → channel → pixel it covers with nothing — you wire that by hand and it's the first thing to break.

What you needleadgramKeitaro + bot-frameworkCPA + hand-coding
Click tracking and tagging
Telegram bot wired into tracking your code, your server
Click routed by geo, device, sub1-9
S2S postbacks
$50 to start and referral payouts for buyers you bring
$0.07 / $0.04 / $0.02 per unique lead
The channel join reached the pixel Meta Subscribe + Google can't see Telegram you write it
The join counts only for the ones who stayed Smart Delay nothing to check with nothing to check with
You can see whether the conversion landed Delivery Health · reason and refire integration-level status, then a checklist you find out from CPA

Keep Keitaro. We cover the stretch after the click.

Postbacks keep landing in your tracker, while the channel join reaches Meta and Google. One campaign is enough to check it: connect a bot, put the link into a single split, compare it with what your pixel reports today.

No migration needed - the bot and your tracker run side by side.
Test it on one campaign

Integration doesn't end at “key pasted”.

Meta and Google get conversions from our server — and you see whether each one landed. Below is an example of a wired-in setup.

# leadgram.env
TELEGRAM_BOT_TOKEN=1234567890:••••••••••wired
META_PIXEL_ID=678••••••••••wired
GOOGLE_CONVERSION_ID=987••••••••••wired
Delivery Health

Sent / Failed / Suppressed per platform, plus the skip reason: no gclid, click older than the window, held by dedupe. A failed conversion refires with a button.

Test conversion to Meta — before you spend

The test-conversion button in Meta checks your pixel and token before you spend — a typo turns up right away, not after $500 is gone.

Got doubts — ask.

leadgram is infrastructure. What you run on it is your responsibility. We block obvious fraud and violations of Telegram's ToS, but we don't dictate which offers you push. Affiliate, dating, OF, and other regulated verticals are your call and your legal zone in your jurisdiction.
A unique Telegram user: one charge per (your org, person) pair — forever, on their first billable event. Left and came back, arrived via retargeting — no second charge. Clicks, landing views, join requests and cancellations cost nothing. With Smart Delay on, the join is held between 5 minutes and 72 hours: if they did not stay in the channel, the join does not count. The price depends on the geo tier: $0.07 / $0.04 / $0.02.
Anything that takes S2S. The form ships presets for Keitaro and RedTrack; everything else is a custom URL in a minute. Macros: {click_id}, {event_type}, {sub1}-{sub5}, {platform}, {fbclid}, {gclid}, {gbraid}, {wbraid}. Dedupe per user is a toggle right in the table — your CPA gets the conversion once.
No, and that's for the better: we have no import. A fresh link goes up faster than old clicks get moved, and your old tracker keeps running — we send the postback into it. Your data comes out whole: Export CSV returns the entire filtered click set, not the current page.
The chain click → bot → channel works: someone arrives on a tracking link, hits /start on the bot and joins the channel — the join is tied to that click inside a 7-day window. A click that goes from the ad straight into the channel, past the bot, isn't attributed at all: no /start, no click to tie it to. That's the limit of the mechanic, not a setting.
It doesn't. You create an Import from clicks conversion in Google Ads and invite our service account with Standard access — there's nowhere to paste a token. The old UploadClickConversions has been closed to new integrations since 15.06.2026; we send through the Data Manager API. gclid, gbraid and wbraid are picked automatically, iOS traffic lands.
$50 on your balance at signup · spent first · no card

Connect the bot and see your first /start in the live feed this session.

After that it's $0.07 / $0.04 / $0.02 per unique lead by geo tier. Clicks and landing views aren't billed. There's nowhere to enter a card.

$50 on your balance. No card.

Create account