Flows & targeting
A flow binds offers and landers together and decides who reaches them. A campaign can hold several flows, and each click is routed to one of them.
How a click picks a flow
- Every flow whose targeting matches the click is a candidate.
- One is chosen from the candidates by weight.
- If nothing matches, the default fallback flow serves the click.
- If nothing matches and there is no fallback flow, the click gets a 404.
That last case is worth designing against. A campaign made entirely of narrow flows will drop any visitor who falls outside all of them, and a dropped click is a click you paid for. Keeping one fallback flow with no targeting is the usual way to avoid it.
Weight
Weight is a share, not a percentage — three flows weighted 50 / 30 / 20 split the same way as 5 / 3 / 2.
Weight 0 pauses a flow for new traffic while keeping it and its statistics. On campaigns set to fixed rotation, visitors already assigned to that flow keep it, so an in-progress funnel is not broken by pausing.
Default fallback flow
Tick Default fallback flow on the flow that should catch everything else. Its targeting is not used to decide the fallback — that is the point of it.
Country, OS and device
Each of the three works the same way:
- Whitelist — only the values you list match
- Blacklist — everything except the values you list matches
- Empty list — everything matches
The three combine with and. A flow set to United States + iOS + mobile serves an iPhone visitor in the US, and nobody else — an American on desktop is not a partial match.
Sub conditions
Route on the values your traffic source puts on the click. This is what lets one campaign send, say, its brand-name adsets to a different lander than its cold ones, without splitting the campaign in two.
Press Add condition and build a row: which sub, which comparison, and what to compare against.
| Comparison | Matches when |
|---|---|
| is | The sub equals the value exactly |
| is not | The sub is anything other than the value |
| in | The sub is one of a comma-separated list |
| not in | The sub is none of a comma-separated list |
| is empty | The sub was not sent, or arrived blank |
| is not empty | The sub has some value, whatever it is |
Some examples:
sub2 is artem— only clicks from that buyer’s adsetssub3 not in 12345, 67890— everything except two adsetssub7 is empty— clicks where the source sent no placement
The sub dropdown shows the names you gave each slot on the traffic source (sub2 · Adset name), so you do not have to remember which slot is which. Name them under Traffic sources if they are still bare numbers.
How conditions combine
Every condition must match, and they apply on top of the country, OS and device rules rather than replacing them. A flow with a country whitelist and two sub conditions serves a click only when all four things hold.
There is no “match any” mode. To express alternatives, use in with a list — sub3 in 111, 222, 333 — or put each alternative on its own flow.
Matching details
- Capitalisation and stray spaces are ignored. A source sending
Artemmatches a condition written asartem. You cannot see what casing a platform uses, so matching on the visible text is the only behaviour you can predict. inandnot intake a comma-separated list. Spaces around the commas are fine:111, 222 ,333is three entries.- Blank means empty. A sub the source never sent and a sub that arrived blank are treated the same, and both are what is empty matches.
Bot filtering
Hide the offer from bots stops automated visitors reaching the offer. Choose what they get instead:
- Show 404 — the page does not exist
- Show a blank page — a bare 200 response
- Redirect to a safe page — a URL you nominate
The decision happens after the flow has been picked, so your country, OS, device and sub rules still apply first and real visitors are untouched. Filtered visits are still recorded and marked as bots, so you can see what was turned away rather than watching traffic quietly vanish.
Detection reads the user agent, which catches crawlers, link previewers, scripts and headless browsers. It does not catch traffic that deliberately disguises itself as an ordinary browser.
Checking it works
Open your tracking link with the parameters you are targeting on:
https://your-tracking-domain.com/click/<token>?sub2=artem&sub3=12345You should land on the offer or lander belonging to the flow you expect. Then change one value so it no longer matches, and confirm you land somewhere else — that proves the condition is being applied, rather than the flow simply being the only one available.
If you get a 404 instead of the offer, no flow matched and there is no fallback flow. Either widen a flow’s targeting or add one with no rules at all.