Axalot

Streams

How campaign stream sets route traffic in Axalot: order, filters, pixels, rotation, weights, active states, and safe setup patterns.

What streams do

Streams are the routing layer inside a Axalot campaign. The campaign receives a click through its tracking link, reads the request data, checks stream sets in order, and sends the click to the first stream whose filters match.

A stream set contains three operational blocks:

Filters

Rules that decide whether a click belongs to this stream set.

Pixels

Tracker pixels attached to clicks and events that pass through this stream.

Rotation

One or more active destination flows with weights.

Streams are campaign-local

Stream sets live inside one campaign. They do not change the Traffic Source, domain, offer link, landing, PWA, pixel, or push records themselves; they only reference those records for routing.

Console path

  • Console / Tracker / Campaigns / Create Campaign
  • Console / Tracker / Campaigns / Edit Campaign
  • Console / Tracker / Campaigns / Streams / Filters
  • Console / Tracker / Campaigns / Streams / Pixels
  • Console / Tracker / Campaigns / Streams / Rotation

Evaluation order

Axalot treats stream order as part of the routing logic. More specific streams should be above broader streams.

The click enters the campaign through the saved tracking URL.

Axalot checks the first active stream set.

If the stream has filters, the click must satisfy the filter logic configured in the filter dialog.

If the click matches, Axalot uses that stream's active rotation items.

If the click does not match, Axalot continues to the next active stream set.

Catch-all streams go last

A stream without filters is a catch-all stream. If it is placed above filtered streams, it can accept traffic before the lower streams get a chance to match.

Stream limits

These limits are enforced by the current campaign form and validation schema.

ObjectCurrent limit
Stream sets per campaign5
Filters per stream set20
Pixels per stream set5
Rotation items per stream set5
Rotation item weight1-100
Campaign must have active streamsAt least 1 active stream
Stream must have active rotation itemsAt least 1 active rotation item

Stream set anatomy

Each stream set has a name, active state, filters, pixel selection, and rotation table.

ControlWhat it doesNotes
NameInternal label for the stream set.Use names that describe the audience or fallback role, for example US mobile, EU desktop, or Fallback.
ActiveEnables or disables the stream set.Axalot prevents saving a campaign with no active streams.
FiltersOpens the stream filter dialog.Filter count appears on the stream card when filters exist.
PixelsSelects pixels for the stream.Up to 5 pixels can be selected per stream.
DuplicateCopies the stream set.Useful for making a similar geo/device split.
DeleteRemoves the stream set.The form keeps at least one stream.
Drag handleChanges the stream order.Order matters because matching is evaluated from top to bottom.

Filters

Filters decide whether a click should enter a stream. They are configured from the stream card through the filter dialog.

The dialog supports rule groups and logic modes from the Axalot report rule builder. Use it to combine request, audience, geo, and Traffic Source parameter checks.

Request filters include IP version, IP address/range/CIDR, user agent, referrer, X-Requested-With, Accept Language, and mapped query parameters.

Audience filters include MT fields such as mobile state, device type, OS, browser name, browser engine, and bot state. Use them for mobile/desktop splits, browser-specific routing, or bot QA.

Geo filters include continent, country, region, city, postal code, and timezone. Use country and timezone carefully because each can be added only once per stream.

Source parameter filters use the GET parameter mapping from the selected Traffic Source. They are useful for routing by campaign id, creative id, keyword, source, UTM fields, click id, or sub1-sub10.

Filter logic

Use a stream filter only when the route has a real business rule. A clean campaign usually has a few specific streams and one final fallback.

Stream 1: US mobile traffic
Stream 2: US desktop traffic
Stream 3: All remaining traffic

If a stream uses multiple rules, the dialog controls whether the rules are combined strictly or broadly. A strict group is used when every condition must match. A broad group is used when any one condition should be enough.

Supported filter examples

GoalFilter setup
Route only US trafficCountry IS US
Exclude a countryCountry IS NOT DE
Route mobile trafficIs Mobile IS yes
Route Android trafficOS Name IS Android
Route Chrome trafficBrowser Name IS Chrome
Catch empty referrer trafficReferrer text filter with the empty value option
Route a Meta campaign idTraffic Source parameter for ad_campaign_id IS the expected value
Exclude a known IP rangeIP IS NOT 192.168.1.10-192.168.1.20

Filter validation rules

Axalot validates stream filters before saving the campaign.

Filter typeValidation
CountryISO-2 country values; only one country filter per stream.
TimezoneValid IANA timezone values; only one timezone filter per stream; up to 20 values.
Accept LanguageISO 639-1 language values; up to 20 values.
Audience fieldsMust use the field's supported dropdown values. Every audience field includes Unknown; is_mobile and is_bot use yes, no, or unknown.
IPIPv4, IPv6, IP range, or CIDR; up to 100 values.
Postal CodeDigits only, 3-10 characters; up to 20 unique values.
Text filtersUp to 5 tags for most text fields; safe letters, numbers, spaces, dots, dashes, underscores, /, :, +, #, and parentheses.
Query parametersIS or IS NOT; up to 20 unique values per parameter filter.

Do not describe routing with unsupported request fields

Campaign stream validation does not support host, method, or generic query_parameter filters. Use mapped Traffic Source parameters instead of generic query-parameter rules.

Pixels

Pixels are selected per stream set. This lets one campaign send different accepted traffic segments to different pixel configurations.

Use stream-level pixels when:

  1. Different traffic segments belong to different ad accounts.
  2. A test stream should report to a separate pixel.
  3. A fallback stream should avoid sending events to the same pixel as the primary stream.
  4. A campaign has multiple destinations but only some traffic should activate a specific pixel.

Pixel selection is not global

Selecting a pixel on one stream does not automatically select it on every stream. Add the same pixel to each stream that needs it.

Rotation

Rotation is the destination table inside a stream. A stream can have up to 5 rotation items. Each item stores an active state, optional pre-landing, destination type, destination value, required offer link, and weight.

Rotation columnWhat it controls
Pre-landingOptional page shown before the main destination.
PWA / LandingSelects whether the main destination is a PWA or landing.
Offer LinkRequired offer link for the flow.
WeightInteger from 1 to 100 used by weighted rotation.
ActionsDuplicate, delete, and active state controls.

Offer link is required

Every rotation item must have an offer link. If the item uses PWA or Landing, the PWA or Landing is also required.

Destination flow modes

Axalot stores the flow mode from the selected fields. You do not need to type the mode manually.

Select PWA, choose a PWA, and select an offer link. Use this when the click should enter a PWA path before continuing to the offer.

Select Landing, choose a landing, and select an offer link. Use this when the click should see a landing page before the offer.

Select a pre-landing plus either a PWA, landing, or direct offer link. Use this when the first page qualifies or warms the visitor before the main destination.

Leave the landing stage empty and select only the offer link when the click should go directly to the offer.

System destination options are available in the landing selector: 404-NGINX, 404-CF, and Milk. Use them only for intentional operational routing, not as a replacement for a normal fallback offer.

Weights

Weights control how active rotation items share traffic inside one stream. The form accepts integer weights from 1 to 100.

SetupMeaning
One active itemWeight is effectively 100.
Two items, 50 and 50Even split between both active items.
Two items, 80 and 20The first item receives more traffic than the second.
Three items, alignedThe align action distributes weights across active rows as evenly as possible.

Use the align action after adding or duplicating rotation items when you want a neutral test split.

Weights belong to one stream

A weight affects only the rotation items inside the same stream set. It does not change how traffic is split between different streams.

Active states

Streams and rotation items both have active toggles.

ToggleResult
Stream inactiveThe stream is skipped during routing.
Stream activeThe stream can match traffic if its filters pass.
Rotation item inactiveThe destination item is not used by that stream.
Rotation item activeThe item can receive traffic according to its weight.

Axalot keeps the campaign routable by enforcing these minimums:

  1. At least one stream must stay active.
  2. Each stream must have at least one active rotation item.
  3. Each stream must keep at least one rotation item.
  4. Each campaign must keep at least one stream set.

Specific first, fallback last

Use this pattern for most campaigns.

1. US mobile
   Filters: Country IS US, Device Type IS Mobile
   Rotation: PWA A -> Offer Link A

2. US desktop
   Filters: Country IS US, Device Type IS Desktop
   Rotation: Landing A -> Offer Link A

3. Fallback
   Filters: none
   Rotation: Offer Link B

Creative or campaign split

Use Traffic Source parameters when the ad platform sends campaign, ad set, creative, or keyword values in the tracking URL.

1. Creative test A
   Filters: creative_id IS 12345
   Rotation: Landing A -> Offer Link A

2. Creative test B
   Filters: creative_id IS 67890
   Rotation: Landing B -> Offer Link A

3. Fallback
   Filters: none
   Rotation: Offer Link A

Landing A/B test

Use one stream and multiple rotation items when the audience is the same but destinations are being tested.

1. Main audience
   Filters: Country IS US
   Rotation:
     - Landing A -> Offer Link A, weight 50
     - Landing B -> Offer Link A, weight 50

Editing workflow

Create the broad campaign settings first: domain, Traffic Source, push group, cost model, tags, and note.

Rename the default stream from Set 1 to a meaningful audience name.

Add filters only for the audience difference that matters.

Select pixels for the stream if events should be sent for that segment.

Build rotation rows with the required offer links and any PWA or landing stages.

Add a final fallback stream without filters when the campaign should always have a valid route.

Save the campaign, then use the generated campaign link for QA.

Troubleshooting

SymptomWhat to check
Stream does not receive trafficConfirm the stream is active and above the fallback stream.
A lower stream never matchesCheck whether a filterless stream above it is catching all traffic.
Campaign cannot saveCheck required offer links, required PWA/Landing selections, active stream minimums, and validation messages.
Pixel events are missingConfirm the pixel is selected on the matching stream, not only on another stream.
Query parameter filter does not matchConfirm the Traffic Source maps the same GET parameter name used in the campaign tracking link.
Weight split looks wrongConfirm only intended rotation items are active and align weights if you want an even split.

On this page