Moving from Keitaro
How Keitaro concepts, macros and redirects map to TDS.SO, and a migration plan.
Moving makes sense if you mostly use Keitaro to distribute traffic: streams by geo and device, bot filtering, many domains. TDS.SO has no conversions, postbacks, offers or costs — keep those in your affiliate network or tracker. There is no import; everything is moved by hand.
Concepts
| Keitaro | TDS.SO |
|---|---|
| Campaign | Link: domain/slug or the whole domain |
| Shared campaign settings | Template — no direct equivalent |
| Stream | Stream: top to bottom, first match wins; a stream without conditions never fires |
| Final stream | main URL, the Everything else row |
| Bot filter stream | the template's Filter Level and Bot Action, checked before streams |
| Stream weight | URL shares inside a stream or the main URL |
| User binding | How to choose → Keep the same |
| Groups | tags |
Almost all stream filters have conditions with the same name: country, region, city, ISP, IP, proxy, device, browser, OS, language, referrer, and URL Parameter instead of Sub ID. The only operators are is and is not; time and day of week are in UTC. There is no equivalent for click limits, keywords, search engines, mobile operators or connection type. All conditions and formats are in the conditions reference.
Macros
| Keitaro | TDS.SO |
|---|---|
{subid} | {click_id}. In TDS.SO, {sub_id} is a regular query parameter |
{country} | {country} or {country_code} — country code |
{region} | {region} — a name, not a code |
{user_agent}, {language}, {referrer} | {ua}, {lang}, {referer} |
{device_type:lang} | {device}: pc, mobile, tablet |
{sub_id_1}…{sub_id_30} | {name} of any GET parameter |
There are no campaign or stream macros ({campaign_name}, {stream_id}). The full list is in the reference.
Redirects
| Keitaro | TDS.SO |
|---|---|
| HTTP | 302 Temporary |
| Meta, double meta, JS | Meta Refresh, Double Meta Refresh, JavaScript |
| With empty referrer | any type with a page, for example Meta Refresh |
| Iframe | iFrame or Simple Iframe |
There are no CURL, FormSubmit or Remote redirects. More in Redirect types.
Key differences
- Your server runs only a web server that passes traffic to TDS.SO. Settings and statistics live in the dashboard; nothing needs updating on the server.
- The template's redirect type, bot filter and Parameter Forwarding apply to links immediately, while the URL, Bot URL and streams are copied into a link when it is created. See Template and links.
- Statistics are counted in Moscow time (MSK), stream conditions in UTC.
- Changes in the dashboard take effect immediately.
Plan
- For each campaign, write down the domain, alias, streams, bot settings, redirect type and macros.
- Go through the first setup. Install the server on a separate VPS: the installer stops nginx and Apache, so Keitaro campaigns on the same server will stop opening.
- Build templates using the tables above. Save repeated streams with the Save all streams as a set button.
- On a pilot domain: point the A record to the new server, add the domain, create links with the same alias (Slug after / → Custom) or Just /. Until a link exists, the domain returns
404. - Test the redirect, streams and bots, then move the remaining domains. Turn Keitaro off once clicks on it stop, and export your reports beforehand.