Skip to main content

Paths and Rules

This is the engine that decides which destination URL each visitor sees. Two layers:

  1. Default Paths — the baseline distribution. Without rules, every visitor goes through here.
  2. Rules — conditional overrides. If a rule's criteria all match, the rule's paths are used instead of the default.

Rules are evaluated first (highest priority wins). If no rule matches, the default paths are used.

Default Paths

Each link has at least one default path. A path contains one or more landing pages, offers, or direct URLs — the actual destinations that get picked from.

When a visitor arrives, the link's Distribution Type determines how the path's URLs are picked.

Distribution Types

Distribution TypeHow the URL is picked
RandomEqual-probability random pick across all enabled URLs
WeightedWeighted random — each URL has a weight; pick probability is proportional
SequentialCycle in order: 1st visitor gets URL A, 2nd gets URL B, 3rd gets URL A, etc.
GeoPicks based on geo rules; falls back to first URL if no rule matches

Adding Paths

A link can have multiple default paths, each with its own weight. Use this when you want grouped distribution — e.g. "70% of traffic to Path 1 (which has its own A/B test inside), 30% to Path 2 (different campaign)."

Path Weights

Each path has a numeric weight. When the system picks a path, it picks proportionally to weight:

  • Weights 1, 1 → 50/50 split
  • Weights 70, 30 → 70/30 split
  • Weights 4, 1 → 80/20 split

Weights don't have to sum to 100 or any specific number. The system normalizes them.

URL Weights Inside a Path

Within a single path, each URL (landing page, offer, or direct URL) ALSO has its own weight. The same proportional pick applies.

So you can have a setup like:

  • Path 1 (weight 70) → A/B between Lander-A (weight 1) and Lander-B (weight 1)
  • Path 2 (weight 30) → Always goes to Offer-X

70% of clicks split 50/50 between Lander-A and Lander-B. 30% of clicks go to Offer-X.

Direct URL vs Lander vs Offer

Three ways to add a destination to a path:

TypeWhen to Use
Direct URLOne-off destinations you don't reuse elsewhere. Just paste the URL.
LanderReusable landing pages defined in Landers. Same lander can be added to many paths across many links.
OfferConversion-tracked destinations defined in Offers, often with payouts and caps.

The mechanics are identical from the visitor's perspective — the system picks one URL and redirects to it. Landers and Offers are organizational conveniences for managing destinations across many links.

Rules

A Rule overrides the default path distribution when its criteria all match the visitor.

Anatomy of a Rule

FieldWhat It Does
NameFree-form label for the rule
PriorityHigher numbers evaluated first. If multiple rules match, the highest-priority one wins.
BotWhen ON, this rule only matches bot visitors. When OFF (default), only non-bot visitors.
EnabledDisabled rules are skipped entirely
CriteriaList of conditions ALL of which must match (AND logic)
PathsThe destinations to use when this rule wins

How Priority Works

Rules are sorted by priority descending. The first one whose ALL criteria match is selected. Lower-priority rules below a matching rule are not evaluated.

Example:

RulePriorityCriteriaResult
US Mobile Special100country_code is US AND device_type is mobileHighest priority
US Default50country_code is USMid priority
Default Path(no rule)(matches everything that no rule caught)Fallback

A visitor from US on a mobile device matches the first rule (priority 100) and gets that rule's paths. The "US Default" rule never evaluates.

A visitor from US on desktop misses the first rule (mobile criterion fails), matches "US Default" (priority 50), and gets that rule's paths.

A visitor from Germany matches neither rule and falls through to the link's default paths.

Adding Criteria

Each criterion has three parts:

  • Field — what visitor attribute to check (country_code, device_type, utm_source, etc.)
  • Operator — how to compare (is, is not, contains, matches regex, etc.)
  • Value — what to compare against

Available Fields

Grouped by what they describe:

Geo (from visitor's IP address)

FieldExamples
country_codeUS, GB, BR
country_nameUnited States
region_codeCA (California), NY
region_nameCalifornia
cityLos Angeles
postal_code90210
timezoneAmerica/Los_Angeles
latitude / longitudenumeric coordinates

Device (from visitor's User-Agent)

FieldExamples
device_typedesktop, mobile, tablet
device_brandApple, Samsung, Google
device_modeliPhone 15, Galaxy S23
os_nameiOS, Android, Windows, macOS
os_version17.0, 14
browser_nameChrome, Safari, Firefox, Edge
browser_version119.0

Network

FieldExamples
ispComcast, T-Mobile USA
connection_typewifi, cellular, cable, dsl
is_proxytrue / false
is_vpntrue / false
is_tortrue / false
is_datacentertrue / false
ip_address203.0.113.42

Bot Detection

FieldExamples
is_bottrue / false
bot_nameGooglebot, Bingbot
bot_categorysearch engine, crawler

Language

FieldExamples
language_codeen, es, fr
language_nameEnglish, Spanish

UTMs and Click IDs

FieldExamples
utm_sourcefacebook, google
utm_mediumcpc, email
utm_campaignspring-promo-2026
utm_contentheadline-a, image-blue
utm_term(search keyword)
utm_id(campaign identifier)
click_id_typegclid, fbclid, msclkid, ttclid, etc.
click_id_platformgoogle_ads, meta, microsoft_ads, tiktok_ads

Referrer

FieldExamples
referrer_urlhttps://example.com/some-page
referrer_domainexample.com

Custom Variables

FieldExamples
external_id(your own tracking ID from URL)
v1 through v10Custom variables 1-10. Mapped via Sources.

Time-based (computed)

FieldExamples
hour_of_day0 through 23 (UTC)
day_of_weekmon, tue, wed, etc.

Operators

OperatorMeaningExample
isExact match (case-insensitive for strings)country_code is US
is notInverse of "is"country_code is not CA
containsSubstring match (case-insensitive)user_agent contains iPhone
does not containInverse of "contains"referrer_url does not contain spam-domain.com
matchesRegex match (case-insensitive)utm_campaign matches ^summer-
inValue is one of a comma-separated listcountry_code in US,CA,GB
not inValue is NOT in the listcountry_code not in US,CA

Bot vs Non-Bot Rules

Each rule has a Bot toggle that determines which visitor population it applies to:

  • Bot OFF (default) → rule only matches NON-bot visitors. Real human traffic.
  • Bot ON → rule only matches BOT visitors. Crawlers, scrapers, search engines.

A rule with Bot: OFF and a visitor that's a bot will never match. And vice versa.

This lets you set different routing for SEO crawlers vs real visitors. For example, send Googlebot to a stripped-down indexable page while sending humans through the A/B test.

Cloaking concern

Showing search engines different content than humans is the textbook definition of "cloaking" and gets accounts banned by Google, Meta, and other ad platforms. Only use bot rules to send bots to non-indexable error pages or to skip them — don't use bot rules to show different commercial content to bots vs humans.

Rule Paths

A rule has its own paths, separate from the link's default paths. Same structure: each path has weights, each URL inside has weights.

When a rule matches, the rule's paths replace the default paths for picking destinations.

Worked Examples

Example 1: 50/50 A/B test

  • Distribution Type: Random
  • Default Path 1: weight 1, contains 1 landing page (Variant A)
  • Default Path 2: weight 1, contains 1 landing page (Variant B)
  • No rules.

Each visitor → 50% chance Variant A, 50% chance Variant B.

Example 2: Country-specific landing pages

  • Default paths: /landing-international (catches everyone else)
  • Rule: priority 10, criteria country_code in US,CA, paths → /landing-na
  • Rule: priority 9, criteria country_code in GB,IE, paths → /landing-uk
  • Rule: priority 8, criteria country_code in DE,AT,CH, paths → /landing-de

US/Canada visitors → North America page. UK/Ireland → UK page. German-speaking → German page. Everyone else → International page.

Example 3: Mobile-first vs desktop split

  • Distribution Type: Random
  • Default paths: 50/50 between /desktop-lander-a and /desktop-lander-b
  • Rule: priority 10, criteria device_type is mobile, paths → /mobile-lander (single URL, no A/B)

Mobile visitors all get the mobile-optimized lander. Desktop visitors get A/B tested between two desktop landers.

Example 4: Time-of-day routing

  • Default path: /standard-page
  • Rule: priority 10, criteria hour_of_day in 0,1,2,3,4,5, paths → /late-night-page

Visitors arriving between midnight and 6 AM UTC see the late-night variant.


Next Steps

  • Links — All other link configuration fields
  • Landers — Reusable landing pages with URL tokens
  • Offers — Offers with payout and cap configuration
  • Sources — Map URL parameters into rule fields (v1-v10, external_id)