BATracker vs Keitaro: Cloud vs Self-Hosted Ad Tracker (2026)
Keitaro is a powerful, well-established self-hosted tracker with a loyal following. BATracker gives you a fully-managed cloud on a modern Node.js + ClickHouse stack — and still lets you self-host. Here's an honest, side-by-side look so you can pick the right tool.
1. The Short Version
Both BATracker and Keitaro are serious tools for performance marketers and media buyers. The historical difference has been philosophical: Keitaro is built to be self-hosted — you run the PHP application on your own server and own the whole stack — while BATracker is cloud-native, delivering a fully-managed service with zero server administration.
The headline: with BATracker you don't have to choose between cloud convenience and control. The default is a managed cloud on a modern Node.js + ClickHouse stack — but BATracker also offers an optional self-hosted deployment. If self-hosting is why you looked at Keitaro, you can have that with BATracker too, plus everything the cloud gives you.
2. What Keitaro Does Well
Let's be fair: Keitaro earned its reputation. It is a mature, feature-rich, license-based tracker that has been a mainstay in the affiliate world for years, and there are good reasons people run it:
- • Full control of your infrastructure. Because it's self-hosted, you decide where it lives, how it's configured, and who touches your data.
- • Data ownership. Your click and conversion data sits on your own server, which appeals to teams with strict data-residency or compliance requirements.
- • A license model with no per-event billing surprises. You pay for the software and run it on hardware you choose.
- • A large, established community. Years of guides, forum threads, and shared configurations exist.
If running your own server is genuinely what you want, Keitaro is a legitimate, capable choice. The trade-off is that you are the operations team: provisioning, patching, database tuning, SSL renewal, scaling, and uptime are all on you.
3. Cloud vs Self-Hosted — The Real Trade-off
Self-hosting gives you control, but it hands you a second job. Here's what each model actually asks of you day-to-day:
Self-Hosted (Keitaro model)
- • You provision and pay for the server.
- • You patch the OS and the application.
- • You tune and back up the database.
- • You handle SSL certificates and renewals.
- • You scale hardware as traffic grows.
- • You own uptime and incident response.
Managed Cloud (BATracker default)
- • Zero server administration.
- • No OS or app patching on your side.
- • No database tuning or manual backups.
- • Automatic, auto-renewing SSL for your domain.
- • Scales with the platform, not your hardware.
- • Sub-10ms redirects, no cold starts.
The nuance most comparisons miss: this isn't a permanent fork in the road. BATracker offers an optional self-hosted deployment as well. So the control that draws people to Keitaro is still available — you simply get the managed cloud as the easy default.
4. The BATracker Stack: Node.js + ClickHouse
Under the hood, BATracker runs a modern architecture built for real-time performance marketing at scale:
- • Fastify (Node.js) tracker — a lightweight, high-throughput redirect engine. BATracker markets sub-10ms redirects with no cold starts.
- • ClickHouse — a columnar database purpose-built for real-time analytics over huge event volumes, so multi-dimensional reports stay fast as you scale.
- • Redis — caches click data for fast postback lookups and buffers click writes with a crash-safety backup so clicks aren't lost on restart.
- • PostgreSQL for configuration and BullMQ for the job queue that processes conversions reliably.
That last point matters. Conversions run through a BullMQ queue with three retry attempts and exponential backoff, and every conversion gets a deterministic conversion ID — so a retry produces the same ID and can never create a duplicate row. The conversion is written to ClickHouse before side effects like postbacks and pixels fire, meaning even if a downstream delivery fails, the conversion itself is already safely recorded. Transaction-ID dedup and per-event-type dedup round out a pipeline designed so you don't lose or double-count data.
On top of that, click writes are batched to ClickHouse roughly every two seconds with the Redis backup, and reporting is fully real-time: campaign, offer, lander, traffic source, country, device, OS, browser, day, hour, and sub1–sub20 dimensions, all with visits, conversions, CR, revenue, cost, profit, ROI, EPC, CPC, CPA, and CSV export.
5. Server-Side Meta CAPI + TikTok with Dedup
Server-side conversion tracking is no longer optional in 2026 — ad blockers, ITP, and cookie restrictions eat browser-only pixels alive. BATracker ships native, server-side integrations for the two platforms that matter most to media buyers:
Meta Conversions API
Server-side events posted to the Graph API. Event names are mapped (sale/conversion → Purchase, lead → Lead, registration → CompleteRegistration, and more), with hashed user data (email, phone, external_id, geo) and fbc built from the fbclid. Access tokens are stored encrypted with AES-256-GCM.
TikTok Events API
Server-side events posted to the TikTok Business API. Mapped events (sale → CompletePayment, lead → SubmitForm, registration → CompleteRegistration, install → Download), hashed user data, and ttclid passthrough for accurate attribution.
The dedup that makes it reliable
BATracker sends the same event_id — the deterministic conversion ID — on the server-side event that the browser pixel also uses. Meta and TikTok automatically deduplicate the browser and server events, so you get the reliability of server-side tracking without double-counting conversions.
It goes further than a single pixel. A campaign can attach many pixels, each with its own platform event. And with custom conversions, you can map a postback event (say ?event=AddToCart) to a specific platform event on a specific pixel — so one funnel can fire a primary Purchase pixel and several custom event pixels. Pixel fires run in parallel, so one platform failing never blocks the others, and every fire is logged with platform, event name, full payload, HTTP status, and response for auditing.
6. Auto-SSL Custom Domains
Every BATracker workspace uses its own bring-your-own tracking domain — never a shared one. You add your domain, drop in a CNAME and a TXT record, and SSL is provisioned automatically through Cloudflare for SaaS: managed and auto-renewing. That means professional tracking URLs, better deliverability, and staying off shared blocklists — with none of the manual certificate wrangling that self-hosting typically involves. On a self-hosted PHP box, SSL setup and renewal are your responsibility; here it's handled for you.
7. Feature Comparison Table
A high-level, honest comparison of how the two approaches line up:
| Capability | BATracker | Keitaro |
|---|---|---|
| Deployment model | Managed cloud (default) + optional self-hosted | Self-hosted |
| Server administration | Zero (on cloud) | Yours to manage |
| Core stack | Node.js (Fastify) + ClickHouse + Redis + PostgreSQL | PHP |
| Analytics engine | ClickHouse, real-time columnar | Self-hosted database |
| Server-side Meta CAPI | Native, with event_id dedup | Varies by setup |
| Server-side TikTok Events | Native, with event_id dedup | Varies by setup |
| Custom conversions / multi-pixel | Yes, mapped per pixel | Varies by setup |
| S2S postbacks (click-ID based) | Yes, ad-blocker immune | Yes |
| Flows & weighted rotation | Yes (SIMPLE / MULTI_PATH / RULE_BASED) | Yes |
| Traffic filtering & bot detection | Extensive filter dimensions + UA / datacenter / proxy detection | Yes |
| Custom domains + SSL | Auto-SSL via Cloudflare for SaaS | Manual setup / renewal |
| Setup effort to first click | Sign up, add domain, go | Provision + install + configure server |
Keitaro entries are described at a high level; exact capabilities depend on your version and configuration. This table reflects how the two deployment philosophies compare, not fabricated specifics.
8. Which Should You Choose?
Here's the honest guidance:
Choose Keitaro if…
You specifically want to run your own PHP server, you have the operations skills (or team) to manage it, and full hands-on infrastructure ownership is a hard requirement. It's a proven, capable tracker for that use case.
Choose BATracker if…
You want the media-buying feature depth without becoming a systems administrator — real-time ClickHouse analytics, sub-10ms redirects, native server-side Meta CAPI + TikTok with event_id dedup, custom conversions and multi-pixel funnels, comprehensive traffic filtering and bot detection, flows with weighted rotation, and auto-SSL custom domains. And because BATracker also offers self-hosting, you keep the control option too. That's the whole point: cloud convenience or self-hosted control — your call, one platform.
The old assumption was that you had to trade convenience for control or control for convenience. BATracker breaks that trade-off. Start on the managed cloud today, and keep the door open to self-hosting whenever it suits you.
9. Frequently Asked Questions
What is the difference between BATracker and Keitaro?
Do I need to manage a server to use BATracker?
Does BATracker support server-side conversion tracking for Meta and TikTok?
Is BATracker’s analytics fast at scale?
Can I still self-host if I choose BATracker?
Cloud Convenience or Self-Hosted Control — You Choose
Get real-time ClickHouse analytics, sub-10ms redirects, native server-side Meta CAPI + TikTok with event_id dedup, custom conversions, and auto-SSL custom domains — on a fully-managed cloud that can also be self-hosted.
Start Your Free Trial