Telegram funnels are easy to track with Joinvoo because every person has a Telegram ID. You put that ID into the offer link, your affiliate program sends it back when they sign up or deposit, and the deposit lands on the right person and the right ad.
But plenty of good funnels never touch Telegram. A casino pre-lander that sends people straight to registration. A landing page for a 1win promo. An ad that opens the Affstore offer link directly. Until now those funnels were a blind spot: you saw clicks in Ads Manager and deposits in your affiliate dashboard, and nothing in between.
What a visitor code is
On a website there is no Telegram ID, so Joinvoo makes its own ID for each visitor: a short visitor code like jv8k2mkbadcefg. It’s signed, so nobody can guess or fake one, and it ends in letters, so Joinvoo never mixes it up with a Telegram ID.
The code does exactly what {tg_id} does in a Telegram funnel. It travels into your offer link, your program sends it back, and Joinvoo knows who signed up and which ad they came from.
Setting it up
1. Add your website. In Channels, tap Add a website and paste the address your ads should open. It can be your own landing page, or your offer link with {click_id} in it.
2. Use the Joinvoo link in your ads. Every website gets its own ad link, like a channel does. When someone taps the ad, Joinvoo saves the click with Meta’s, TikTok’s, Snapchat’s or Google’s click ID and the pixel cookies, then opens your site with ?jv= and the visitor’s code. It takes a blink.
3. Add one line to your site. If your offer links are on your own page, paste the Joinvoo script before </head>. It keeps the visitor’s code as they move around your site and puts it into every link that has {click_id}. If your ads point straight at your site instead of the Joinvoo link, the script also saves the ad click itself.
4. Put {click_id} in your offer links. Exactly where you’d put {tg_id}: afftrack={click_id} for Affstore, sub1={click_id} for 1win and most other programs. Your own prefix is fine: afftrack=springlp_{click_id} still matches.
5. Keep your postback. There’s nothing new here. The same Joinvoo postback you use for Telegram funnels reads the visitor code as well.
What happens when someone signs up
The first sign-up (or the first deposit, if your program doesn’t send sign-ups) is that visitor’s join. It shows in your reports like a channel join, and on Pro and Agency it counts once against your plan. Later deposits from the same visitor don’t count again.
Each event goes to your ad platforms with the original ad click. Repeat deposits go to Meta as a separate custom event, so your first-deposit optimisation stays clean:
| What happened | Meta | TikTok | Snapchat |
|---|---|---|---|
| Sign-up | CompleteRegistration | CompleteRegistration | SIGN_UP |
| First deposit | Purchase, with value | CompletePayment | PURCHASE |
| Repeat deposit | Deposit (custom event), with value | not sent | not sent |
Google Ads gets the conversion action you picked for each event.
Track this in Joinvoo, free.Every join, start and deposit matched to the ad that drove it. First 500 joins on us.Start freeSites with their own sign-up form
If your site collects sign-ups itself (a lead form, a newsletter, a waitlist), call joinvoo.signup() when the form is sent. The sign-up is counted with its ad, and sent to your ad platforms, without any postback.
Running both
Most buyers who try this keep their Telegram funnels and add websites next to them. Everything sits in one dashboard: cost per sign-up, cost per FTD and profit per ad, whether the person came through a channel, a bot, a DM or a website.

