Category

Self-hosted affiliate tracker

A self-hosted affiliate tracker runs on a server you rent, in your name, and records every click to a database only you can reach. Roitrack is one of those, at $69 a month, and it counts neither your clicks nor your logins nor your domains.

Most ad tracking software is sold the other way: your clicks land in somebody else's account, and the price moves with how much traffic you send. Self-hosting inverts both. The data is yours because it is physically on your disk, and the bill is flat because there is no meter on the other end of it.

What self-hosting actually changes

Four things, and they are the reason people search for this category rather than for a brand.

Your data is yours

Campaigns, sources, payouts and every individual click row sit in a database on your VPS. Nobody at Roitrack can read them, because there is nowhere for us to read them from. The licence check is the only thing that talks to us and it carries no campaign data.

The bill does not follow the traffic

A hosted tracker meters events, so a campaign that suddenly works produces an invoice that suddenly grows. Here the price is the same at 10,000 clicks a month and at 10,000,000, because nothing is counted.

It keeps running without us

Cancel and the data stays exactly where it has always been — on your server. Nothing is deleted and nothing leaves your box. What lapses is updates and support, not access to your own numbers.

You choose the machine

Any VPS from any provider, roughly $10–15 a month. Put it in the region your traffic is in, resize it when you outgrow it, snapshot it whenever you like. Ubuntu 24, 2 vCPU / 4 GB is the minimum.

What the tracker has to do

Everything a media buyer checks, and nothing they don't. Clicks, conversions, cost, revenue, profit and ROI — per campaign, offer, lander and country, grouped up to three levels deep, with the filters you use daily saved and an XLSX export for when somebody asks for a spreadsheet.

Roitrack campaigns table with 22 campaigns across six traffic sources — TikTok, Facebook, Adsterra, Taboola, MGID and Propeller — each tagged to an igaming or nutra group. Columns are ID, Name, Source, Group, Clicks, Uniq, Conv, CPC, EPC, Cost, Revenue, Profit and ROI percent, with profitable campaigns in green and unprofitable ones in red. The total row reads 22 campaigns, 225,280 clicks, 207,222 unique, 4,410 conversions, $11,632.79 cost, $14,055.00 revenue, $2,422.21 profit and 20.8 percent ROI. The sidebar badge under the roitrack logo reads basic, latest
Winners green, losers red, break-even grey. Twenty-two campaigns and 225,280 clicks on the one plan — none of those numbers changes what the month costs.

Two reports, because there are two questions. "How much did I make today?" and "did last month's traffic ever pay off?" are not the same thing, and a tracker that only credits revenue to the day the payout arrived can only answer the first. Roitrack keeps both views of the same weeks: revenue on the click date, and revenue on the conversion date. On the demo data three of five weeks flip verdict depending on which one you read.

Conversions that land weeks after the click still attribute to the click that earned them, which is what makes the click-date view possible at all. CPA, CPL and RevShare all arrive by postback with your own status mapping.

Your vertical's maths, as columns

Approval rate, cost per lead, registration-to-deposit — write the formula once and it becomes a column. Then set which columns appear on which page and in what order, so a nutra report and an iGaming report each show only what matters there.

Roitrack campaigns table filtered to the igaming group, showing 17 campaigns across TikTok, Facebook, Propeller, Adsterra, MGID and Taboola. Alongside the standard Clicks and Uniq columns are four funnel columns — Regs, Reg Cost, FDs and FD Cost — built as custom formula columns. The total row reads 17 campaigns, 173,000 clicks, 158,901 unique, 3,961 registrations at $2.10 each, 201 first deposits at $41.33 each, $8,306.69 cost, $10,235.00 revenue, $1,928.31 profit and 23.2 percent ROI. Profitable campaigns show green ROI and unprofitable ones red
An iGaming funnel: registrations, cost per registration, first deposits, cost per first deposit. None of these are built-in columns — they are formulas, and the same mechanism gives a nutra report approval rate and CPL instead.

Every click, on your disk

A self-hosted click tracker keeps the raw rows, not just the rollups. Each visit is a row with its own click ID, IP, country, OS, browser and device, queryable for as long as you keep the disk — and because nothing is metered, keeping all of them costs the same as keeping none.

Roitrack Click Log, All Time, sorted by time descending, showing 22 rows timestamped 17 September 2026 between 12:04 and 12:08, with columns Time, Click ID, Campaign, Flow, Offer, Lander, IP, Cntry, OS, OS Ver, Browser and Device. Each row carries a full 36-character click ID and an IP address. Countries include Brazil, Indonesia, the Philippines, Turkey, Poland, Spain, Peru, Portugal, Mexico, Romania and India. Nineteen rows read Android and Chrome on mobile, one reads iOS and Safari on mobile, and two read Windows and Chrome on desktop; the OS Ver column is empty throughout. The Lander column reads Direct on seventeen rows and names a lander on five. The header bar reads 225,280 rows across 451 pages, and the sidebar lists Campaigns, Click Date Report, Offers, Affiliate Networks, Traffic Sources, Landers, Click Log, Conversions, S2S Log, Domains, Settings and Support
225,280 click rows, down to the individual click ID, on hardware you rent. This is the view a metered plan bills you 225,280 events for.

Duplicate clicks are deduped so postbacks attribute to the right one, browser prefetches are filtered before they inflate anything, and traffic-loss compensation is built into the cost maths.

Domains, certificates and speed

Running your own tracker means running your own tracking domains, so the product does that part for you. Add a domain and the certificate issues itself — Let's Encrypt, or full Cloudflare mode with the DNS record created over their API. Bulk-add a list at once. Live certificate status, so an expiry never surprises you.

Roitrack Domains page listing four domains in a table with columns Domain, Actions, Role, SSL, Nginx and Cert Expires. Row 1 is panel.roitrack-demo.online, role ADMIN, SSL letsencrypt, nginx active, certificate expiring 01 Oct 2026 with 10 days left shown in amber. Row 2 is trk-nt.online, role TRACKING, letsencrypt, active, 18 Nov 2026 with 58 days left. Row 3 is trk-ig.online, role TRACKING, SSL cloudflare, active, 16 Mar 2027 with 176 days left. Row 4 is demo.roitrack.app carrying both TRACKING and ADMIN badges, letsencrypt, active, 07 Dec 2026 with 76 days left. Each row has Issue cert, Check SSL and Edit buttons, and a toolbar above the table offers Add Domain, Bulk Add, Remove and Check SSL for all. The sidebar badge under the roitrack logo reads basic, latest
Two Let's Encrypt domains, one on full Cloudflare mode, one serving the tracker and the admin panel at once. Unlimited, on the only plan there is.

Slow redirects burn paid clicks, so hot redirects never touch a database: in-memory campaign lookup, asynchronous writes, 302 out. These are measured on the 2 vCPU / 4 GB minimum spec rather than estimated.

1.6 msTypical redirect (p50)
<10 msWorst 1% (p99)
1,000+/sSustained throughput

That is a daily ceiling around 86,000,000 clicks. Latency measured warm at normal load; throughput measured at saturation from a separate machine.

Traffic sources, networks and flows

Any traffic source or affiliate network works through URL templates and macros: ten pass-through sub IDs you name yourself, a cost macro, and an S2S postback back from the network. If it can fire a postback, it works here, and nothing needs an integration built for it first.

Routing is a form, not a flowchart. Send traffic direct to the offer or through a bridge lander, split it across offers and landers by weight, random or sticky per visitor, with country and OS targeting per flow. Invalid traffic can go to a 404, a blank page, or a safe page you set, so it stays out of your numbers.

Facebook is wired in directly. One ads_read token covers every ad account you have — personal, agency, rented, across business managers — with no account IDs to paste and no list to keep in sync. Yesterday's spend lands in your own database daily, and accounts billing in different currencies are each converted to USD at a rate pinned to that day. The Conversions API runs the other way: a postback for a deposit or an approved lead becomes an event on your pixel, so Facebook optimises toward the payouts you were actually paid for.

What a self-hosted tracker costs

Roitrack is $69 a month, billed monthly, cancel any month, plus whatever your VPS costs — roughly $10–15. That is the whole price at any size:

The reason that is worth stating plainly is that the rest of the category prices the things we don't count. Both figures below are read from the vendors' own pricing pages, on the dates given, and each links to the full comparison.

TrackerEntry planUsers on itFirst plan with more than one login
Keitaro€49/mo1€129/mo
RedTrack$79/mo1$399/mo
Roitrack$69/mounlimited

Keitaro read 18 September 2026, RedTrack 21 September 2026, both monthly billing. Prices change — check theirs before you decide anything. Metered cloud trackers price differently again: how Roitrack compares to Voluum.

Fifteen minutes to your first tracked click

First time through, budget 30–45 minutes: DNS propagation and wiring your network's postback take most of it, and the interface walks you through both. Every domain or campaign after that takes under two minutes. Updates ship through the interface afterwards — one click, no SSH.

Already running something else? Campaigns take a couple of minutes each to recreate, and you can run both for a week on the same traffic if you want the overlap. The full install and setup sequence is in the docs.

Who builds it

Media buyers, six years in. Roitrack exists because self-hosted trackers wanted $130+ a month the moment we needed more than one user and ten domains — for software running on a server we were already paying for. So the limits nobody else removes are the ones that are gone here, and everything on this page is what we use to run our own campaigns.

Try it before you move anything.

14 days, the full version, no card. We set trials up by hand rather than through a signup button, so you get a person rather than a form — usually within the hour.

Get a trial on Telegram See what it does

Or email [email protected]. Something on this page wrong or out of date? Tell us and we will fix it.