Unlimited domains, users and clicks for one flat price. Runs on your own VPS, installs with one command.
14 days, no card, over Telegram — @roitrack · Cancel any month · 1.6 ms typical redirect

Campaigns. Winners green, losers red, break-even grey.
What it does
Everything a media buyer checks. Nothing they don't.
“How much did I make today?” and “did last month's traffic ever pay off?” are different questions. Most trackers only answer the first. Drag the divider: same campaign, same weeks, revenue credited to the click date on the left and to the payout date on the right.

Same week, same spend. Click-date view reads +107.8% ROI; conversion-date view reads +3.9%. Three of these five weeks flip verdict depending on which question you ask.
Clicks, conversions, cost, revenue, profit and ROI — per campaign, offer, lander, country. Group up to three levels deep, build your own columns with formulas, save the filters you use daily, export to XLSX when someone asks for a spreadsheet.

iGaming funnel: regs, reg cost, FDs, FD cost, reg-to-deposit rate.
Approval rate, CPL, whatever your vertical actually runs on — write the formula once and it becomes a column. Set which columns show on each page and in what order, so a nutra report and an iGaming report each show only what matters there.

Nutra: leads, approved, and two custom formula columns.
One ads_read token covers the whole portfolio — every ad account, every business manager, personal, agency or rented. There is no ad account ID to paste and no list to keep in sync: spend is read per campaign, so accounts can appear and disappear underneath it without you reconnecting anything.
Yesterday's cost lands in your own database every day, which is what makes the numbers outlive the account. Lose a BM and you still have the spend, clicks, conversions and profit for every campaign that ever ran on it. Accounts billing in different currencies are each read in their own and converted to USD at a rate pinned to that day, so a report you open next year reads the same as it did the morning after.
The Conversions API runs the other way. When your network fires a postback for a deposit or an approved lead, that becomes an event on your pixel — so Facebook optimises toward the payouts you were actually paid for, instead of toward a click on your lander hours earlier.
When the token can't read a campaign, the report names it. It does not record zero spend. Zero spend is a number you would act on — it reads as a free campaign, and scaling one of those is expensive.
No rate for that day and that account, and nothing is written. A total that quietly drops one account looks exactly like a complete one, and a gap you can see is worth more than a number you can't check.
Direct to offer, or through a bridge lander. Split traffic across offers and landers by weight, random or sticky per visitor, with country and OS targeting per flow. That's the whole rotation feature — no diagram editor to learn.
Duplicate clicks deduped so postbacks attribute to the right click. Browser prefetches filtered before they inflate anything. Traffic-loss compensation built into the cost maths.
Add a domain and SSL issues itself — Let's Encrypt, or full Cloudflare mode with the DNS record created over the API. Bulk-add a list at once. Live certificate status, so an expiry never surprises you.
Your campaign data sitting on somebody else's server is a problem you can simply not have. Roitrack runs on your VPS instead. Your campaigns, your sources, your numbers — nobody else's business, including ours. We can't see your stats even if we wanted to.
Speed
Hot redirects never touch a database: in-memory campaign lookup, asynchronous writes, 302 out. These numbers are measured on a 2 vCPU / 4 GB VPS — the minimum spec Roitrack runs on — not estimated.
Latency measured warm at normal load; throughput measured at saturation from a separate machine.
Setup
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: one click, no SSH.
Switching
Campaigns take a couple of minutes each to recreate. Any source or network works through URL templates and macros — if it can fire an S2S postback, it works here. Nothing needs an integration built for it.
Run both for a week if you want the overlap — one campaign pointed at each, same traffic. Coming from Keitaro? Here is how the two compare.
Pricing
Typical self-hosted trackers ask $130+ a month once you pass one user and ten domains. This is the whole price, at any size. Pricing it against a metered cloud tracker? Here is how Roitrack compares to Voluum and to RedTrack.
Your maximum risk is one month. One license per server. Requires your own VPS from any provider (roughly $10–15/month); Ubuntu 24, 2 vCPU / 4 GB minimum — don't go lower.
Who builds this
We've been buying traffic for six years. We built Roitrack 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: unlimited domains, unlimited users, unlimited clicks, one price — the whole case for a self-hosted affiliate tracker, in one plan. Everything on this page is what we use to run our own campaigns.
Questions
Yes — 14 days, the full version, no card. It's issued by hand rather than a signup button, so you're set up by the people who built it. Message @roitrack on Telegram or email support@roitrack.app — usually set up within the hour.
No. Roitrack is fully self-hosted — everything lives on your server. The license check is the only thing that talks to us, and it carries no campaign data.
A fresh Ubuntu 24 VPS from any provider, 2 vCPU / 4 GB minimum — don't go below that. Point a domain at it, grab your install link, paste one command. If you can do that, you can run Roitrack.
Your data stays where it has always been: on your server. The license stops validating after a short grace period, so the app stops working until you resubscribe. Nothing is deleted and nothing leaves your box.
Yes. Payouts arrive by postback with your own status mapping, and conversions that land weeks after the click still attribute to the click that earned them — which is exactly what the two reports above are for.
Yes. You can send invalid traffic to a 404, a blank page or a safe page you set, so it stays out of your numbers.
Email support@roitrack.app or message @roitrack on Telegram.
See what's printing. Kill what's burning. $69 a month, on your own server.