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
- Create a link with a default destination
- Add routing rules with conditions and destinations
- When a visitor clicks, rules are evaluated by priority
- 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):
| Priority | Use Case |
|---|
| 90-100 | Critical overrides, maintenance pages |
| 70-89 | Primary routing rules |
| 50-69 | Secondary/fallback routing |
| 30-49 | Low priority catches |
| 1-29 | Final 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
}