Setting Up Keitaro for PWA

Keitaro tracks clicks and conversions, APEX serves the actual PWA witrina with cloaking — together they cover the whole path from an ad click to a deposit on the offer. Here's how to wire up the campaign, stream and postback so subid never gets lost and your stats stay honest.

The funnel end to end

Traffic leaves the ad account through a Keitaro tracking link, lands in a campaign, gets routed through a stream, and the stream points at the APEX PWA witrina. The affiliate network separately fires a postback about the conversion back to Keitaro, and Keitaro forwards that event further — to Facebook CAPI, for example. The roles are split cleanly: Keitaro routes traffic and holds the stats, APEX handles the witrina itself, cloaking and push.

Campaign and streams for a PWA

In Keitaro you create a campaign of the right type, and inside it one or more streams, each pointing at a specific APEX PWA link. If you're testing several witrina variants, set up several streams with weighted distribution — that's a tracker-side split test. Some buyers instead lean on APEX's own built-in split test with sticky-by-visitor and just feed Keitaro one final, already-split stream.

Passing subid into the PWA and back out

The critical piece is the click ID passthrough: append a Keitaro macro (usually {subid}) as a parameter on the PWA link, and APEX keeps it attached to the user's session all the way to the target action. That same value goes out in the postback on conversion, letting Keitaro match a deposit back to the exact click, source and ad. If subid gets lost along the way — trimmed by a redirect, wrong parameter casing — your stats start lying: conversions either don't get counted or attach to the wrong click.

S2S postback: Keitaro receiving and forwarding

On the receiving side, the affiliate network hits Keitaro's postback URL on every conversion, passing subid and a status (approved, pending, rejected). On the forwarding side, Keitaro can push that event on to Facebook CAPI or another system, substituting macros like {subid}, {status}, {payout} into the right request format. This is configured once at the campaign or stream level, not by hand for every single ad.

Stream-level cloaking as a second layer

Beyond the PWA witrina's own cloaking in APEX, a Keitaro stream can define a fallback action for traffic that didn't pass an earlier check — showing a neutral page instead of an error, for instance. This isn't a replacement for APEX's antibot filters, just an extra layer for edge cases: a broken redirect, a manual moderator visit that doesn't match a typical bot pattern.

Common setup mistakes

The most common one is forgetting to add the subid macro to the PWA link, so the postback arrives with nothing to attach it to and sits orphaned in the tracker. The second is bad status mapping, where Keitaro treats a still-pending conversion as approved and fires an inaccurate event to CAPI. The third is testing the funnel from an office IP or over a VPN, which the cloaking correctly reads as bot-like traffic and reasonably refuses to show what a real user would see.

FAQ

Do I have to use Keitaro specifically?
No, but it's the de facto standard tracker in CIS affiliate traffic, and the Keitaro ↔ Facebook CAPI postback path is a proven, ready-made route inside APEX.
What if subid isn't showing up in the postback?
Check that the macro sits in the exact parameter APEX preserves through the whole session, and that no redirect or extra URL-encoding is trimming it along the way.
Can one Keitaro stream point at several APEX PWAs?
Yes, by weighting traffic across multiple streams — or use APEX's own built-in split test with sticky-by-visitor and just send Keitaro one already-split stream.
How do I verify S2S works before spending real budget?
Run a test click with a known subid and manually fire the postback with a test status — if the event lands in Keitaro and forwards on, the setup is working.
Do I still need a pixel on the PWA if S2S is already set up?
Usually yes — pixel plus CAPI together give a better match rate than either alone, and any double-counting between the two gets resolved through event_id deduplication.
Build your PWA in APEX in minutes

Cloaking, anti-bot, push, split tests and your own domains — in one service.

Get started free

Read also