Flows & Traffic Routing in BATracker: Geo, Device & Dayparting Targeting
Not every visitor should see the same lander or the same offer. BATracker flows let you route each click to the perfect destination based on geo, device, ISP, sub IDs, and time — with weighted A/B rotation baked in. This guide shows you exactly how.
1. What Flows and Paths Are
In BATracker, a flow is the routing engine attached to a campaign. Its single job is to decide where each incoming visitor goes. It does that by sending the visitor to a path — a specific combination of a landing page and an offer.
Paths are the building blocks. Each path has a few important properties:
- • Weight — controls how much traffic the path receives in weighted rotation. A path weighted 70 gets roughly seven times the traffic of a path weighted 10.
- • isDefault (fallback) — marks a path as the safety net. If no rule matches a visitor, the default path catches them so nobody hits a dead end.
- • directLinking — skips the lander entirely and sends the visitor straight to the offer. Perfect for pre-sold traffic or offers that convert best without an intermediate page.
Because flows sit on BATracker's modern Node.js and ClickHouse stack with sub-10ms redirects, all of this routing logic runs without adding perceptible latency between the click and the destination.
2. The Three Flow Types
BATracker gives you three flow types, from dead-simple to fully conditional:
| Flow Type | What It Does | Best For |
|---|---|---|
| SIMPLE | A single path — one lander and one offer for every visitor. | Straightforward campaigns with one funnel. |
| MULTI_PATH | Several paths with weights, rotated by weight. | Split testing landers and offers side by side. |
| RULE_BASED | Ordered path rules route visitors to different paths by condition. | Geo, device, ISP, sub ID, and time targeting. |
Start with SIMPLE when you're validating an offer, move to MULTI_PATH when you want to test variants, and reach for RULE_BASED the moment different visitor segments deserve different destinations.
3. How Path Rules Work
In a RULE_BASED flow, path rules decide which path each visitor takes. Three concepts govern how a rule behaves:
Priority
Rules are ordered by priority, lowest first. The first matching rule wins — later rules are never evaluated for that visitor. Put your most specific rules at the top.
matchType
ALL means every condition must be true (AND). ANY means at least one condition must be true (OR). Combine multiple conditions to target precisely.
Conditions
The same dimensions as BATracker filters: country, region, city, device, OS, browser, ISP, connection type, sub IDs, WEEKDAY, TIME_OF_DAY, and more.
Because path rules share the same condition dimensions as BATracker's traffic filters, anything you can filter on you can also route on. And because time conditions evaluate in the campaign timezone, your dayparting always matches the hours you actually configured — not the tracker's server clock.
Golden rule: always keep a default (isDefault) path. Rules handle the segments you care about; the default catches everyone else so no visitor is ever wasted.
4. Path-Rule Actions Reference
Every path rule carries an action that determines what happens when it matches. Here is the full set:
| Action | What Happens | Typical Use |
|---|---|---|
| ALLOW | Explicitly permits the visitor to take the matched path. | Whitelisting a known-good segment. |
| BLOCK | Stops the visitor from proceeding down the path. | Excluding a geo, device, or bad segment. |
| REDIRECT | Sends the visitor elsewhere. | Diverting off-target traffic to a fallback. |
| DO_NOT_TRACK | Lets the visitor through but does not record the click. | Internal QA visits or excluded segments. |
| DO_NOT_POSTBACK | Tracks the visitor but suppresses outbound postbacks. | Segments you monitor but don't report upstream. |
DO_NOT_TRACK and DO_NOT_POSTBACK are the subtle power tools. Use DO_NOT_TRACK to keep test or internal traffic out of your reports entirely, and DO_NOT_POSTBACK when you want the conversion recorded in BATracker but not fired back to a traffic source — useful for segments you audit privately without polluting a platform's optimization signal.
5. Weighted A/B Rotation of Landers & Offers
A single path is not limited to one lander and one offer. Each path can hold multiple landers and multiple offers, and BATracker rotates them independently by weight:
Lander weights (PathLander)
Assign a weight to each landing page in the path. Two landers at 50/50 split traffic evenly; a 70/30 split favors your control while still testing a challenger.
Offer weights (PathOffer)
Assign a weight to each offer in the path. Rotate three offers by weight and let the data reveal which one earns the most per click.
Because lander and offer rotation are independent, you can A/B test two landers and split-test three offers inside the very same path at the same time — no need to clone campaigns. Pair this with BATracker's real-time ClickHouse reporting, which breaks results down by lander, offer, and sub ID, and you can crown a winner fast.
6. A Worked Routing Example
Let's route a real campaign. The goal: US visitors on mobile get a mobile-optimized lander with Offer A, UK visitors get Offer B, datacenter traffic is blocked, and everyone else falls back to a default offer — but only during business hours in the campaign timezone.
| Priority | matchType | Conditions | Action → Path |
|---|---|---|---|
| 10 | ALL | connection type is datacenter | BLOCK |
| 20 | ALL | country is US and device is mobile | ALLOW → US Mobile path (Offer A) |
| 30 | ALL | country is UK | ALLOW → UK path (Offer B) |
| 40 | ALL | TIME_OF_DAY between 09:00–17:00 | ALLOW → Default path |
Here's how the engine resolves a visitor. It walks the rules in priority order and the first match wins:
- • A visitor flagged as datacenter hits Rule 10 first and is blocked — they never reach an offer.
- • A US mobile visitor skips Rule 10, matches Rule 20 (both conditions true under ALL), and lands on the US Mobile path with Offer A.
- • A UK desktop visitor skips 10 and 20, matches Rule 30, and gets Offer B.
- • Everyone else falls to Rule 40. Because TIME_OF_DAY evaluates in the campaign timezone, they only reach the default path between 9am and 5pm — outside those hours no rule matches and you keep the visitor off a poorly-performing time slot.
Add a genuine default (isDefault) path as the ultimate safety net, and layer weighted landers and offers inside each path to A/B test within every segment.
7. Real-World Use Cases
Geo-targeting
Route US → Offer A, UK → Offer B, and everyone else → the default path. One campaign serves the right offer to each country instead of forcing a single geo-blind funnel.
Device targeting
Send mobile visitors to a mobile-optimized lander and desktop visitors to a desktop lander. Matching the page to the device typically lifts conversion rates without touching your ads.
Dayparting
Use WEEKDAY and TIME_OF_DAY conditions to run a campaign only 9am–5pm in the campaign timezone. Off-hours traffic that historically wastes budget simply doesn't reach the offer.
ISP & connection targeting
Route by ISP or connection type — for instance, keep datacenter traffic out with a BLOCK rule, or send a particular carrier's users to a tailored path.
Selective tracking with DO_NOT_TRACK / DO_NOT_POSTBACK
Apply DO_NOT_TRACK to internal QA or excluded sub IDs so they never touch your reports, and DO_NOT_POSTBACK to segments you want recorded in BATracker but not reported back to the traffic source.
8. Frequently Asked Questions
What is a flow in BATracker?
What is the difference between a path and a rule?
How do I set up geo-targeting with flows?
Does dayparting use my server time or the campaign timezone?
How do weighted landers and offers work in a path?
Route Every Visitor to the Perfect Offer
BATracker flows give you rule-based geo, device, ISP, and dayparting routing with weighted A/B rotation of landers and offers — all on a sub-10ms, real-time stack. Build smarter campaigns today.
Start Your Free Trial