Skip to content

Commit e0e21bc

Browse files
committed
Update Snowplow integration instructions
1 parent aa9589c commit e0e21bc

File tree

1 file changed

+39
-72
lines changed
  • _docs/_partners/data_and_analytics/customer_data_platform

1 file changed

+39
-72
lines changed
Lines changed: 39 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
nav_title: Snowplow
33
article_title: Snowplow
4-
description: "This reference article outlines the partnership between Braze and Snowplow, an open-source data collection platform, that allow you to forward Snowplow events to Braze through Google Tag Manager server-side tagging."
4+
description: "This reference article outlines the partnership between Braze and Snowplow, a data infrastructure platform, that allows you to forward Snowplow events to Braze in real-time using Snowplow's Event Forwarding."
55
alias: /partners/snowplow/
66
page_type: partner
77
search_tag: Partner
@@ -10,28 +10,30 @@ search_tag: Partner
1010

1111
# Snowplow
1212

13-
> [Snowplow](https://snowplowanalytics.com) is a scalable open-source platform for rich, high-quality, low-latency data collection. It is designed to collect high-quality, complete behavioral data for enterprise businesses.
13+
> [Snowplow](https://snowplowanalytics.com) is a scalable platform for rich, high-quality, low-latency data collection. It is designed to collect high-quality, complete behavioral data for enterprise businesses.
1414
1515
_This integration is maintained by Snowplow._
1616

1717
## About the integration
1818

19-
The Braze and Snowplow integration enables users to forward Snowplow events to Braze through Google Tag Manager server-side tagging. The Snowplow Braze tag allows you to send events to Braze while offering additional flexibility and control:
20-
- Full visibility into all transformations on the data
21-
- Ability to evolve sophistication over time
19+
The Braze and Snowplow integration enables you to forward Snowplow events to Braze in real-time using Snowplow's Event Forwarding solution. This integration allows you to send events to Braze while offering flexibility and control:
20+
- Filter and transform events before sending to Braze
21+
- Map Snowplow event data to Braze user attributes, custom events, and purchases
2222
- All data remains in your private cloud until you choose to forward it
23-
- Ease of setup due to rich libraries of tags and familiar Google Tag Manager UI
23+
- Self-managed deployment within your existing Snowplow cloud account
24+
25+
Snowplow's [Event Forwarding](https://docs.snowplow.io/docs/destinations/forwarding-events/) is a paid add-on feature available to Snowplow customers. To forward events to Braze without this add-on, use Snowplow's [Google Tag Manager Server-Side](https://docs.snowplow.io/docs/destinations/forwarding-events/google-tag-manager-server-side/) integration.
2426

2527
Leverage Snowplow's rich behavioral data to drive powerful customer-centric interactions in Braze and deliver personalized messages in real-time.
2628

2729
## Prerequisites
2830

29-
| Requirement | Description |
30-
| ----------- | ----------- |
31-
| Snowplow pipeline | A Snowplow pipeline needs to be up and running. |
32-
| Google Tag Manager server-side | GTM-SS needs to be deployed and the [Snowplow client for GTM-SS](https://docs.snowplowanalytics.com/docs/forwarding-events-to-destinations/forwarding-events/google-tag-manager-server-side/snowplow-client-for-gtm-ss/) set up. |
33-
| Braze REST API key | A Braze REST API key with `users.track` permissions. <br><br> This can be created in the Braze dashboard from **Settings** > **API Keys**. |
34-
| Braze REST endpoint | [Your REST endpoint URL]({{site.baseurl}}/developer_guide/rest_api/basics/#endpoints). Your endpoint will depend on the Braze URL for your instance. |
31+
| Requirement | Description |
32+
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
33+
| Snowplow pipeline | A Snowplow pipeline needs to be up and running. |
34+
| Snowplow Console access | Access to Snowplow Console to configure event forwarders. |
35+
| Braze REST API key | A Braze REST API key with the following permissions: `users.track`, `users.alias.new`, `users.identify`, `users.export.ids`, `users.merge`, `users.external_ids.rename`, and `users.alias.update`. <br><br> This can be created in the Braze dashboard from **Settings** > **API Keys**. |
36+
| Braze REST endpoint | [Your REST endpoint URL]({{site.baseurl}}/developer_guide/rest_api/basics/#endpoints). Your endpoint will depend on the Braze URL for your instance. |
3537
{: .reset-td-br-1 .reset-td-br-2 role="presentation" }
3638

3739
## Use cases
@@ -44,79 +46,44 @@ Create dynamic audiences in Braze based on Snowplow's high-quality behavioral da
4446

4547
## Integration
4648

47-
### Step 1: Template installation
48-
49-
#### Manual installation
49+
### Step 1: Configure the destination in Snowplow Console
5050

51-
1. Download the [`template.tpl`](https://github.com/snowplow/snowplow-gtm-server-side-braze-tag/blob/main/template.tpl) template file.
52-
2. Create a new tag in the **Templates** section of a Google Tag Manager server container.
53-
3. Click the **More Actions** menu in the top right-hand corner, and select **Import**.
54-
4. Import your downloaded template file and save it.
51+
To create the event forwarder:
5552

56-
#### Tag Manager gallery
53+
1. In Snowplow Console, navigate to **Destinations** and select **Create new destination**.
54+
2. When configuring the connection, select **Braze** for the connection type.
55+
3. Enter your Braze API key and REST API endpoint.
56+
4. Save the connection.
5757

58-
Coming soon! This tag is pending approval to be included in the GTM gallery.
58+
### Step 2: Configure the event forwarder
5959

60-
### Step 2: Braze tag setup
60+
When configuring the forwarder, you can choose which Snowplow events to forward and map them to Braze object types:
6161

62-
With the template installed, add the Braze tag to your GTM-SS container.
62+
1. **[User attributes]({{site.baseurl}}/api/objects_filters/user_attributes_object)**: Update user profile data and custom user properties.
63+
2. **[Custom events]({{site.baseurl}}/api/objects_filters/event_object)**: Send user actions and behaviors.
64+
3. **[Purchases]({{site.baseurl}}/api/objects_filters/purchase_object)**: Send transaction data with product details.
6365

64-
1. From the **Tag** tab, select **New**, then select the **Braze Tag** as your tag configuration.
65-
2. Select your desired trigger for the events you wish to forward to Braze.
66-
3. Enter the required parameters and configure your tag (more details can be found in the following Customization section).
67-
4. Click **Save**.
66+
For each object type, you can configure field mappings to specify how Snowplow event data maps to Braze fields. See Snowplow's [Creating forwarders documentation](https://docs.snowplow.io/docs/destinations/forwarding-events/creating-forwarders/) for detailed setup instructions and field mapping configuration.
6867

69-
## Customization
68+
### Step 3: Validate the integration
7069

71-
### Required tag parameters
70+
You can confirm events are reaching Braze by checking the following pages in your Braze account:
7271

73-
The following table lists the required tag parameters you must include in your Braze tag setup.
74-
75-
| Parameter | Description |
76-
| --------- | ----------- |
77-
| Braze REST API endpoint | Set this to the URL of your Braze REST [endpoint]({{site.baseurl}}/developer_guide/rest_api/basics/#endpoints). |
78-
| Braze API key | Set this to your Braze [API key]({{site.baseurl}}/developer_guide/rest_api/basics/#app-group-rest-api-keys) that will be included in each request. |
79-
| Braze `external_id` | Set this key to the client event property that corresponds to your users' `external_id` and will be used as the [Braze user identifier]({{site.baseurl}}/developer_guide/rest_api/basics/#external-user-id-explanation). |
80-
{: .reset-td-br-1 .reset-td-br-2 role="presentation" }
72+
1. **Query Builder**: In Braze, navigate to **Analytics** > **Query Builder**. You can write queries on the following tables to preview the data forwarded from Snowplow: `USER_BEHAVIORS_CUSTOMEVENT_SHARED`, `USERS_BEHAVIORS_PURCHASE_SHARED`.
73+
2. **API Usage Dashboard**: In Braze, navigate to **Settings** > **APIs and Identifiers** to see a chart of API usage over time. You can filter specifically for the API key used by Snowplow and see both successes and failures.
8174

82-
### Event mapping
83-
84-
The following table lists event mapping options concerning the Snowplow event as claimed by the [Snowplow client](https://docs.snowplowanalytics.com/docs/forwarding-events-to-destinations/forwarding-events/google-tag-manager-server-side/snowplow-client-for-gtm-ss/).
85-
86-
| Mapping option | Description |
87-
| --------- | ----------- |
88-
| Include self describing event | Turned on by default. Indicates if the Snowplow self-describing event data will be included in the event's properties objects sent to Braze. |
89-
| Snowplow event context rules | Describes how the Braze tag will use the context entities attached to a Snowplow event. |
90-
| Extract entity from array if single element | Snowplow entities are always in arrays, as multiple of the same entity can be attached to an event. This option will pick the single element from the array if the array only contains a single element. |
91-
| Include all entities in the event object | Turned on by default. Includes all entities on an event within the Braze event's properties object. Disable this option to select individual entities for inclusion. |
92-
{: .reset-td-br-1 .reset-td-br-2 role="presentation" }
75+
## Sending custom properties
9376

94-
### Advanced event mapping
77+
You can send custom properties beyond the standard fields. The structure depends on which Braze object type you're using:
9578

96-
#### Event property rules
79+
- **User attributes**: Add as top-level fields (for example, `subscription_tier`, `loyalty_points`)
80+
- **Event properties**: Nest under `properties` object (for example, `properties.plan_type`, `properties.feature_flag`)
81+
- **Purchase properties**: Nest under `properties` object (for example, `properties.color`, `properties.size`)
9782

98-
If you want to include other properties from the client event and map them onto the Braze event, reference the rules in the following table:
83+
For property names containing spaces, use bracket notation (for example, `["account type"]` or `properties["campaign source"]`).
9984

100-
| Event property rules | Description |
101-
| --------- | ----------- |
102-
| Include common event properties | Enabled by default, this option sets whether to automatically include the event properties from the [common event definition](https://developers.google.com/tag-platform/tag-manager/server-side/common-event-data) in the properties of the Braze event. |
103-
| Additional user property and event property mapping rules | Specify the property key from the client event and the properties' object key you would like to map it to (or leave the mapped key blank to keep the same name). You can use key path notation here (for example, `x-sp-tp2.p` for a Snowplow events platform or `x-sp-contexts.com_snowplowanalytics_snowplow_web_page_1.0.id` for a Snowplow events page view id (in array index 0) or pick non-Snowplow properties if using an alternative client.<br><br>Event property mapping rules populate the Braze event properties object.|
104-
| Include common user properties| Enabled by default, this option sets whether to include the `user_data` properties from the common event definition in the Braze user attributes object.|
105-
| Event time property | This option lets you specify the client event property to populate the event time (in ISO-8601 format) or leave it empty to use the current time (default behavior). |
106-
{: .reset-td-br-1 .reset-td-br-2 role="presentation" }
107-
108-
### Entity mapping
109-
110-
Using the Snowplow entity mapping table, the entities can be remapped to have different names in Braze and included in event properties, or user attributes objects.
111-
112-
The entity can be specified in two different formats:
113-
- Major version match: `x-sp-contexts_com_snowplowanalytics_snowplow_web_page_1` where `com_snowplowanalytics_snowplow` is the event vendor, `web_page` is the schema name and `1` is the major version number. `x-sp-` can also be omitted from this if desired.
114-
- Full schema match: `iglu:com.snowplowanalytics.snowplow/webPage/jsonschema/1-0-0`
115-
<br><br>
116-
117-
| Entity mapping option | Description |
118-
| --------- | ----------- |
119-
| Include unmapped entities in event | When remapping or moving some entities to user attributes with the preceding customization, this option enables you to ensure that all unmapped entities (such as any entities not found in the [event property rules](#event-property-rules)) will be included in the properties object of the Braze event. |
120-
{: .reset-td-br-1 .reset-td-br-2 role="presentation" }
85+
See the [Event Object documentation]({{site.baseurl}}/api/objects_filters/event_object) for details on supported data types, property naming requirements, and payload size limits.
12186

87+
## Limitations
12288

89+
**Rate limits:** Braze enforces a rate limit of 3,000 API calls every three seconds for the Track Users API. Because Snowplow doesn't support batching for event forwarders, this API rate limit also functions as the event rate limit. If your input throughput exceeds 3,000 events per three seconds, you will experience increased latency.

0 commit comments

Comments
 (0)