Self-hosted tracking for Facebook buyers
Keep the data from all your Facebook campaigns in one place. Cost, revenue, profit and ROI per campaign, pulled in daily and kept on a server Facebook can't switch off.
14 days, no card, set up over Telegram.
Ads Manager knows what you paid. The network knows what it paid you. Every evening you move both into a spreadsheet, in three currencies, and hope you typed it right.
Personal, BM, agency, rented. Connecting them one at a time is a job, and half won't be yours next month.
Facebook optimises toward a click on your lander, because the sale lands on the network's server hours later.
Access goes and every number with it. The campaign you were about to scale is now a thing you half remember.
Send Facebook button clicks and it finds people who click buttons. Send it the deposits and approved leads your network paid for, and it goes looking for those.
Every conversion you send is a training example. Thin or delayed signal keeps a campaign in learning, spending budget on exploration. Real payouts get it out sooner and into the pockets that convert, so cost per paid conversion falls as volume climbs.
Event mapping is per campaign: your conversion, or any of event1–event10,
to any standard Facebook event. The pixel comes from ?pixel= on the ad URL.
Matching uses fbclid automatically, fbp optional via a lander snippet.
Signal, not magic. A working offer scales further and a bad one fails faster.
Spend is pulled daily into your own database. Lose the BM and you still have the spend, clicks, conversions and profit, per campaign, for as long as you keep the server.
Roitrack runs on your VPS. We can't see your campaigns or your numbers. Only the licence check talks to us.
Unlimited domains on one price. SSL issues itself, DNS goes in over the Cloudflare API, bulk-add when a batch dies.
To disk or R2, on your schedule. Cancel and nothing is deleted, because nothing was ever on our servers.
“What did I make today?” and “did last month's traffic ever pay off?” have different answers, and one report can't give you both.
Same campaign, same five weeks, the same 30.1% overall — and week by week the verdicts barely agree. The week of 22 June reads +107.8% on click date and +3.9% on payout date.
iGaming counts registrations and first deposits. Nutra counts lander CTR, leads and approvals. Build columns from your own formulas and save them as a preset per vertical.
Weighted split across offers and landers with a fallback. Fixed or random rotation, sticky per visitor.
Country, OS and device allow-block lists, plus sub conditions combined with everything else.
Bots to a 404, a blank or a safe page. Duplicate clicks deduped so postbacks attribute correctly.
First time through, budget 30–45 minutes: DNS and your network's postback take most of it. Every domain after that is under two minutes.
Six years buying traffic. We built Roitrack because self-hosted trackers wanted $130+ a month the moment we needed more than one user and ten domains. We run our own campaigns on it, and support reaches the people who wrote it, not a ticket queue.
It is early. No customer count, no case studies, because there aren't any yet. The trial is issued by hand over Telegram or email for the same reason: we want to hear what's missing from everyone who tries it, and the people who start now decide what gets built next.
Typical self-hosted trackers ask $130+ once you pass one user and ten domains. This is the whole price, at any size.
One licence per server. Add a VPS from any provider, roughly $10–15 a month.
No. One ads_read token covers the whole portfolio, read per campaign node. No ad account ID, no enumeration, and accounts you add later need no reconnection.
No. Spend is pulled daily into your own database, so everything up to the ban is already on your server. You lose Ads Manager, not your record of what that campaign did.
Each is read in its own currency and converted to USD at a rate pinned to that day. If one can't be priced, Roitrack writes nothing rather than a partial total that looks complete.
Through the Conversions API. Your network's postback becomes a Facebook event, mapped per campaign — your conversion or any of event1–event10 to any standard event — matched on fbclid. Tokens are write-only.
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.
No. Campaigns, sources and numbers live on your VPS. The licence check is the only thing that talks to us and it carries no campaign data.
A couple of minutes per campaign. Any network works through URL templates and macros, so if it fires an S2S postback it works here. Run both in parallel for a week and compare.
Your data stays on your server. The licence stops validating after a short grace period, so the app stops working until you resubscribe. Nothing is deleted.
Fourteen days, the full version, no card.