Kayzen provides multiple white-labeling solution for customers. This document covers requirements and information around different white-labeling solutions
Kayzen provides 3 main white-labeling solutions:
1.UI/Console White labeling - Customers can white-label Kayzen User interface
2.MMP White labeling - Customers can have a white-label integration with MMP, so that customers name is visible as a supported network in MMP dashboard
3.Reporting API White labeling - Customers can access and share Kayzen’s reporting api as a whitelabel solution
UI/Console White-Labeling
This is a walkthrough for customizing and white-labeling the Kayzen console. Kayzen console is what customers will be using to set up their campaigns and review performance and reports.
General requirements for UI White-Labeling
Please fill this form - https://forms.gle/Z2EJJxZrogysgKGh7 - this doc covers the requirements for the following aspects
Billing details: This will be reflected when you click on the funds in the UI
Custom URL/domain: more info below
Privacy URL, Terms of use, copyright text, etc. All of these will also be reflected in the UI for your customers
Logo
SMTP details: In order to add support for sending campaign related emails from your own email domain
Custom DSP URL / domain
1. Let us know the desired URL but take in consideration that you need to own the domain. Please add it in the form under "DSP custom URL". Eg www.mydomain.com
2. One of our developers will request a certificate for that domain in ACM, do the DNS validation, and get the validated CNAME
3. We will send you the validated CNAME + CNAME of the DSP domain itself pointing to console.kayzen.io
4. You should add the CNAMEs in your domain. Once done, we will finish the setup from our side and you should be able to access the Kayzen console using the custom domain
MMP white-labelling
Creating your own integration with MMP’s using Kayzen’s infrastructure
Please start a thread with your MMP, for example with Appsflyer, asking for a new ad network / modular partner integration.
You will be asked to fill some general forms, and will be asked to provide the following information:
Global click URL format - containing all supported parameters to be sent to the MMP at the moment of a click (this will be used for the impression url as well)
Global install postback URL - containing all expected parameters to be received
Global in-app events postback URL
As a good practice ask the MMP to enable passing non-attributed data, retargeting and view-through attribution.
3. After this, the integrations team from the MMP should enable the account and give you access to the dashboard.
Recommendations:
Use a generic email “admin@companyname.com” for the owner of the MMP dashboard.
You can share the credential with Kayzen this will help investigating dicrepancies or issues.
Impression & Click Trackers Templates
You will find below impression and click tracker templates for some of the MMPs integrated with Kayzen. You can get more information on the macros used in the trackers here.
Impression Tracker
Click Tracker
Impression Tracker
Click Tracker
Parameters:
<tracker_identifying_network_for_an_app> - An ID identifying your integrated network for an app. Generated by Adjust
tracker_limit [Optional] : Default: 10,000; Max: 250,000. Use if for increasing the tracker limit.
This can be added to impression/click url, for eg. this is how the click url will look like
Note: Trackers are used to record data against a network, campaign, adgroup and creative.
A network tracker can have 10,000 unique campaign sub-trackers, a campaign level tracker can have 10,000 adgroup sub-trackers and an adgroup level tracker can have 10,000 creatives under it.
All data for trackers generated past that number will be shown in the Adjust dashboard as 'unknown'.
Increasing the tracker limit can slow down the adjust’s dashboard, so optimize the campaign structure especially adgroup macro.
Impression Tracker
Click Tracker
Parameters:
network_id=<your_network_id>- This is a unique id that will be provided by Kochava
To summarize refer to this table below, you can customize the trackers based on your requirements, refer to the macro document we have here.
Kayzen Macro | Appsflyer | Adjust | Kochava |
{CAMPAIGN_NAME} | c | campaign | partner_campaign_name |
{CAMPAIGN_ID} | af_c_id |
| partner_campaign_id |
{CREATIVE_NAME} | af_ad | creative | creative_name |
{CREATIVE_ID} | af_ad_id |
| creative_id |
{EXCHANGE_NAME} | af_channel |
| exchange_name |
{EXCHANGE_ID} |
|
| exchange_id |
{CONVERSION_ID} | clickid | impression_id/<integration>_click_id. | impression_id |
{DEVICE_PLATFORM_ID} | advertising_id/idfa | idfa/gps_adid | device_id |
{APP_BUNDLE} | af_siteid | adgroup |
|
{APP_ID} |
| publisher_id | site_id |
{APP_NAME} |
|
| app_name |
{COUNTRY_CODE} |
|
| country_code |
{CREATIVE_TYPE} | af_ad_type |
|
|
{DEVICE_OS_NAME} |
| os_name | device_os |
{DEVICE_OS_VERSION} |
| os_version | device_os_version |
{USER_IP} | af_ip | ip_address | ip_address |
{USER_AGENT} | af_ua | user_agent | device_ua |
{DEVICE_LANGUAGE} | af_lang | language |
|
{GPS_LON} |
|
| user_lon |
{GPS_LAT} |
|
| user_lat |
{MODEL_NAME} |
| device_name | device_model |
{MANUFACTURER_NAME} |
|
| device_vendor |
{DEVICE_TYPE} |
| device_type |
|
{AD_PLATFORM} |
|
| ad_platform |
{CARRIER_NAME} |
|
| device_carrier |
{ZIP_CODE} |
|
| user_zip |
App Event's Postback Template
The structure is same for install and post install events i.e. just the event name will change as a value of the attribute "app_event". Events generating revenue should have revenue fields in the postback.
The following table details mandatory and recommended parameters by Kayzen. Please note this is not an exhaustive list since each MMP can send other parameters as well but ensure to include the mandatory fields.
We have added sample postback templates in the end for your perusal.
Parameter | Description | MMP |
api_key* | Unique api key for your account/ app/website. You can get this api_key from Kayzen UI | All |
gaid* | Google unique advertising ID | All |
idfa* | iOS unique IDFA | All |
app_event* | Name of the event that you have recorded. eg: app_open, registration, purchase etc. | All |
can_claim* | Is attributed to Kayzen flag. | All |
view_through* | Flag for indicating view through installs | All |
bid_id* | Pass through parameter. Pass the click_id that was recorded when the user clicked on ad. | All |
integ_cust* | Agency name integrating with the MMP. Hardcoded. | All |
event_items | For any event, you can pass multiple event in a JSON format. | Appsflyer, Kochava |
is_reengagement | Flag for re-engagement | All |
revenue_USD | Revenue in USD | Appsflyer, Kochava |
revenue | Revenue, as sent from MMP SDK in cents | Adjust |
currency | Original ISO 4217 currency code | Adjust |
revenue_usd | Revenue, in US dollars. | Adjust |
os | OS. eg. Android, iOS | All |
osv | OS Versions | All |
ip | User IP | All |
user_agent | User agent | All |
country_code | Alpha 2 country code | All |
city | Device city | All |
app_id | Exchange specific App ID | Appsflyer, Adjust |
app_name | Name of the app | Appsflyer, Adjust |
app_version | App version number (Android); build-version-number for the bundle (iOS) | Appsflyer |
sdk_version | MMP sdk version for the app | Appsflyer |
match_type | Attribution method | All |
click_ts | TIme of click | Appsflyer |
install_ts | Time of install | Appsflyer |
environment | Indicates production or sandbox activuty | Adjust |
gp_referrer_click_ts | Google Play Referrer Click Timestamp | Appsflyer |
gp_referrer_install_ts | Google Play Referrer Install Timestamp | Appsflyer |
wifi | Flag for wifi | Appsflyer |
carrier | Carrier Name | Appsflyer |
activity_kind | Type of event. For eg; event, install, impression | Adjust |
created_at | Activity timestamp | Adjust |
model | Device Model | Adjust |
device_model | User device model | Appsflyer, Kochava |
device_type | Phone/Tablet | Adjust |
device_brand | User device brand | Appsflyer, Kochava |
session_length | Length of the user session | Adjust |
lifetime_session_count | No. os sessions recorded across entire user lifetime | Adjust |
is_unique |
| Adjust |
unique_id |
| Adjust |
is_organic | Flag for organic traffic | Adjust |
conversion_duration | Time between click and install or attributions in seconds | Adjust |
installed_at | Time of install | Adjust |
is_reattributed | 1 if user was reattributed at least once from an earlier source; 0 if user has never been reattributed | Adjust |
eventtime | Time of the event | Appsflyer, Kochava |
network_name | Name of the network responsible for the event conversion. | Kochava |
attribution_time | Time that the attribution occurred. | Kochava |
app_limit_track | The limit_tracking flag, as set by the developer within the app. | Kochava |
device_limit_track | The limit_tracking flag as set by the user within the OS of their device. | Kochava |
hours_played | Optional event attribute key. | Kochava |
sessions_played | Optional event attribute key. | Kochava |
duration | Optional event attribute key. | Kochava |
referral_from | Optional event attribute key. | Kochava |
attribution_window | Optional event attribute key. | Kochava |
Sample Postbacks
Appsflyer
https://api-events.eventstracker.io/v1/ev?tp=appsflyer&api_key=<unique api key>&gaid={advertiserId}&idfa={advertiserId}&app_event={event-name}&event_items={event_items_json}&ip={ip}&eventtime={timestamp}&country_code={country-code}&city={city}&language={language}&device_model={device-model}&device_brand={device-brand}&osv={os-version}&can_claim={is_attributed}&bid_id={clickid}&is_reengagement={is-retarget}&is_reattribution={is-reattr}&revenue_USD={monetary}&app_id={app-id}&app_name={app-name}&app_version={app-version-name}&sdk_version={sdk-version}&match_type={match-type}&campaign={c}&click_ts={click-ts}&pub_id={af_siteid}&install_ts={install-unix-ts}¤cy={currency}&rejected_reason={blocked-reason}&rejected_reason_value={blocked-reason-value}&gp_referrer_click_ts={gp_referrer_click_ts}&gp_referrer_install_ts={gp_referrer_install_ts}&view_through={is-impression}&os={platform}&wifi={wifi}&carrier={carrier}&user_agent={user-agent}&appsflyer_id={appsflyer_id}&attributed_touch_type={attributed_touch_type}&blocked_sub_reason={blocked_sub_reason}&bundle_id={bundle_id}&idfv={idfv}&is_lat={is_lat}&is_primary_attribution={is_primary_attribution}&campaign_id={af_c_id}&af_ad_id={af_ad_id}&ad_ad={ad_ad}&integ_cust=<client_name>
Adjust
https://api-events.eventstracker.io/v1/ev?tp=adjust&api_key=<unique api key>&gaid={gps_adid}&idfa={idfa}&activity_kind={activity_kind}&event_items={partner_parameters}&ip={ip_address}&created_at={created_at}&country_code={country}&city={city}&language={language}&user_agent={user_agent}&model={device_name}&device_type={device_type}&os={os_name}&osv={os_version}&session_length={time_spent}&lifetime_session_count={lifetime_session_count}&deeplink={deeplink}&bid_id<click_imp_passthrough_variable>&can_claim=1&is_unique={nonce}&unique_id={random}&app_id={app_id}&app_name={app_name}&view_through={impression_based}&is_organic={is_organic}&conversion_duration={conversion_duration}&installed_at={installed_at}&click_time={click_time}&click_attribution_window={click_attribution_window}&impression_attribution_window={impression_attribution_window}&reattribution_attribution_window={reattribution_attribution_window}&inactive_user_definition={inactive_user_definition}&match_type={match_type}&is_reattributed={is_reattributed}&app_event=<the_event>&install_begin_time={install_begin_time}&install_finish_time={install_finish_time}&user_agent={user_agent}&network={network_name}&revenue_float={revenue_float}&revenue_usd={revenue_usd}¤cy={currency}&campaign_name={campaign_name}&adgroup_name={adgroup_name}&creative_name={creative_name}&is_s2s={is_s2s}&impression_ts={impression_time}&engagement_ts={engagement_time}&reattributed_ts={reattributed_at}&connection_type={connection_type}&cpu_type={cpu_type}&hardware_name={hardware_name}&network_type={network_type}&device_manufacturer={device_manufacturer}&proxy_ip={proxy_ip_address}&adjust_device_id={adid}&idfv={idfv}&web_uuid={web_uuid}&mobile_country={mcc}&mobile_network={mnc}&isp={isp}&platform={platform}&tracking_enabled={tracking_enabled}&tracking_limited={tracking_limited}&revenue={revenue}¤cy={currency}&app_version={app_version}&referral_time{referral_time}&received_at={received_at}&sdk_version={sdk_version}&environment={environment}&integ_cust=<client_name>
Kochava
https://api-events.eventstracker.io/v1/ev?tp=Kochava&api_key={kayzen.api_key}&idfa={idfa}&gaid={android_id}&app_event={event_name}&ip={ip_address}&eventtime={timestamp}&country_code={country}&city={city}&language={language}&device_model={device_type}&device_brand={device_brand}&osv={os_version}&can_claim={can_claim}&event_items={event_metadata}&bid_id={click/imp_id}&is_reengagement={is_reengagement}&network_name={network_name}&attribution_time={install_timestamp}&app_limit_track={app_limit_track}&device_limit_track={device_limit_track}&match_type={matched_by}&hours_played={metadata.hours_played}&sessions_played={metadata.sessions_played}¤cy={currency}&duration={metadata.duration}&referral_from={metadata.referral_from}&view_through={is_viewthrough}&attribution_window={lookback}&user_agent={device_ua}&adid={adid}&campaign_id={campaign_id}&campaign_name={campaign_name}&tracker_id={tracker_id}&tracker_name={tracker_name}&site_id={site_id}&creative_id={creative_id}&device_version={device_ver}&revenue={revenue}&integ_cust=<client_name>
Reporting API White-labeling
This section is about white-labeling Kayzen’s reporting API.
Kayzen reporting api url is api.kayzen.io this will be renamed in accordance to your custom url
Purchase a ssl certificate for the domain you want for eg. https://example-api-domain.com and provide us with all the files which is the certificate files (.crt) along with the instruction file
Our team will set up the certificate.
You’ll needs to add a CNAME to example-api-domain.com to point to whitelabel-api.kayzen.io
In the end will look something like this.
example-api-domain.com CNAME whitelabel-api.kayzen.io