diff --git a/_docs/_contributing/home.md b/_docs/_contributing/home.md
new file mode 100644
index 00000000000..8c4de5ee19f
--- /dev/null
+++ b/_docs/_contributing/home.md
@@ -0,0 +1,160 @@
+---
+nav_title: Home
+article: Contributing to Braze Docs
+description: "Here's what you need to start contributing to Braze Docs!"
+page_order: 0
+search_tag: Contributing
+---
+
+# Contributing to Braze Docs
+
+> Thanks for contributing to Braze Docs! Every Tuesday and Thursday, we merge community contributions and deploy them to Braze Docs. Use this guide to get your changes merged during our next deployment.
+
+## Prerequisites
+
+Some understanding of Git is required to contribute to Braze Docs. If you're new to Git and don't know where to start, see [Git Book: Getting Started](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control). If you just need a refresher, see [Git and GitHub]({{site.baseurl}}/contributing/git_and_github/).
+
+## Step 1: Sign the CLA
+
+Everybody that contributes to Braze Docs must sign the [Contribution License Agreement (CLA)](https://www.braze.com/docs/cla). If you don't sign the CLA, the `@cla-bot` on GitHub will automatically block your pull request.
+
+## Step 2: Set up your environment
+
+Before you can make complex or multi-page changes to Braze Docs, you need to set up your local environment. However, small single-document changes can be completed [directly in GitHub]({{site.baseurl}}/contributing/your_first_contribution/?tab=github#step-2-make-a-change).
+
+### Step 2.1: Get the required software
+
+At a minimum, you need a terminal, a text editor, and a ruby version manager. If you're not sure where to start, see the following.
+
+
+
+
+
+ Type |
+ Product |
+ Description |
+
+
+
+
+ Git GUI |
+ GitHub Desktop |
+ A graphical user interface (GUI) you can use to run Git commands, instead of typing commands in the terminal. |
+
+
+ Terminal |
+ Wezterm |
+ A terminal emulator that allows you to run commands and interact with the Braze Docs repository from the commandline. If you're using a Windows operating system, you'll also need to install Windows Subsystem for Linux (WSL). |
+
+
+ Terminal extension |
+ Windows Subsystem for Linux (WSL)* |
+ WSL lets you install a Linux subsystem and run Unix-like commands on your Windows operating system. If you're contributing from a Windows operating system, we recommend installing WSL, so you can use any Unix-like command mentioned in the docs.
* Only available for Windows. |
+
+
+ Package manager |
+ Homebrew |
+ A package manager that allows you to install and manage the various command-line interface (CLI) tools used for contributing to Braze Docs. |
+
+
+ Ruby version manager |
+ rbenv |
+ A Ruby version manager that allows you to install and manage the required Ruby version for Braze Docs when you're setting up your local environment. To use a different Ruby version manager, see Ruby's supported version managers. |
+
+
+ Text editor |
+ Visual Studio Code (VS Code) |
+ A full-featured text editor by Microsoft that allows you to edit any file in the Braze Docs repository. To improve your experience, be sure to install the following plugins:
+
+ |
+
+
+ Text editor |
+ Intellij's IDEA Community Edition |
+ A full-featured text editor by Intellij that allows you to edit any file in the Braze Docs repository. To improve your experience, be sure to install the following plugins:
+
+ |
+
+
+
+{: .reset-td-br-1 .reset-td-br-2 role="presentation" }
+
+{% alert note %}
+As of writing, all software is free of cost. If you find that a product is no longer free, [please let us know](https://github.com/braze-inc/braze-docs/issues/new?assignees=&labels=issue&projects=&template=report_an_issue.md&title=).
+{% endalert %}
+
+### Step 2.2: Set up your GitHub account
+
+Next, [create a GitHub account](https://github.com/join) and [set up your SSH key](https://docs.github.com/en/enterprise-cloud@latest/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).
+
+{% alert note %}
+If you're using [WSL](https://learn.microsoft.com/en-us/windows/wsl/install), follow the Linux instructions to set up your SSH key.
+{% endalert %}
+
+### Step 2.3: Fork the repository
+
+Open the [Braze Docs GitHub repository](https://github.com/braze-inc/braze-docs), then select **Fork**.
+
+![The Braze Docs GitHub repository showing "Fork".]({% image_buster /assets/img/contributing/github/fork_the_repository.png %})
+
+{% alert tip %}
+For more information, see [GitHub: About forks](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks).
+{% endalert %}
+
+Keep the default settings, then select **Create fork**.
+
+![The Braze Docs GitHub repository showing "Create fork".]({% image_buster /assets/img/contributing/github/create_a_new_fork.png %})
+
+In your forked repository, select **Code** > **SSH** > **Copy**.
+
+![An example forked repository with the "Code" dropdown open showing the "Copy" option.]({% image_buster /assets/img/contributing/github/clone_the_fork.png %}){: style="max-width:50%;"}
+
+In your terminal, open your home directory, then clone the Braze Docs repository.
+
+```bash
+cd ~
+git clone git@github.com:braze-inc/braze-docs.git
+```
+
+### Step 2.4: Install Ruby
+
+To [generate a local site preview]({{site.baseurl}}/contributing/generating_a_preview/), you'll need Ruby version `3.3.0` installed. In the terminal, open `braze-docs` and check for Ruby version `3.3.0`.
+
+```bash
+cd ~/braze-docs
+ruby --version
+```
+
+If this version isn't installed, use a [supported version manager](https://www.ruby-lang.org/en/documentation/installation/#managers) to install Ruby version `3.3.0`. For example, using [rbenv](https://github.com/rbenv/rbenv):
+
+```bash
+rbenv install 3.3.0
+```
+
+### Step 2.5: Install dependencies
+
+Next, install the dependencies for Braze Docs. These are small programs used to generate your local Braze Docs site.
+
+```bash
+bundle install
+```
+
+## Next steps
+
+If you're new to Git or docs-as-code, start with our tutorial: [Your first contribution]({{site.baseurl}}/contributing/your_first_contribution/). Otherwise, check out one of the following.
+
+- [Content management]({{site.baseurl}}/contributing/content_management/)
+- [YAML metadata]({{site.baseurl}}/contributing/yaml_front_matter/metadata/)
+- [Generating a preview]({{site.baseurl}}/contributing/generating_a_preview/)
+- [Style guides]({{site.baseurl}}/contributing/style_guide)
\ No newline at end of file
diff --git a/_docs/_user_guide/data_and_analytics/braze_currents/event_glossary/message_engagement_events.md b/_docs/_user_guide/data_and_analytics/braze_currents/event_glossary/message_engagement_events.md
index d9eb8e29fff..bf666f867e7 100644
--- a/_docs/_user_guide/data_and_analytics/braze_currents/event_glossary/message_engagement_events.md
+++ b/_docs/_user_guide/data_and_analytics/braze_currents/event_glossary/message_engagement_events.md
@@ -8429,7 +8429,203 @@ This event occures whenever a user has had an opportunity to interact with your
Feature flag impressions are only logged once per session.
+{% tabs %}
+{% tab Mixpanel %}
+```json
+// Feature Flag Experiment Impression: users.messages.featureflag.Impression
+
+{
+ "event" : "(required, string) The event type name, as it is exported to Mixpanel",
+ "properties" : {
+ "$partner_id" : "braze",
+ "app_id" : "(optional, string) API ID of the app on which this event occurred",
+ "app_group_id" : "(optional, string) API ID of the app group this user belongs to",
+ "browser" : "(optional, string) Device browser - extracted from user_agent - on which the open occurred",
+ "campaign_id" : "(optional, string) API ID of the campaign this event belongs to",
+ "campaign_name" : "(optional, string) Name of the campaign",
+ "canvas_id" : "(optional, string) API ID of the Canvas this event belongs to",
+ "canvas_name" : "(optional, string) Name of the Canvas",
+ "canvas_step_id" : "(optional, string) API ID of the Canvas step this event belongs to",
+ "canvas_step_name" : "(optional, string) Name of the Canvas step",
+ "canvas_variation_id" : "(optional, string) API ID of the Canvas variation this event belongs to",
+ "canvas_variation_name" : "(optional, string) Name of the Canvas variation this user received",
+ "device_id" : "(optional, string) ID of the device on which the event occurred",
+ "$device" : "(optional, string) Model of the device",
+ "distinct_id" : "(required, string) External ID of the user",
+ "feature_flag_id_name" : "(optional, string) The Feature Flag Rollout identifier",
+ "$insert_id" : "(required, string) Globally unique ID for this event",
+ "message_variation_id" : "(optional, string) API ID of the message variation this user received",
+ "message_variation_name" : "(optional, string) Name of the message variation",
+ "$os" : "(optional, string) Version of the operating system of the device",
+ "platform" : "(optional, string) Platform of the device",
+ "time" : "(required, int) UNIX timestamp at which the event happened",
+ "token" : "(required, string) The Mixpanel API token"
+ }
+}
+```
+{% endtab %}
+
+{% tab Cloud Storage %}
+```json
+// Feature Flag Experiment Impression: users.messages.featureflag.Impression
+
+{
+ "app_group_id" : "(optional, string) API ID of the app group this user belongs to",
+ "app_id" : "(optional, string) API ID of the app on which this event occurred",
+ "browser" : "(optional, string) Device browser - extracted from user_agent - on which the open occurred",
+ "campaign_id" : "(optional, string) API ID of the campaign this event belongs to",
+ "campaign_name" : "(optional, string) Name of the campaign",
+ "canvas_id" : "(optional, string) API ID of the Canvas this event belongs to",
+ "canvas_name" : "(optional, string) Name of the Canvas",
+ "canvas_step_id" : "(optional, string) API ID of the Canvas step this event belongs to",
+ "canvas_step_message_variation_id" : "(optional, string) API ID of the Canvas step message variation this user received",
+ "canvas_step_name" : "(optional, string) Name of the Canvas step",
+ "canvas_variation_id" : "(optional, string) API ID of the Canvas variation this event belongs to",
+ "canvas_variation_name" : "(optional, string) Name of the Canvas variation this user received",
+ "carrier" : "(optional, string) Carrier of the device",
+ "country" : "(optional, string) Country of the user",
+ "device_id" : "(optional, string) ID of the device on which the event occurred",
+ "device_model" : "(optional, string) Model of the device",
+ "external_user_id" : "(optional, string) External ID of the user",
+ "feature_flag_id_name" : "(optional, string) The Feature Flag Rollout identifier",
+ "gender" : "(optional, string) Gender of the user, one of ['M', 'F', 'O', 'N', 'P']",
+ "id" : "(required, string) Globally unique ID for this event",
+ "language" : "(optional, string) Language of the user",
+ "message_variation_id" : "(optional, string) API ID of the message variation this user received",
+ "message_variation_name" : "(optional, string) Name of the message variation",
+ "os_version" : "(optional, string) Version of the operating system of the device",
+ "platform" : "(optional, string) Platform of the device",
+ "resolution" : "(optional, string) Resolution of the device",
+ "sdk_version" : "(optional, string) Version of the Braze SDK in use during the event",
+ "time" : "(required, int) UNIX timestamp at which the event happened",
+ "timezone" : "(optional, string) Time zone of the user",
+ "user_id" : "(required, string) Braze user ID of the user who performed this event"
+}
+```
+{% endtab %}
+
+{% tab mParticle %}
+```json
+// Feature Flag Experiment Impression: users.messages.featureflag.Impression
+
+{
+ "device_info" : {
+ "ios_idfv" : "(optional, string) ID of the device on which the event occurred",
+ "device_model" : "(optional, string) Model of the device",
+ "platform" : "(optional, string) Platform of the device"
+ },
+ "environment" : "(required, string) The mParticle environment (either 'development' or 'production')",
+ "events" : [
+ {
+ "data" : {
+ "custom_attributes" : {
+ "app_id" : "(optional, string) API ID of the app on which this event occurred",
+ "app_group_id" : "(optional, string) API ID of the app group this user belongs to",
+ "browser" : "(optional, string) Device browser - extracted from user_agent - on which the open occurred",
+ "campaign_id" : "(optional, string) API ID of the campaign this event belongs to",
+ "campaign_name" : "(optional, string) Name of the campaign",
+ "canvas_id" : "(optional, string) API ID of the Canvas this event belongs to",
+ "canvas_name" : "(optional, string) Name of the Canvas",
+ "canvas_step_id" : "(optional, string) API ID of the Canvas step this event belongs to",
+ "canvas_step_name" : "(optional, string) Name of the Canvas step",
+ "canvas_variation_id" : "(optional, string) API ID of the Canvas variation this event belongs to",
+ "canvas_variation_name" : "(optional, string) Name of the Canvas variation this user received",
+ "device_id" : "(optional, string) ID of the device on which the event occurred",
+ "feature_flag_id_name" : "(optional, string) The Feature Flag Rollout identifier",
+ "message_variation_id" : "(optional, string) API ID of the message variation this user received",
+ "message_variation_name" : "(optional, string) Name of the message variation"
+ },
+ "custom_event_type" : "(required, string) The mParticle custom event type if the event_type is 'custom_event' (always 'other')",
+ "event_name" : "(required, string) The event type name, as it is exported to mParticle",
+ "source_message_id" : "(required, string) Globally unique ID for this event",
+ "timestamp_unixtime_ms" : "(required, int) UNIX timestamp at which the event happened"
+ },
+ "event_type" : "(required, string) mParticle event type (either 'uninstall' or 'custom_event')"
+ }
+ ],
+ "schema_version" : 2,
+ "user_attributes" : { },
+ "user_identities" : {
+ "customerid" : "(required, string) External ID of the user"
+ }
+}
+```
+{% endtab %}
+
+{% tab Amplitude %}
+```json
+// Feature Flag Experiment Impression: users.messages.featureflag.Impression
+
+{
+ "device_id" : "(optional, string) ID of the device on which the event occurred",
+ "event_properties" : {
+ "app_id" : "(optional, string) API ID of the app on which this event occurred",
+ "app_group_id" : "(optional, string) API ID of the app group this user belongs to",
+ "browser" : "(optional, string) Device browser - extracted from user_agent - on which the open occurred",
+ "campaign_id" : "(optional, string) API ID of the campaign this event belongs to",
+ "campaign_name" : "(optional, string) Name of the campaign",
+ "canvas_id" : "(optional, string) API ID of the Canvas this event belongs to",
+ "canvas_name" : "(optional, string) Name of the Canvas",
+ "canvas_step_id" : "(optional, string) API ID of the Canvas step this event belongs to",
+ "canvas_step_name" : "(optional, string) Name of the Canvas step",
+ "canvas_variation_id" : "(optional, string) API ID of the Canvas variation this event belongs to",
+ "canvas_variation_name" : "(optional, string) Name of the Canvas variation this user received",
+ "device_model" : "(optional, string) Model of the device",
+ "feature_flag_id_name" : "(optional, string) The Feature Flag Rollout identifier",
+ "message_variation_id" : "(optional, string) API ID of the message variation this user received",
+ "message_variation_name" : "(optional, string) Name of the message variation",
+ "os_version" : "(optional, string) Version of the operating system of the device",
+ "platform" : "(optional, string) Platform of the device",
+ "timezone" : "(optional, string) Time zone of the user"
+ },
+ "event_type" : "(required, string) The event type name, as it is exported to Amplitude",
+ "insert_id" : "(required, string) Globally unique ID for this event",
+ "library" : "Braze",
+ "time" : "(required, int) UNIX timestamp at which the event happened",
+ "user_id" : "(optional, string) External ID of the user"
+}
+```
+{% endtab %}
+{% tab Segment %}
+```json
+// Feature Flag Experiment Impression: users.messages.featureflag.Impression
+
+{
+ "context" : {
+ "traits" : { },
+ "device" : {
+ "model" : "(optional, string) Model of the device",
+ "type" : "(optional, string) Platform of the device"
+ }
+ },
+ "event" : "(required, string) The event type name, as it is exported to Segment",
+ "messageId" : "(required, string) Globally unique ID for this event",
+ "properties" : {
+ "app_id" : "(optional, string) API ID of the app on which this event occurred",
+ "app_group_id" : "(optional, string) API ID of the app group this user belongs to",
+ "browser" : "(optional, string) Device browser - extracted from user_agent - on which the open occurred",
+ "campaign_id" : "(optional, string) API ID of the campaign this event belongs to",
+ "campaign_name" : "(optional, string) Name of the campaign",
+ "canvas_id" : "(optional, string) API ID of the Canvas this event belongs to",
+ "canvas_name" : "(optional, string) Name of the Canvas",
+ "canvas_step_id" : "(optional, string) API ID of the Canvas step this event belongs to",
+ "canvas_step_name" : "(optional, string) Name of the Canvas step",
+ "canvas_variation_id" : "(optional, string) API ID of the Canvas variation this event belongs to",
+ "canvas_variation_name" : "(optional, string) Name of the Canvas variation this user received",
+ "device_id" : "(optional, string) ID of the device on which the event occurred",
+ "feature_flag_id_name" : "(optional, string) The Feature Flag Rollout identifier",
+ "message_variation_id" : "(optional, string) API ID of the message variation this user received",
+ "message_variation_name" : "(optional, string) Name of the message variation",
+ "platform" : "(optional, string) Platform of the device"
+ },
+ "timestamp" : "(required, int) UNIX timestamp at which the event happened",
+ "type" : "track",
+ "userId" : "(required, string) External ID of the user"
+}
+```
+{% endtab %}
+{% endtabs %}
{% endapi %}
@@ -8934,11 +9130,173 @@ This event occurs when a user enters into the Canvas. This event tells you which
## Canvas step progression events
{% apitags %}
-Canvas, StepProgression
+CanvasStep, Progression
{% endapitags %}
This event occurs when a user progresses through a step in a Canvas with some outcome. Currently, only split steps – Audience Paths, Decision Split, Action Paths, Experiment – and Advance outcomes generate Step Progression events.
+{% tabs %}
+{% tab Mixpanel %}
+```json
+// Canvas Step Progression: users.canvasstep.Progression
+
+{
+ "event" : "(required, string) The event type name, as it is exported to Mixpanel",
+ "properties" : {
+ "$partner_id" : "braze",
+ "app_group_id" : "(optional, string) API ID of the app group this user belongs to",
+ "canvas_id" : "(optional, string) API ID of the Canvas this event belongs to",
+ "canvas_entry_id" : "(required, string) Unique identifier for this instance of a user in a canvas",
+ "canvas_name" : "(optional, string) Name of the Canvas",
+ "canvas_step_id" : "(optional, string) API ID of the Canvas step this event belongs to",
+ "canvas_step_name" : "(optional, string) Name of the Canvas step",
+ "canvas_variation_id" : "(optional, string) API ID of the Canvas variation this event belongs to",
+ "canvas_variation_name" : "(optional, string) Name of the Canvas variation this user received",
+ "device_id" : "(optional, string) ID of the device on which the event occurred",
+ "exit_reason" : "(optional, string) If this is an exit, the reason a user exited the canvas during the step",
+ "distinct_id" : "(required, string) External ID of the user",
+ "$insert_id" : "(required, string) Globally unique ID for this event",
+ "is_canvas_entry" : "(optional, boolean) Whether this is entry into a first step in a canvas",
+ "next_step_id" : "(optional, string) API ID of the next step in the canvas",
+ "progression_type" : "(required, string) What type of step progression event this is",
+ "time" : "(required, int) UNIX timestamp at which the event happened",
+ "token" : "(required, string) The Mixpanel API token"
+ }
+}
+```
+{% endtab %}
+
+{% tab Cloud Storage %}
+```json
+// Canvas Step Progression: users.canvasstep.Progression
+{
+ "app_group_id" : "(optional, string) API ID of the app group this user belongs to",
+ "canvas_entry_id" : "(required, string) Unique identifier for this instance of a user in a canvas",
+ "canvas_id" : "(optional, string) API ID of the Canvas this event belongs to",
+ "canvas_name" : "(optional, string) Name of the Canvas",
+ "canvas_step_id" : "(optional, string) API ID of the Canvas step this event belongs to",
+ "canvas_step_name" : "(optional, string) Name of the Canvas step",
+ "canvas_variation_id" : "(optional, string) API ID of the Canvas variation this event belongs to",
+ "canvas_variation_name" : "(optional, string) Name of the Canvas variation this user received",
+ "device_id" : "(optional, string) ID of the device on which the event occurred",
+ "exit_reason" : "(optional, string) If this is an exit, the reason a user exited the canvas during the step",
+ "external_user_id" : "(optional, string) External ID of the user",
+ "id" : "(required, string) Globally unique ID for this event",
+ "is_canvas_entry" : "(optional, boolean) Whether this is entry into a first step in a canvas",
+ "next_step_id" : "(optional, string) API ID of the next step in the canvas",
+ "progression_type" : "(required, string) What type of step progression event this is",
+ "time" : "(required, int) UNIX timestamp at which the event happened",
+ "user_id" : "(required, string) Braze user ID of the user who performed this event"
+}
+```
+{% endtab %}
+
+{% tab mParticle %}
+```json
+// Canvas Step Progression: users.canvasstep.Progression
+
+{
+ "device_info" : {
+ "ios_idfv" : "(optional, string) ID of the device on which the event occurred"
+ },
+ "environment" : "(required, string) The mParticle environment (either 'development' or 'production')",
+ "events" : [
+ {
+ "data" : {
+ "custom_attributes" : {
+ "app_group_id" : "(optional, string) API ID of the app group this user belongs to",
+ "canvas_id" : "(optional, string) API ID of the Canvas this event belongs to",
+ "canvas_entry_id" : "(required, string) Unique identifier for this instance of a user in a canvas",
+ "canvas_name" : "(optional, string) Name of the Canvas",
+ "canvas_step_id" : "(optional, string) API ID of the Canvas step this event belongs to",
+ "canvas_step_name" : "(optional, string) Name of the Canvas step",
+ "canvas_variation_id" : "(optional, string) API ID of the Canvas variation this event belongs to",
+ "canvas_variation_name" : "(optional, string) Name of the Canvas variation this user received",
+ "device_id" : "(optional, string) ID of the device on which the event occurred",
+ "exit_reason" : "(optional, string) If this is an exit, the reason a user exited the canvas during the step",
+ "is_canvas_entry" : "(optional, boolean) Whether this is entry into a first step in a canvas",
+ "next_step_id" : "(optional, string) API ID of the next step in the canvas",
+ "progression_type" : "(required, string) What type of step progression event this is"
+ },
+ "custom_event_type" : "(required, string) The mParticle custom event type if the event_type is 'custom_event' (always 'other')",
+ "event_name" : "(required, string) The event type name, as it is exported to mParticle",
+ "source_message_id" : "(required, string) Globally unique ID for this event",
+ "timestamp_unixtime_ms" : "(required, int) UNIX timestamp at which the event happened"
+ },
+ "event_type" : "(required, string) mParticle event type (either 'uninstall' or 'custom_event')"
+ }
+ ],
+ "schema_version" : 2,
+ "user_attributes" : { },
+ "user_identities" : {
+ "customerid" : "(required, string) External ID of the user"
+ }
+}
+```
+{% endtab %}
+
+{% tab Amplitude %}
+```json
+// Canvas Step Progression: users.canvasstep.Progression
+
+{
+ "device_id" : "(optional, string) ID of the device on which the event occurred",
+ "event_properties" : {
+ "app_group_id" : "(optional, string) API ID of the app group this user belongs to",
+ "canvas_id" : "(optional, string) API ID of the Canvas this event belongs to",
+ "canvas_entry_id" : "(required, string) Unique identifier for this instance of a user in a canvas",
+ "canvas_name" : "(optional, string) Name of the Canvas",
+ "canvas_step_id" : "(optional, string) API ID of the Canvas step this event belongs to",
+ "canvas_step_name" : "(optional, string) Name of the Canvas step",
+ "canvas_variation_id" : "(optional, string) API ID of the Canvas variation this event belongs to",
+ "canvas_variation_name" : "(optional, string) Name of the Canvas variation this user received",
+ "exit_reason" : "(optional, string) If this is an exit, the reason a user exited the canvas during the step",
+ "is_canvas_entry" : "(optional, boolean) Whether this is entry into a first step in a canvas",
+ "next_step_id" : "(optional, string) API ID of the next step in the canvas",
+ "progression_type" : "(required, string) What type of step progression event this is"
+ },
+ "event_type" : "(required, string) The event type name, as it is exported to Amplitude",
+ "insert_id" : "(required, string) Globally unique ID for this event",
+ "library" : "Braze",
+ "time" : "(required, int) UNIX timestamp at which the event happened",
+ "user_id" : "(optional, string) External ID of the user"
+}
+```
+{% endtab %}
+
+{% tab Segment %}
+```json
+// Canvas Step Progression: users.canvasstep.Progression
+
+{
+ "context" : {
+ "traits" : { },
+ "device" : { }
+ },
+ "event" : "(required, string) The event type name, as it is exported to Segment",
+ "messageId" : "(required, string) Globally unique ID for this event",
+ "properties" : {
+ "app_group_id" : "(optional, string) API ID of the app group this user belongs to",
+ "canvas_id" : "(optional, string) API ID of the Canvas this event belongs to",
+ "canvas_entry_id" : "(required, string) Unique identifier for this instance of a user in a canvas",
+ "canvas_name" : "(optional, string) Name of the Canvas",
+ "canvas_step_id" : "(optional, string) API ID of the Canvas step this event belongs to",
+ "canvas_step_name" : "(optional, string) Name of the Canvas step",
+ "canvas_variation_id" : "(optional, string) API ID of the Canvas variation this event belongs to",
+ "canvas_variation_name" : "(optional, string) Name of the Canvas variation this user received",
+ "device_id" : "(optional, string) ID of the device on which the event occurred",
+ "exit_reason" : "(optional, string) If this is an exit, the reason a user exited the canvas during the step",
+ "is_canvas_entry" : "(optional, boolean) Whether this is entry into a first step in a canvas",
+ "next_step_id" : "(optional, string) API ID of the next step in the canvas",
+ "progression_type" : "(required, string) What type of step progression event this is"
+ },
+ "timestamp" : "(required, int) UNIX timestamp at which the event happened",
+ "type" : "track",
+ "userId" : "(required, string) External ID of the user"
+}
+```
+{% endtab %}
+{% endtabs %}
{% endapi %}