Why put a link in between
- Routing. One ad link can send visitors from different countries or devices to different offers, with a fallback for everyone else. See redirects.
- Cleaner numbers. Messengers and other tools may open a link to build a preview or check it. Known robots, including messenger link previews, are counted as bots, and the filter flags other automated visits. See bot traffic.
- Attribution. The tracker gives every click an ID and matches it with the conversion the affiliate network reports, so you get revenue and ROI per campaign, not just clicks. The tracker is in beta.
- One place to change things. You can swap the destination without editing the ad.
TDS.SO does not replace the ad platform’s rules. Check each platform’s current requirements, and make sure the page a person lands on matches what the ad promised.
Before you start
Finish the basics from getting started: a server with the proxy, a domain added to the dashboard and a working template. For ROI you also need an offer with {click_id} in its URL and a postback set up in the affiliate network.
Step 1. Create a traffic source
In Tracker → Traffic Sources → Add Source create a custom source for the platform, for example "Telegram Ads". Add the parameters you want to see in reports: campaign, ad or channel tags. They are stored in sub1–sub10 and can be used in report breakdowns.
The presets in TDS.SO cover other ad networks; for a platform that is not in the list, a custom source works the same way.
Step 2. Build the link
- Create a template with your offer as the destination, a redirect method and a bot action. Messengers show a preview card for links, so the template’s Meta Settings (title, description and image) are worth filling in.
- Create a link from the template on your domain, pick the offer and the traffic source, and set the fallback click cost.
- Add your own tags to the link in the ad, for example
https://example.com/promo?campaign=spring&creative=1. Use tags you can map tosub1–sub10in the source.
If the ad platform does not report a price per click, calculate it from your campaign (spend divided by clicks) and update the fallback cost when it changes. Without a cost there is no ROI. Check in each ad cabinet what it reports.
Typical rules
Rules are checked top to bottom and the first match wins. Anyone who matches no rule goes to the main URL. Common setups for messenger traffic:
| Goal | Rule |
|---|---|
| Different offers by country | Country is DE to offer A; Country is PL to offer B; main URL for the rest |
| Mobile app offer vs desktop page | OS is Android to the app offer; OS is iOS to another; main URL for desktop |
| Local language page | Language is ru to a Russian page; main URL in English |
| Time-limited promo | Date range in a rule, with the main URL after it ends |
| Compare two landings | Two URLs separated by | in one rule for an even split |
Conditions inside a group combine with AND, groups with OR. More examples are in the geo and device split guide.
Step 3. Test before you spend
- Open the link from a phone, in the messenger itself if you can, and check it lands on the right URL.
- Paste the link into a chat to see the preview card.
- In Statistics → Clicks check the country, device and which URL each test click went to.
- Make one test conversion and confirm it appears under Tracker → Conversions with the right offer and source.
If the bot page opens for you, you probably visited through a VPN or proxy. Try a mobile connection.
Measure ROI
Once clicks and postbacks flow, open Tracker → Reports, choose your period and break it down by date, country, device, offer, source or the sub tags. You get revenue, cost, profit and ROI for each slice. In the TDS.SO tracker revenue is approved conversions only and cost is the price of all clicks, bots included.
Example (numbers are illustrative): 1,000 clicks at a fallback cost of $0.15 give $150 of cost. Approved conversions pay $210. Profit is $60 and ROI = 60 / 150 × 100% = 40%. Compare slices, such as countries or creatives, only when each has enough conversions to be more than noise.
Common mistakes
- No
{click_id}in the offer URL. The postback then cannot find the click. - Stale click cost. If your real price per click changes, ROI drifts until you update the fallback.
- Changing several things at once. Change one rule, filter level or creative at a time and compare equal periods.
- Ignoring the Bots segment. A sudden rise tells you something changed in your source or placement.
Questions
Can I use TDS.SO with Telegram Ads?
Yes. Telegram Ads sends people to a URL you provide, so the URL can be a TDS.SO link on your domain. Follow the platform’s own ad requirements.
How do I get ROI if the ad platform does not report click cost?
Set a fallback click cost on the link: spend divided by clicks. Keep it up to date. The tracker combines it with conversions from your postback.
Does TDS.SO handle MAX the same way?
Yes. Any ad that opens a URL can use a TDS.SO link. Create a custom traffic source for MAX and check its cabinet for how click prices are reported.
Are messenger link previews counted as visitors?
Known robots, including messenger link previews, are treated as bots and recorded as such, so they do not count as people in your statistics.