Traffic Flows and Filters Guide
Complete guide to configuring traffic flows and filters in Simple TDS for intelligent traffic routing and distribution.
Table of Contents
Understanding Flows
A Flow is a traffic routing rule that determines where visitors go based on conditions (filters). Think of it as:
IF [visitor matches filters] THEN [send to target]
Each campaign can have multiple flows, and traffic is processed through them in priority order until a match is found.
How Traffic Processing Works
- Visitor clicks your campaign link
- System checks flows in priority order (highest priority first)
- For each flow, filters are evaluated
- First matching flow routes traffic to its assigned targets
- If no flow matches, traffic goes to the Exit Flow
Creating a Flow
Step 1: Navigate to Flow Creation
- Go to Campaigns in the sidebar
- Click on your campaign
- Go to the Flows tab
- Click Add Flow
Step 2: Configure Basic Settings
| Field | Description |
|---|---|
| Name | Descriptive name (e.g., "Mobile Ukraine Traffic") |
| Description | Optional notes about this flow |
| Priority | Higher number = checked first (1-100) |
| Active | Enable/disable this flow |
| Exit Flow | Mark as fallback for unmatched traffic |
| Unique Visitors Only | Count only first visit from each visitor |
Step 3: Add Filters (Optional)
Filters determine which visitors match this flow. A flow without filters matches ALL traffic.
Step 4: Assign Targets
Add one or more targets with weight distribution:
- Target: Select destination URL
- Weight: Relative traffic distribution (higher = more traffic)
- Active: Enable/disable this target assignment
Step 5: Save
Click Save to create the flow.
Flow Priority
Flow priority is determined by the order in the list β from top to bottom. Use the ββ arrows to reorder flows and change their priority.
Priority determines the order in which flows are evaluated:
- Higher priority = checked first
- Range: 1-100 (100 is highest)
- Default: 50
Priority Example
| Flow | Priority | Filters |
|---|---|---|
| Premium Mobile | 90 | Country=US, Device=Mobile |
| General Mobile | 70 | Device=Mobile |
| Desktop Traffic | 50 | Device=Desktop |
| Exit Flow | 10 | None (catches all) |
Processing order: Premium Mobile β General Mobile β Desktop Traffic β Exit Flow
Exit Flows
An Exit Flow is a special fallback flow that receives all traffic that doesn't match any other flow.
Why You Need an Exit Flow
Without an Exit Flow, unmatched traffic has nowhere to go, potentially resulting in errors or lost visitors.
Note: Every campaign must have at least one active Exit flow to handle traffic that doesn't match the main flow filters.
Configuring an Exit Flow
- Create a new flow or edit an existing one
- Enable the Exit Flow toggle
- Set the lowest priority (e.g., 1 or 10)
- Do NOT add any filters (it should match everything)
- Assign a target (e.g., a general landing page or Google.com)
Exit Flow Rules
- Only ONE Exit Flow per campaign is recommended
- Exit Flow should have no filters (or very basic ones)
- Exit Flow should have the lowest priority
- System validates that Exit Flow exists when saving campaign
Understanding Filters
Filters are conditions that check visitor attributes. They determine whether a visitor matches a flow.
Filter Components
| Component | Description |
|---|---|
| Type | What attribute to check (country, device, etc.) |
| Value | What to match against |
| Mode | Whitelist (include) or Blacklist (exclude) |
| Active | Enable/disable this filter |
Filter Types
Simple TDS supports the following filter types based on detected visitor characteristics:
Country Filter
Match visitors by their geographic location using ISO 2-letter country codes.
Type: country
How it works: System uses MaxMind GeoIP database or Cloudflare headers to detect visitor's country from IP address.
Value format:
- Single country:
US - Multiple countries (comma or semicolon separated):
US,CA,GBorUS;CA;GB - Newline separated for readability:
US CA GB
Examples:
Tier 1 countries (Whitelist):
US,UK,CA,AU,DE,FR,IT,ES
Block specific regions (Blacklist):
CN,RU,IN
Special codes:
XX- Unknown country (GeoIP lookup failed)LO- Local/private IP address (localhost, 192.168.x.x, etc.)
Country Code Reference: ISO 3166-1 alpha-2
Device Type Filter
Match visitors by their device category.
Type: device
How it works: System parses User-Agent header to detect device type.
Supported values:
mobile- Smartphones (iPhone, Android phones, etc.)desktop- Desktop and laptop computerstablet- Tablets (iPad, Android tablets, Kindle)tv- Smart TVs and streaming devicesgame console- PlayStation, Xbox, Nintendowearable- Smartwatches, fitness trackersunknown- Could not determine device type
Value format:
- Single device:
mobile - Multiple devices (comma separated):
mobile,tablet
Examples:
Mobile traffic only (Whitelist):
mobile
Mobile and tablet (Whitelist):
mobile,tablet
Block TV and game consoles (Blacklist):
tv,game console
Detection patterns: System checks User-Agent for keywords like mobile, android, iphone, ipad, tablet, smart tv, playstation, xbox, etc.
Operating System Filter
Match visitors by their operating system.
Type: os
How it works: System parses User-Agent header to identify OS.
Supported values:
windows- Windows 7, 8, 10, 11, etc.macos- macOS, Mac OS Xlinux- Ubuntu, Debian, Fedora, CentOS, etc. (excluding Android)android- Android OS (phones and tablets)ios- iPhone, iPad, iPod Touchchromeos- Chrome OS (Chromebooks)unix- BSD, Solaris, other Unix variantsunknown- Could not determine OS
Value format:
- Single OS:
ios - Multiple OS (comma separated):
ios,android
Examples:
Mobile operating systems (Whitelist):
ios,android
Desktop operating systems (Whitelist):
windows,macos,linux
Block Linux and Unix (Blacklist):
linux,unix
Case-insensitive: Values are normalized to lowercase for matching.
Browser Filter
Match visitors by their web browser.
Type: browser
How it works: System parses User-Agent header to identify browser.
Supported values:
chrome- Google Chromefirefox- Mozilla Firefoxsafari- Apple Safariedge- Microsoft Edge (Chromium-based)opera- Opera browserie- Internet Explorer (legacy)chromium- Chromium-based browsersbrave- Brave browservivaldi- Vivaldi browseryandex- Yandex Browserseamonkey- SeaMonkeyunknown- Could not determine browser
Value format:
- Single browser:
chrome - Multiple browsers (comma separated):
chrome,firefox,safari
Examples:
Modern browsers (Whitelist):
chrome,firefox,edge,safari
Block old browsers (Blacklist):
ie
Desktop browsers (Whitelist):
chrome,firefox,edge
Detection order: Edge is detected before Chrome (since Edge is Chromium-based), Opera before Chrome, etc.
Language Filter
Match visitors by their browser language preference.
Type: language
How it works: Extracted from Accept-Language HTTP header (browser setting).
Value format:
- ISO 2-letter language codes
- Single language:
en - Multiple languages (comma separated):
en,es,fr
Examples:
English speakers (Whitelist):
en
English and Spanish (Whitelist):
en,es
European languages (Whitelist):
en,de,fr,it,es
Block specific languages (Blacklist):
ru,zh
Common language codes:
en- Englishes- Spanishfr- Frenchde- Germanit- Italianpt- Portugueseru- Russianzh- Chineseja- Japanesear- Arabicuk- Ukrainian
IP Address Filter
Target or block specific IP addresses or IP ranges using CIDR notation.
Type: ip
How it works: Extracts visitor's real IP from X-Forwarded-For, X-Real-IP headers, or connection socket.
Value format:
- Single IPv4:
192.168.1.100 - Single IPv6:
2001:0db8:85a3::8a2e:0370:7334 - Multiple IPs (comma, semicolon, or newline separated):
192.168.1.100,192.168.1.101 - CIDR notation for ranges:
192.168.1.0/24,10.0.0.0/8 - IPv6 CIDR:
2001:0db8:85a3::/48
Examples:
Single IP (Whitelist for testing):
203.0.113.42
Multiple specific IPs (comma-separated):
203.0.113.42,203.0.113.43,203.0.113.44
IP range /24 (256 addresses):
192.168.1.0/24
Large network block /8 (16.7M addresses):
10.0.0.0/8
Block datacenter IPs (Blacklist):
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
IPv6 address:
2001:0db8:85a3::8a2e:0370:7334
IPv6 range:
2001:0db8:85a3::/48
CIDR Notation Primer:
/32- Single IP (255.255.255.255 mask)/24- 256 IPs (255.255.255.0 mask) - e.g., 192.168.1.0 to 192.168.1.255/16- 65,536 IPs (255.255.0.0 mask)/8- 16,777,216 IPs (255.0.0.0 mask)
IPv6 CIDR:
/128- Single IPv6 address/64- Standard IPv6 subnet (18.4 quintillion addresses)/48- IPv6 prefix typically assigned to sites
Use cases:
- Whitelist: Allow only your own IPs for testing
- Blacklist: Block VPN/proxy/datacenter IP ranges, competitors, known fraudulent IPs
- Blacklist: Block bot farms and scrapers
Referrer Filter
Match visitors based on the referring website or traffic source.
Type: referrer
How it works:
- For JavaScript redirects: Referrer passed as
?ref=URL parameter (more reliable) - For direct clicks: Extracted from
RefererHTTP header - If empty: Marked as
Direct
Value format:
- Domain or partial URL
- Supports wildcard
*for pattern matching - Multiple values (comma, semicolon, or newline separated)
Examples:
Traffic from Google (Whitelist):
google.com
Traffic from social media (Whitelist):
facebook.com,instagram.com,twitter.com,linkedin.com
Wildcard patterns:
*.google.com
*facebook*
Block specific referrer (Blacklist):
competitor-spy-tool.com
Multiple referrers with wildcards:
*.google.*,*.facebook.*,*.instagram.*
Matching behavior:
- Without wildcard: Checks if referrer contains the value (e.g.,
googlematcheswww.google.com/search) - With wildcard
*: Uses regex pattern matching (e.g.,*.google.*matcheswww.google.com,google.de, etc.)
Special case - Direct traffic: To match visitors with NO referrer, use a separate "No Referrer" filter type (see below).
- Referrer can be spoofed or blocked by browsers/privacy extensions
- Some browsers strip referrer for HTTPSβHTTP transitions
- Use as one of multiple filters, not as sole criterion
User Agent Filter
Target or block traffic based on browser User-Agent string.
Type: user_agent
How it works: Matches against the full User-Agent HTTP header sent by browser.
Value format:
- Text pattern (case-insensitive)
- Supports wildcard
*for pattern matching - Multiple patterns (comma, semicolon, or newline separated)
Examples:
Block specific bot (Blacklist):
Googlebot
Block multiple bots (Blacklist):
Googlebot,Bingbot,YandexBot,Baiduspider
Wildcard patterns to catch bot variants:
*bot*
*crawler*
*spider*
Block automated tools (Blacklist):
curl,wget,python-requests,*scraper*
Target specific browser version (Whitelist):
Chrome/120.0
Block old browser versions (Blacklist):
MSIE,Trident
Common bot patterns for blacklisting:
Googlebot,Bingbot,YandexBot,Baiduspider,DuckDuckBot,
facebookexternalhit,Slackbot,TwitterBot,LinkedInBot,TelegramBot,
WhatsApp,SemrushBot,AhrefsBot,MJ12bot,DotBot,BLEXBot,
SeznamBot,archive.org_bot,python-requests,curl,wget,
*scraper*,*spider*,*crawler*
Matching behavior:
- Without wildcard: Checks if User-Agent contains the value
- With wildcard
*: Uses regex pattern matching
Use cases:
- Block known scrapers and bots
- Block automated tools (curl, wget, scripts)
- Target/block specific browser versions
- Detect mobile apps vs browsers
is_bot filter). This User-Agent filter is for advanced custom rules.
Bot Detection Filter
Automatically block or allow detected bots using built-in bot detection.
Type: is_bot
How it works: System analyzes User-Agent patterns and IP characteristics to detect bots.
Value:
true- Match botsfalse- Match humans
Examples:
Block all bots (Blacklist mode):
Type: is_bot
Value: true
Mode: Blacklist
Allow only humans (Whitelist mode):
Type: is_bot
Value: false
Mode: Whitelist
Allow only bots (unusual - for testing):
Type: is_bot
Value: true
Mode: Whitelist
Bot detection methods:
- User-Agent analysis: Pattern matching against 100+ known bot signatures
- IP-based detection: Datacenter and hosting provider IP ranges
- Behavior patterns: Automated request characteristics
Detected bot categories:
- Search engine crawlers (Google, Bing, Yandex, Baidu, DuckDuckGo)
- Social media bots (Facebook, Twitter, LinkedIn, Telegram, WhatsApp)
- Monitoring services (Pingdom, UptimeRobot, StatusCake)
- SEO tools (SEMrush, Ahrefs, Moz)
- Scrapers and automated tools (curl, wget, python-requests, scrapy)
true to block bots while allowing humans.
Why use this instead of User-Agent filter?
- More comprehensive (combines UA + IP analysis)
- Regularly updated bot patterns
- Catches bots that mask User-Agent but use datacenter IPs
- Simpler configuration (no need to list all bot patterns)
Direct Traffic / No Referrer Filter
Match visitors who arrive with no referrer (direct traffic, bookmarks, typed URL).
Type: no_referrer (Special filter type - coming soon)
How it works: Checks if referrer is empty, null, or marked as "Direct".
Value: Not applicable (filter has no value - it just checks presence/absence)
Examples:
Allow only direct traffic (Whitelist):
Type: no_referrer
Mode: Whitelist
Block direct traffic (Blacklist):
Type: no_referrer
Mode: Blacklist
Use cases:
- Target traffic from bookmarks or typed URLs
- Block traffic without referrer (potential bots)
- Separate paid traffic (has referrer) from direct traffic
Filter Modes: AND vs OR
The Filter Mode determines how multiple whitelist filters are combined.
OR Mode (Default)
Traffic passes if it matches ANY whitelist filter.
Example with OR Mode:
- Filter 1: Whitelist Country =
US,CA - Filter 2: Whitelist Device =
Mobile
Results:
| Visitor | Country | Device | Result |
|---|---|---|---|
| A | US | Desktop | β PASS (US matches) |
| B | FR | Mobile | β PASS (Mobile matches) |
| C | FR | Desktop | β BLOCKED (nothing matches) |
Use OR when: You want to accept traffic matching ANY of your criteria.
AND Mode
Traffic passes only if it matches ALL whitelist filters.
Example with AND Mode:
- Filter 1: Whitelist Country =
US,CA - Filter 2: Whitelist Device =
Mobile
Results:
| Visitor | Country | Device | Result |
|---|---|---|---|
| A | US | Mobile | β PASS (both match) |
| B | US | Desktop | β BLOCKED (Device doesn't match) |
| C | FR | Mobile | β BLOCKED (Country doesn't match) |
Use AND when: You need precise targeting where ALL conditions must be met.
Changing Filter Mode
- Open the flow for editing
- Find the Filter Mode setting
- Select AND or OR
- Save the flow
Whitelist vs Blacklist
Each filter can operate in two modes:
Whitelist (Include)
- Traffic that matches the filter value is allowed
- Traffic that doesn't match is blocked (unless another filter allows it)
Example: Whitelist Country = US β Only US traffic passes
Blacklist (Exclude)
- Traffic that matches the filter value is blocked
- Traffic that doesn't match continues processing
Example: Blacklist Country = CN,RU β Traffic from China and Russia is blocked
Processing Order
- Blacklist filters are checked first
- If traffic matches ANY blacklist β BLOCKED immediately
- Then whitelist filters are checked
- Based on AND/OR mode
Combining Whitelist and Blacklist
Example:
- Blacklist IP:
192.168.1.100(block specific IP) - Whitelist Country:
US,CA(allow only US and Canada)
Processing:
- Is visitor IP
192.168.1.100? β BLOCK - Is visitor from US or CA? β If yes, PASS; if no, BLOCK
Click Limits
Flows support click limits to cap traffic volume.
Available Limits
| Limit Type | Description |
|---|---|
| Total Click Limit | Maximum clicks for this flow (lifetime) |
| Hourly Click Limit | Maximum clicks per hour |
Setting Click Limits
- Open the flow for editing
- Find the Click Limits section
- Enter values (leave empty for unlimited)
- Save the flow
Limit Behavior
When a limit is reached:
- Flow stops matching new traffic
- Traffic continues to next flow in priority order
- Counters reset appropriately (hourly resets every hour)
Use Cases
- Cap expensive traffic: Limit high-cost ad traffic
- A/B testing: Send first 1000 clicks to test variant
- Traffic selling: Limit buyer's purchased volume
Advanced Filter Examples
Example 1: Premium Mobile Traffic
Goal: Target iOS users from US on mobile devices
Configuration:
- Filter Mode: AND
- Filter 1: Whitelist Country =
US - Filter 2: Whitelist Device =
Mobile - Filter 3: Whitelist OS =
iOS
Example 2: Block Bot Traffic
Goal: Block known bot IPs and suspicious traffic
Configuration:
- Filter 1: Blacklist IP =
192.168.1.0/24,10.0.0.0/8(internal networks) - Filter 2: Blacklist ISP =
Google,Amazon,Microsoft(cloud providers)
Example 3: Geo-Targeted Campaign
Goal: Different flows for different regions
- Name: "US Traffic"
- Filter: Whitelist Country =
US - Target: US Landing Page
- Name: "EU Traffic"
- Filter: Whitelist Country =
DE,FR,GB,IT,ES - Target: EU Landing Page
- Name: "Exit Flow" (checked)
- No filters
- Target: Global Landing Page
Example 4: Time-Based Routing
Goal: Different targets for business hours vs off-hours
- Name: "Business Hours"
- Filter: Whitelist Hour =
9-17 - Filter: Whitelist Day =
Monday,Tuesday,Wednesday,Thursday,Friday - Target: Sales Team Chat
- Name: "Off Hours"
- No filters (Exit Flow)
- Target: Automated Response Page
Public Flow Statistics
Share flow performance data with partners, advertisers, or clients without giving them access to your account.
What Are Public Statistics?
Public Flow Statistics is a secure way to share real-time traffic data for a specific flow via a unique, unguessable URL. Perfect for transparency with partners while maintaining security.
Enabling Public Statistics
- Open the flow you want to share
- Go to the Information tab
- Find the Public Statistics section
- Toggle Enable Public Statistics to ON
- System generates a secure 64-character token
- Share the public URL:
https://yourdomain.com/public-flow-stats/YOUR_TOKEN
What Partners Can See
The public statistics page displays:
Overview Metrics:
- Total clicks
- Unique visitors (by IP)
- Conversions (if tracked)
- Bot traffic percentage
- Average conversion rate
Traffic Breakdown:
- Top countries with flags
- Device types (Mobile, Desktop, Tablet)
- Operating systems
- Browsers
- Referrers/traffic sources
Time-Based Analysis:
- Hourly traffic charts
- Daily trends
- Date range filtering
- Custom date selection
Geographic Distribution:
- Country-level traffic breakdown
- Flag icons for visual recognition
- Click percentages by country
What Partners CANNOT See
Public statistics are strictly read-only and limited:
- β Campaign names or tokens
- β Other flows in the campaign
- β Target URLs or destinations
- β Filter configurations
- β Organization details
- β Your account information
- β Financial data or payouts
- β Click IDs or personal visitor data
- β Ability to modify anything
Security Features
Unique Token:
- 64-character random token (cryptographically secure)
- Virtually unguessable (1 in 10^114 chance)
- No pattern or predictable sequence
Access Control:
- No authentication required (token is the key)
- Read-only access
- No rate limiting (partners can check anytime)
- Works across all devices and browsers
Token Management:
- Regenerate Token: Revokes old token, creates new one (use if token leaked)
- Disable Anytime: Toggle off to immediately block all access
- No History: Old tokens are permanently invalidated
Privacy:
- No personal visitor information shown
- IP addresses are never displayed
- Data is aggregated only
- Complies with GDPR (no personal data exposure)
Use Cases
Scenario: Affiliate network wants to verify traffic quality
Solution: Enable public stats, share token
Benefit: Build trust with transparency, no account access needed
Scenario: Advertiser wants proof of traffic volume and quality
Solution: Create dedicated flow for advertiser's offer, enable public stats
Benefit: Real-time verification, prove performance, win more deals
Scenario: Agency managing campaigns for clients
Solution: Enable public stats per client flow, embed in client portal
Benefit: Self-service reporting, reduce support requests
Scenario: Buying traffic from multiple sources, need to show quality
Solution: Separate flow per traffic source, enable public stats
Benefit: Compare sources, optimize spend, negotiate better rates
Sharing the Public URL
Copy URL directly from UI:
- Flow β Information tab β Public Statistics section
- Click "Copy Link" button
- Paste in email, chat, or client portal
URL Format:
https://yourdomain.com/public-flow-stats/abc123...xyz789
ββ 64-char token ββ
Embedding in websites:
<iframe
src="https://yourdomain.com/public-flow-stats/YOUR_TOKEN"
width="100%"
height="800px"
frameborder="0">
</iframe>
Revoking Access
Method 1: Disable Public Stats
- Toggle Enable Public Statistics to OFF
- All access immediately blocked
- Token still exists (can re-enable later)
Method 2: Regenerate Token
- Click Regenerate Token button
- Old token becomes invalid immediately
- New token generated automatically
- Share new URL with partners
When to revoke:
- Partner relationship ends
- Token accidentally leaked
- Suspect unauthorized access
- Regular security rotation (every 6-12 months)
Language Support
Public statistics page supports multiple languages:
- English (EN)
- Ukrainian (UA)
- Russian (RU)
- German (DE)
Language is auto-detected from browser settings or can be manually selected on the page.
Performance Notes
- Statistics are cached for 5 minutes (real-time with 5-min delay)
- No impact on your campaign performance
- Unlimited views by partners
- Mobile-friendly responsive design
Troubleshooting
Problem: Token not working
- Check if public stats are still enabled
- Verify token wasn't regenerated
- Ensure URL is complete (64 characters)
Problem: Stats not updating
- Wait 5 minutes for cache refresh
- Check if flow is still active
- Verify traffic is actually coming to this flow
Problem: Want to revoke access but forgot who has token
- Regenerate token (all old tokens invalidated)
- Only share new token with current partners
Best Practices
Flow Organization
- Use descriptive names: "US Mobile iOS" is better than "Flow 1"
- Document with descriptions: Add notes about flow purpose
- Keep priority gaps: Use 10, 20, 30... not 1, 2, 3... for easier insertions
- Review regularly: Remove or disable unused flows
Filter Efficiency
- Order by exclusivity: Most specific flows at highest priority
- Use blacklists sparingly: They apply globally and can cause unexpected blocks
- Test thoroughly: Use incognito mode and VPN to verify targeting
- Monitor statistics: Check if filters are working as expected
Common Mistakes to Avoid
| Mistake | Problem | Solution |
|---|---|---|
| No Exit Flow | Unmatched traffic errors | Always have one Exit Flow |
| Conflicting filters | Traffic unexpectedly blocked | Review filter logic carefully |
| Wrong filter mode | AND when OR was needed | Understand AND vs OR difference |
| Too many blacklists | Legitimate traffic blocked | Use whitelists when possible |
| Same priority | Unpredictable routing | Use unique priorities |
Performance Tips
- Critical filters first: Country and IP filters are fastest
- Minimize filter count: Each filter adds processing time
- Use caching: System caches flow configs for 60 seconds
- Disable unused flows: Reduces processing load
Troubleshooting
Traffic Not Routing Correctly
- Check flow priority order
- Verify filter values are correct (case-sensitive)
- Check filter mode (AND vs OR)
- Ensure flow is active
- Check click limits haven't been reached
All Traffic Going to Exit Flow
- Verify other flows have matching filters
- Check filter mode - AND requires ALL to match
- Ensure filters aren't conflicting
- Test with your own traffic using VPN
Filters Not Working
- Confirm filter is set to Active
- Check value format (country codes, IP format)
- Verify data is being detected (check click logs)
- Some data may not be available (e.g., ISP for some visitors)
Next Steps
- Targets & Conversions - Configure destinations and tracking
- Statistics & Analytics - Analyze flow performance
- Integration Guide - Connect with external systems