
At a glance
How it works
1
Kayzen sends the click
A user clicks your ad inside a publisher’s app. Kayzen records the click, then opens your ClickFlare campaign URL and fills in its macros: the bid ID in
bid_id, plus the campaign, creative, exchange, publisher app, operating system, device and carrier.2
ClickFlare stores the Kayzen bid ID
ClickFlare saves the value of
bid_id as the visit’s External ID and redirects the user to your lander or offer.3
The conversion reaches ClickFlare
Your affiliate network or store posts the conversion back to ClickFlare, matched on the ClickFlare click ID.
4
ClickFlare posts it back to Kayzen
ClickFlare fires the Kayzen postback, replacing
{external_id} with the stored bid ID. Kayzen’s Event API records the event against your app or website and matches it to the original click.The mirror to keep straight: in the campaign URL you write ClickFlare’s parameter (
bid_id) and Kayzen’s macro ({CONVERSION_ID}). The template does this for you. In the postback URL you write Kayzen’s parameter (bid_id) and ClickFlare’s token ({external_id}). The parameter name is the same on both sides.Before you start
- Set up your own tracking domain. Run the campaign and the postback on your own custom domain. Shared domains get flagged by networks and blocked by browsers. See Custom Domains.
- Have an offer ready in ClickFlare, and its affiliate network set up to post conversions back to ClickFlare. See Creating an Offer and Adding an Affiliate Network.
- Get your Kayzen Event API key. Each app or website in Kayzen has its own key. Click your name in the top-right corner of Kayzen and select Switch to Admin Console. Advertiser Admins land on the Advertiser Settings page. Enterprise Admins land on Advertiser Overview: click the advertiser name. Scroll to the App/Website section and click the app or website you are promoting. In the event API integration details box, scroll to the bottom and copy the API Key field.
- Decide which events Kayzen should receive. Kayzen optimizes on the events you send it. If your funnel has several steps (registration, then purchase), decide now whether to send one event or several, and what to call each. See Tracking several events.
Step 1 – Create the campaign and the Kayzen traffic source
- Go to Campaigns and click New.
- In Traffic Source, open the dropdown and click + New Traffic Source.
- Type
kayzenin the search box and select the Kayzen template. - Enter a Name, for example
Kayzen. - Leave Cost currency on USD unless your Kayzen account is billed in another currency.

Don’t add static values such as a cachebuster or a timestamp to the URL. Kayzen recommends using its macros only.
Step 2 – Set up the postback
The postback is what sends conversions to Kayzen. It lives on the traffic source, so every campaign that uses this Kayzen traffic source sends conversions the same way.- In the New Traffic Source form, scroll to Passing conversion info to traffic source.
- Turn on Traffic source postback URL. The template’s postback appears:

- Replace the two placeholders:
- Add the revenue. The template sends none. If your payouts are in USD, add
&revenue_USD={payout}at the end. For another currency, add&revenue={payout}¤cy={payout_currency}instead.
tp=direct and can_claim=1 as they are. can_claim=1 tells Kayzen the event is attributed to its click. The result, for a purchase in USD:
- In the dropdown on the left, choose the ClickFlare event that should fire the postback. Keep Conversions to send every conversion. If your final action is a custom conversion (for example
purchase), choose that instead. - Click Save. You are back in the campaign editor with the Kayzen traffic source selected.
Step 3 – Finish the campaign and copy its URL
- Name the campaign.
- Set the Cost Model to CPC and enter your average cost per click. See Cost.
- Choose Redirect tracking. Kayzen opens the campaign URL as the click URL after recording the click.
- Click Next and, on Destination, add your lander (optional) and your offer.
- Save, open Tracking, select your own tracking domain and copy the campaign URL.
bid_id={CONVERSION_ID} and exchange_name={EXCHANGE_NAME}.
If you use a lander, its call-to-action must link to the ClickFlare click URL, not to the offer directly. Otherwise the visit reaches the offer without a ClickFlare click ID, and the conversion cannot be traced back to Kayzen.
See Creating a Campaign in ClickFlare.
Step 4 – Create the campaign in Kayzen
- In Kayzen, create the campaign with your targeting, bid and creatives as usual.
- Paste the ClickFlare campaign URL as the campaign’s click URL.
- Launch the campaign.
{...} macro when the ad is clicked.
For image and native creatives, Kayzen records the click and then calls your click URL. HTML creatives are different: Kayzen doesn’t track their clicks by default. In an HTML creative, put Kayzen’s {HTML_CLICK_URL} macro where the click URL goes, so Kayzen records the click before sending the user to ClickFlare.
Step 5 – Test the integration
- Run a small amount of traffic, or click one of your own ads, and complete the offer the way a real user would.
- In ClickFlare, go to Logs → Postback Status and filter by the campaign. A successful request to
api-events.kayzen.ioconfirms ClickFlare sent the postback. Open it and check thatbid_idholds a real value, not nothing. - In Kayzen’s reporting, check that the event appears on the campaign under the
app_eventname you used. - If it doesn’t, compare the bid ID in the postback with the External ID of the visit in ClickFlare. They must match.
Tracking several events
Kayzen can receive several events from the same campaign, for example a registration and a purchase. Each event needs its own postback. Only theapp_event value changes:
- In ClickFlare, create a custom conversion for each step, for example
leadandpurchase. - On the Kayzen traffic source, click + Another postback URL once per extra event.
- Map each postback to its ClickFlare event: the
leadcustom conversion to theapp_event=registrationURL,purchasetoapp_event=purchase. - Test each event.
Rules for multi-event postbacks
Rules for multi-event postbacks
- One postback per event. Don’t combine events in one URL.
- Event names are free text, for example
landing,registrationorpurchase. Keep them consistent: Kayzen reports and optimizes on the exact name. - Add
revenue_USD={payout}only to events that carry revenue. - All postbacks on one traffic source use the same API key, so they all report to the same app or website.
Sending only one event
Sending only one event
If Kayzen should only learn from your final sale, keep a single postback and map it to that event. Earlier steps still show in ClickFlare. They just don’t reach Kayzen.To send a postback only for some conversions, for example only those above a certain payout, use Event filter under the postback to add conditions.
Cost
The template passes no cost. Its Cost row has no parameter and no macro, and Kayzen’s macro list has no price or cost macro. ClickFlare has no cost integration for Kayzen either. Set the campaign’s Cost Model to CPC and enter your average cost per click. Kayzen buys impressions in real-time auctions, so divide your Kayzen spend by your Kayzen clicks to get it. A CPM bid divided by 1,000 doesn’t work here: on in-app inventory, most impressions are not clicks.Compare the Cost column with your Kayzen spend after the first days. When they differ, correct them with a manual cost upload, and update the CPC value on the campaign.
Delayed revenue
If your offer reports revenue hours or days after the click, see Sending Delayed Revenue to Traffic Sources to pass that revenue to Kayzen once it arrives.Troubleshooting
Postbacks are sent but Kayzen shows no events
Postbacks are sent but Kayzen shows no events
- Open the request in Logs → Postback Status and check that
bid_idholds a real value. api_keystill saysWebsite_API_key, or holds the key of another app or website.- The campaign URL in Kayzen is missing
bid_id={CONVERSION_ID}, or the macro was edited. Copy the URL from ClickFlare again.
Conversions show in ClickFlare but not in Kayzen
Conversions show in ClickFlare but not in Kayzen
- Traffic source postback URL is off on the Kayzen traffic source.
- Disable sending postbacks to traffic source is on in the campaign.
- The postback is mapped to a different event than the one the conversion logged. Check Logs → Event Logs to see which event was recorded.
- Check Logs → Postback Status: a failed request shows the status code Kayzen returned.
Kayzen shows events with no revenue
Kayzen shows events with no revenue
The template sends no revenue. Add
&revenue_USD={payout} to the postback, or &revenue={payout}¤cy={payout_currency} for payouts in another currency.Exchange or app columns are empty
Exchange or app columns are empty
The macros were not replaced, usually because the URL was edited, or because an HTML creative links to the ClickFlare URL without Kayzen’s click macro. Paste the campaign URL from ClickFlare unchanged. See Traffic Source Tokens Arriving Empty.
FREQUENTLY ASKED QUESTIONS
Q1: Can I use the same Kayzen traffic source for all my Kayzen campaigns?A1: Yes, as long as they promote the same app or website. The API key in the postback belongs to one app or website. Create a separate Kayzen traffic source for each one you promote.
Q2: What does can_claim=1 do?
A2: It tells Kayzen the event is attributed to a Kayzen click. Kayzen’s default is 0, an unattributed event. Keep 1, since ClickFlare only sends the postback for visits that came from Kayzen.
Q3: Should I use Redirect or Direct tracking with Kayzen?A3: Redirect. Kayzen sends users to your click URL after it records the click, so the campaign URL must be a ClickFlare redirect. See Direct Campaign Tracking for when Direct applies.
Q4: Kayzen’s documentation shows a different host, api-events.eventstracker.io. Which one should I use?
A4: Keep the template’s api-events.kayzen.io, which Kayzen’s tracker integration guides use. If Kayzen’s team gives you the other host, use theirs. The parameters are the same on both.
Related
Traffic source postbacks
Every token you can use in a postback.
Custom conversions
Split registrations and purchases into separate events.
Cost models
How CPC, CPA and RevShare costs are calculated.
Conversions not showing
The general checklist when postbacks don’t arrive.