Integrate Kameleoon with Snowplow

Written by Julie Trenque

Updated on 01/04/2024

2 min

Intermediate

Manage your integrations

Analytics

Automation

CDP

CMP

CMS/CRM

Data Warehouses

Developers

Was this content useful?

Snowplow is a Behavioral Data Platform. With Snowplow, you can:

  • generate a high-quality behavioral data set as a source of truth for your organization, unified across all platforms and channels;
  • control the quality and compliance of your data with governance tooling built in at every stage of the solution;
  • model behavioral data with out-of-the-box, customisable incremental web and mobile models that shorten time to value, all managed securely in the Snowplow BDP Console.

With our Snowplow integration, you can now use Kameleoon’s campaigns events in any Snowplow Collector.

Key benefits

Send Kameleoon customer-level and event-level data to Snowplow in order to:

  • Drill down to individual customers and events
  • Zoom out to compare behaviours between cohorts and over time
  • Segment your audience by behaviour
  • Develop recommendations and personalisations engines

Activate Snowplow on Kameleoon

The first step is to enable Snowplow.

Log in to your Kameleoon App, click on Admin and then Integrations in the sidebar.

For more information on this page, see our article about it.

By default, the tool is not installed. This is signaled by this icon:

By clicking on Install the tool, you will be able to select the projects on which you want to activate it, so that information can be correctly reported to Snowplow.

Once you have configured the tool, click on Validate in the bottom-right corner: the configuration panel will close. You will then see an ON toggle to the right of the tool’s logo, as well as the number of projects the tool is configured on.

The data will be automatically sent to Snowplow by using Snowplow’s JavaScript Tracker.

Please note that if you need to slightly change the behavior of our native bridge, you can create a custom analytics bridge and use our Snowplow sample code you can take from our Github repository.

Kameleoon Snowplow event dispatcher

If your Kameleoon events are being produced by multiple sources such as by the Kameleoon website javascript engine, but also from Kameleoon back end and/or mobile SDKs, our Snowplow event dispatcher integration is better suited for these extensive use cases.

This integration plugs directly into our event streaming layer. It singles out the exposure events affiliated with your project id and dispatches them via HTTP call to your Snowplow Stream Collector.

To setup the dispatcher for a given project, provide your technical account manager with the following information:

  • The URL of your Snowplow Stream Collector
  • The host of your Iglu schema registry as well as your Snowplow API key.

The schema registry and API key will be used to inform your Snowplow pipeline of the custom schema of the Kameleoon exposure event type. This enables your system to correctly interpret the data we then send. Your API key will thus only be used once.

The schema of a Kameleoon exposure event that we will push to your registry is the following :

{
    "$schema": "http://iglucentral.com/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#",
    "self": {
        "vendor": "kameleoon",
        "name": "kameleoon_experiment_exposure",
        "format": "jsonschema",
        "version": "1-0-0"
    },
    "type": "object",
    "properties": {
        "nonce": {
            "type": "number"
        },
        "visitor_code": {
            "type": "string"
        },
        "timestamp": {
            "type": "number"
        },
        "experiment_id": {
            "type": "number"
        },
        "variation_id": {
            "type": "number"
        }
    },
    "required": ["nonce","visitor_code","timestamp","experiment_id","variation_id"],
    "additionalProperties": false
}

Where:

  • “nonce”: is equivalent to the event UUID
  • “visitor_code”: is a unique user identifier that will be used as the “user_id” in the JSON event sent to Snowplow
  • “timestamp”: timestamp of the event
  • “experiment_id”: unique id of the Kameleoon experiment the user has been exposed to
  • “variation_id”: unique id of the variation the user has been exposed to within the given experiment

Kameleoon exposure events will be batched into the HTTP call body as custom self-describing JSON. This format contains a reference to the descriptive schema, described above, that Kameleoon will have pushed to your Snowplow Iglu schema registry during setup.

You may have set up a Mapping Identifier for your project, for example to attach the visitor id that you use for your standard Snowplow events to your Kameleoon visitor sessions. If this is the case, this Mapping Identifier will be used as the “user_id” parameter in the self describing event JSON sent to Snowplow, instead of the Kameleoon visitor code.

For more information on the HTTP format for sending events to Snowplow, you can refer to the Snowplow Tracker Protocol specification.

Associate Snowplow with a Kameleoon campaign

In the Graphic/Code editor

When finalizing your experiment, click the Integrations step to configure Snowplow as a tracking tool. 

Select Snowplow.

Snowplow will be mentioned in the summary pop-in before going live. Kameleoon will automatically transmit the data to Snowplow and you will be able to view your results directly in the tool.

On the personalization creation page

In the same way as A/B testing, you can select Snowplow among the reporting tools for a personalization.

On the results page

Once Snowplow is set as a reporting tool for an experiment, you can select (or unselect) it via the Kameleoon results page. To do this, click on Reporting Tools in the panel on the right to open the corresponding menu.

The reporting tools associated with the experiment are displayed. Click Edit to edit this selection.

You can then select or unselect Snowplow. Then click on Validate and continue to finalize or update your campaign.

On a feature flag

Learn how to manage third-party analytics integrations

  • In this article :