Keitaro sync flow — what data, how often
Keitaro sync pulls campaigns + clicks + conversions every 15 min. Mappings link Keitaro campaigns to Wevion campaigns. Breakdowns by sub/landing/offer/geo.
Written By Salvatore Sinigaglia
Last updated About 4 hours ago
Keitaro sync pulls campaigns + clicks + conversions every 15 min. Mappings link Keitaro campaigns to Wevion campaigns. Breakdowns by sub/landing/offer/geo.
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 (
approved,pending,rejected,hold— Wevion canonicalConversionStatus) - Revenue + currency
- Conversion timestamp
Conversions sync every 15 min, with Keitaro state mapped to Wevion canonical conversion 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-xyz - After mapping: every Keitaro conversion for campaign
12345is attributed to Wevion campaignabc-xyz
Setup mappings
Verified endpoints:
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 conversions - Useful 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
Conversion state mapping
Wevion normalizes tracker conversion states to its canonical ConversionStatus (4 values):
Entity records (campaigns, offers, etc.) use a separate TrackerEntityStatus enum: active / paused / archived / deleted. This means rejections and holds (tracker 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 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 Meta postback store also keys on click_id / transaction data for attributing stored conversions.
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.
FAQ
How often does Keitaro data sync to Wevion?
Keitaro syncs incrementally every 15 minutes for click logs, conversions, campaigns, offers, landing pages, and flows, plus a ~30-day backfill on the first sync (TRACKER_HISTORY_LOOKBACK_DAYS, default 30). A manual force-sync is also available. If a conversion shows in Keitaro but not Wevion, it's usually the 15-minute delay — check the mapping if it's still missing after an hour.
Why aren't my Keitaro conversions attributed to specific ad campaigns?
The mapping system links Keitaro campaigns to your Wevion ad campaigns, and without it conversions don't attribute correctly. Set up mappings at /trackers/:configId/mappings — the setup wizard can auto-suggest matches based on names and UTM, and you can define rules like Keitaro campaigns whose sub_1 starts with fb_ mapping to a Meta campaign. Always review suggestions before saving.
What breakdowns can I see for Keitaro data in Wevion?
Wevion offers four breakdowns for Keitaro data: sub-ID, landing page, offer, and geo. The sub-ID breakdown groups conversions by values like sub_1; landing shows which pages convert best; offer gives per-product revenue and conversion rate; and geo shows per-country conversion rates. For large tracker installs, use date filters to keep sub-ID breakdowns fast.
Does Wevion forward Keitaro conversions to my ad platforms?
No. The Tracker Hub pulls Keitaro data into Wevion for analytics, attribution, and rules — there is no tracker-to-ad-platform forwarding path and no "Forwarding tab" in the current code. Keitaro conversion states are mapped to Wevion's canonical ConversionStatus (approved / pending / rejected / hold) so rejections and holds propagate correctly to revenue reports.
Which sub-ID does Wevion use for Keitaro attribution?
Most affiliates use sub_1 set to the {click_id}, and Wevion's Meta postback store also keys on click_id / transaction data for attributing stored conversions. Other sub-IDs are tracker-side conventions — teams commonly use sub_2 for an ad creative variant, sub_3 for a landing page variant, sub_4 for an audience segment. To attribute at visit level, pass click_id in your ad URL to Keitaro.