Skip to main content

Smart Routing

Smart routing lets you send visitors to different destinations based on conditions like their device, location, time of day, and more.

How It Works

  1. Create a link with a default destination
  2. Add routing rules with conditions and destinations
  3. When a visitor clicks, rules are evaluated by priority
  4. The first matching rule’s destination is used

Rule Types

Geographic Routing

Route by country, region, or city:
{
  "type": "geo",
  "conditions": {
    "countries": ["US", "CA", "GB"],
    "operator": "in"
  },
  "destinationUrl": "https://shop.example.com/en"
}
Operators:
  • in - Match if visitor is in listed locations
  • not_in - Match if visitor is NOT in listed locations

Device Routing

Route by device type or operating system:
{
  "type": "device",
  "conditions": {
    "devices": ["mobile"],
    "os": ["ios"]
  },
  "destinationUrl": "https://apps.apple.com/app/yourapp"
}
Device options: mobile, tablet, desktop OS options: ios, android, windows, macos, linux

Time-Based Routing

Route by time of day or day of week:
{
  "type": "time",
  "conditions": {
    "timezone": "America/New_York",
    "days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
    "startTime": "09:00",
    "endTime": "17:00"
  },
  "destinationUrl": "https://example.com/business-hours"
}

Referrer Routing

Route by traffic source:
{
  "type": "referrer",
  "conditions": {
    "referrers": ["facebook.com", "instagram.com"],
    "operator": "contains"
  },
  "destinationUrl": "https://example.com/social-landing"
}

A/B Testing (Percentage)

Split traffic for testing:
{
  "type": "percentage",
  "conditions": {
    "percentage": 50
  },
  "destinationUrl": "https://example.com/variant-b"
}

UTM Parameter Routing

Route by campaign parameters:
{
  "type": "utm",
  "conditions": {
    "utm_source": "newsletter",
    "utm_campaign": "spring_sale"
  },
  "destinationUrl": "https://example.com/newsletter-exclusive"
}

Language Routing

Route by browser language:
{
  "type": "language",
  "conditions": {
    "languages": ["es", "es-MX", "es-ES"],
    "operator": "in"
  },
  "destinationUrl": "https://example.com/es"
}

Visitor State

Route new vs returning visitors:
{
  "type": "visitor_state",
  "conditions": {
    "state": "returning"
  },
  "destinationUrl": "https://example.com/welcome-back"
}

Priority System

Rules are evaluated in priority order (1-100):
PriorityUse Case
90-100Critical overrides, maintenance pages
70-89Primary routing rules
50-69Secondary/fallback routing
30-49Low priority catches
1-29Final fallbacks
Higher priority = evaluated first. The first matching rule wins.

Combining Rules

Create sophisticated routing by combining multiple rules:
Priority 90: Block fraud IPs → Block page
Priority 80: Mobile + iOS → App Store
Priority 70: Mobile + Android → Play Store
Priority 60: EU countries → GDPR landing
Priority 50: Business hours → Sales page
Default: Standard landing page

Query Parameter Preservation

Rules can forward original query parameters:
{
  "forwardUtms": true,
  "preserveQueryParams": true
}