Keitaro sync flow — what data, how often
Last updated: May 19, 2026
Keitaro sync flow — what data, how often
Keitaro syncs every 15 minutes (incremental) + full 30-day backfill on first sync. The mapping system links Keitaro campaigns to Wevion ad campaigns so conversion data attributes correctly. Breakdowns are available by sub-ID, landing page, offer, and geo.
Who is this for
Affiliate marketers who connected Keitaro (com-107) and want to understand:
What data flows + how often
How to set up campaign mappings
How to read sub-ID and other breakdowns
What syncs from Keitaro
Backend uses apps/backend/src/tracker-hub/sync/ plus 11+ tracker-* repositories. Pulled data:
Campaigns
Campaign ID, name, status (active/paused/archived/deleted — Keitaro states mapped to Wevion canonical)
Domain
Traffic flow rules
Last modified timestamp
Offers
Offer ID, name, payout, currency, country
Linked landing pages
Affiliate network (if applicable)
Landing pages
Landing page ID, name, URL
Country + language
Flows
Flow ID, rules (filter on traffic source, user agent, GEO, etc.)
Distribution weights
Traffic sources
Source ID, name (Facebook, Google, TikTok, etc.)
Tokens / template
Click logs
Click ID (used as sub_id for Wevion attribution)
Timestamp
Sub-IDs (sub_1 through sub_N — typically sub_1 = click_id)
IP + user agent + GEO + device
Referring URL
Campaign + flow + offer
Click logs syncs incrementally every 15 min.
Conversions
Conversion ID, linked click ID
Status (confirmed, pending, rejected, refunded)
Revenue + currency
Conversion timestamp
Conversions sync every 15 min, with Keitaro state mapped to Wevion canonical state.
Mapping system
The mapping system is critical for correct attribution. Without mappings, Keitaro conversions don't link to specific Wevion ad campaigns.
Concept
Keitaro has Campaign X for "Summer Sale" (Keitaro campaign ID
12345)Wevion has Campaign Y for "Summer Sale" on Meta (Wevion campaign ID
abc-xyz)The mapping connects: Keitaro
12345↔ Wevionabc-xyzAfter mapping: every Keitaro conversion for campaign
12345is attributed to Wevion campaignabc-xyz
Setup mappings
Verified endpoints:
Endpoint | Method | Use |
|---|---|---|
| POST | Initial wizard (suggest auto-mappings based on names/UTM) |
| POST | Auto-detect potential mappings |
| GET | List current mappings |
| PUT | Update mappings |
| GET/POST | Define mapping rules (e.g. by sub_1 prefix) |
Mapping rules
Beyond 1:1 manual mappings, you can define rules:
"All Keitaro campaigns with
sub_1starting withfb_→ attribute to Meta campaign Y""All conversions from Keitaro flow
flow-id-XYZ→ attribute to Wevion campaign Z""Wildcard: Keitaro campaign name matching pattern
Summer_*→ Wevion campaignSummer Sale 2026"
Rules apply automatically as new Keitaro campaigns are created.
Breakdowns
Reports available at /api/v1/trackers/:configId/breakdowns/{type}:
Sub-ID breakdown (/breakdowns/sub)
Group conversions by sub-ID values:
See which
sub_1values (typically click_id or ad_id) drove conversionsUseful for: ad-level analysis when sub_1 = ad creative ID
Landing breakdown (/breakdowns/landing)
Group by landing page:
Which landing pages convert best
Tied to A/B test results when landings are variations
Offer breakdown (/breakdowns/offer)
Group by Keitaro offer:
Per-product / per-offer revenue + conversion rate
Useful for multi-offer affiliate programs
Geo breakdown (/breakdowns/geo)
Group by country / region:
Per-country conversion rates
Useful for geo-targeted campaigns optimization
Sync frequency
Data type | Frequency |
|---|---|
Click logs | 15 min (incremental) |
Conversions | 15 min (incremental) |
Campaigns | 15 min |
Offers + landing + flows | 15 min |
Initial backfill | Last 30 days on first sync |
Full re-sync (manual) | Available via force-sync, optional 90-day window |
Conversion state mapping
Keitaro tracks conversions in 4 main states. Wevion maps them to canonical states:
Keitaro state | Wevion canonical |
|---|---|
| active (counted) |
| paused (excluded from real-time) |
| archived (historical only) |
| deleted (excluded entirely) |
This means refunds and rejections (Keitaro side) propagate correctly to Wevion's revenue reports.
How Wevion uses Keitaro data
In analytics
Dashboard: Keitaro-attributed revenue per ad campaign
Cross-Channel Analytics: Keitaro is a "source" alongside browser pixel attribution
Per-campaign breakdown: drill into ad campaign → see Keitaro conversions
In ad-platform forwarding
Wevion can forward Keitaro conversions to Meta CAPI / Google Conversions API / TikTok Events API
Configuration at
/trackers/:configId→ Forwarding tabEnables server-side conversion signals from your tracker to your ad platforms (no browser dependency)
In rules
Create rules that fire based on Keitaro conversion data
E.g. "If Keitaro conversion rate on this Keitaro campaign drops below 2% over 3 days, pause linked Wevion campaign"
Sub-IDs deep dive
Most affiliates use sub_1 = {click_id} as the universal identifier. Wevion's postback integration also uses click_id for tracker→ad-platform attribution.
Other common sub usages:
sub_2= ad creative variant IDsub_3= landing page variant IDsub_4= audience segmentsub_5= day-part / time slot
Sub-ID semantics are tracker-side conventions; document yours for clarity within your team.
Common questions
"Mapping wizard auto-suggests wrong mappings": review suggestions before saving. Manual override always available.
"How does Wevion choose which Keitaro conversion = which Wevion ad?": via mapping (campaign-level) + click_id (visit-level). For visit-level, ensure your ad URL passes click_id in UTM or as sub_1 to Keitaro.
"Conversion shown in Keitaro, not in Wevion": 15-min sync delay. If still missing after 1h, check mapping exists for the Keitaro campaign.
"Bulk sub_id breakdown slow": large tracker installs (millions of clicks). Use date filters to narrow.
"Conversion attributed to wrong campaign": mapping issue. Review
/trackers/:configId/mappings.
Related
Connect Keitaro via Tracker Hub — prerequisite
Postback (S2S) tracking overview — companion to tracker sync
Data and sync troubleshooting — issue resolution