ReferenceAvo Public APIExport Tracking Plan

Export Tracking Plan

Export tracking plan using Avo API

The Export API gives you the possibility to export your Avo tracking plan from any branch in multiple formats: JSON Schema (default), Snowplow Iglu self-describing JSON schemas, or NDJSON.

Endpoint

https://api.avo.app/workspaces/:workspaceId/branches/:branchId/export/v1

:workspaceId is the ID of your workspace. You’ll find it in the URL of your avo tab after /schemas/. :branchId is the ID of the branch you want to export. If you open a branch in Avo you can find it in the URL after /branches/. For the main branch simply use main. Note that the branch id is not the same as the branch name.

Returns a Json payload representation of your tracking plan.

For larger tracking plans, add ‘accept-encoding: gzip’ header to your request to have the response Gzipped for faster data delivery.

Authentication

This endpoint requires an authorization header containing a Base64 encoded service account name and secret.

Rate Limit

We currently soft-enforce 1/req/s rate limit per service account for this endpoint. Please reach out to us if you have a use case in mind that requires a higher rate limit.

Parameters

- workspaceId

Locate your workspaceId in the URL avo.app/schemas/:workspaceId

- BranchId

Locate your branchId by switching onto the branch and checking the URL

  • avo.app/schemas/:workspaceId/branches/:branchId
  • For the main branch, use main as the ID

- Base64 encoding secret header

The base64 encoded token expects name:secret

See more on authorization

Query Parameters

- payloadFormat (optional)

Controls the output format of the export. Defaults to jsonSchema if not provided.

ValueDescription
jsonSchemaDefault. Returns a JSON Schema representation of the tracking plan (unchanged behavior).
snowplowSchemasReturns Snowplow Iglu self-describing JSON schemas. Response has shape { "eventSchemas": [...], "contextSchemas": [...] }. Per-event schema versions are extracted from pinned schema properties.
ndjsonReturns the tracking plan as Newline Delimited JSON (NDJSON), with each event schema as a self-contained JSON envelope on its own line.

Returns HTTP 400 if an unrecognized value is provided.

- vendor (optional, Snowplow only)

The Iglu vendor namespace to use when payloadFormat=snowplowSchemas. Defaults to app.avo if not provided.

  • Must contain only alphanumeric characters, dots (.), hyphens (-), and underscores (_)
  • Returns HTTP 400 if the value contains invalid characters

- changedEventsOnly (optional)

When set to true (or 1), only events that have source-impacting changes on the branch are included in the export payload. This reduces payload size for downstream consumers that only need to process changes.

An event is considered “changed” when the change impacts a source. For example, a property being added to or removed from an event on a source counts as a change, but a property that is not attached to any event, or an event that is not attached to any source, will not appear as changed.

  • Only works on non-main branches. Returns HTTP 400 if used on the main branch, because it needs a branch to diff against. This is unchanged, but it now also applies to requests through api.avo.app/.../export/v2.
  • With checkpoint on a non-main branch, the whole checkpoint view is returned instead (see checkpoint).
  • When enabled, the response includes a removedEvents field containing an array of event names that were archived or lost their filtered sources on the branch. When disabled, this field is omitted.
  • Source-aware: when a source filter is applied, only changes relevant to that source are considered.

- checkpoint (optional, early access)

Exports the tracking plan as it arrives at a gateway checkpoint: an input, the gateway itself, or an output. The result is in the same format as publishing at a checkpoint sends, with every gateway rule on the way applied.

Pass it once, as one URL-encoded JSON string. It is a typed reference:

checkpoint={"kind":"gatewayOutput","gatewayId":"gw_main","id":"out_meta"}
kindCheckpointFields
sourceA source, before any gatewayid
gatewayInputWhat leaves a gateway input, with the input’s own rules appliedgatewayId, id
gatewayThe gatewayid (the gateway id)
gatewayOutputA gateway outputgatewayId, id
destinationA destinationid

Extra keys are ignored, so you can copy a reference from the gateways section or from the top-level checkpoint key of a previous response.

curl -s -G -H "authorization: Basic <Base64 encoded token>" -H "Accept-Encoding: gzip" --compressed \
  "https://api.avo.app/workspaces/$WORKSPACE_ID/branches/main/export/v2" \
  --data-urlencode 'checkpoint={"kind":"gatewayOutput","gatewayId":"gw_main","id":"out_meta"}'

What to expect:

  • JSON Schema only. Any other payloadFormat returns HTTP 400.
  • Early access. The workspace needs the PublishAtCheckpoint feature on, otherwise the request returns HTTP 403. Ask Avo support to turn it on.
  • Top-level checkpoint key. The response carries the reference, so you can see what the export was taken at.
  • Variants. Each variant is its own entry under the base event’s name. A variant’s allowed-value override replaces the base event’s allowed values for the values it names. Values the variant doesn’t name keep the base event’s state.
  • Two events renamed to one name. When a gateway renames two events to the same name (for example both to page_view for GTM), each stays its own entry under the shared name, keyed by its own event id, with its own properties, rules and allowed values.
  • changedEventsOnly. On a non-main branch, combined with checkpoint, it returns the whole checkpoint view and no removedEvents, as publishing at a checkpoint does. On main it still returns HTTP 400, as described under changedEventsOnly.
StatusWhen
400checkpoint is malformed, has an unknown kind, or is repeated (including a bracketed form such as checkpoint[kind]=...); or payloadFormat isn’t jsonSchema
403PublishAtCheckpoint is off for the workspace
404The gateway, input or output doesn’t exist, is archived, isn’t connected, or nothing arrives there
422The checkpoint can’t be expressed as one schema (for example a property arriving under two names on one event). The error names the property or event

Per-source property presence

A property can be configured to be sent from some of an event’s sources and not others. When enabled, each property entry carries that breakdown as sourcePresence in the JSON Schema format, and each line of the properties file carries it as source_presence in the ndjson format.

This is opt-in per workspace and off by default. If you don’t see the field, it hasn’t been enabled for your workspace — ask Avo support to turn it on. Workspaces created after the field shipped have it on. It is purely additive: no existing field changes value or position when it is enabled.

"user_tier": {
  "id": "p_user_tier",
  "index": 2,
  "nameMapping": [],
  "isSystemProperty": false,
  "type": ["string", "null"],
  "sourcePresence": [
    { "sourceId": "src_web", "sourceName": "Website", "presence": "alwaysSent" },
    { "sourceId": "src_android", "sourceName": "Android", "presence": "sometimesSent" },
    { "sourceId": "src_ios", "sourceName": "iOS", "presence": "neverSent" }
  ]
}
FieldTypeDescription
sourceIdstringSource id. This is the join key — match on it, not on the name
sourceNamestringSource display name. Advisory only
presencealwaysSent | sometimesSent | neverSentWhether the property is always, sometimes, or never sent from this source on this event

How to read it:

  • The breakdown is complete. Every source the export covers for that event gets an entry, alwaysSent included, so you never have to infer presence from a missing entry.
  • It covers the sources this export covers. Under a source filter it narrows to the filter, exactly as required does. In the ndjson format the event’s sources array matches that set exactly. In the JSON Schema format the event’s sources array is not narrowed by the filter, so it can list sources the breakdown does not cover — infer nothing about a listed source that has no entry.
  • The key can be absent, and only in one case: the export covers no source at all for that event. It is never emitted as an empty array or as null.
  • In the ndjson format it is on the properties file only, deliberately not on the embedded property summary in the events file, so the payload does not carry it twice.
  • required is unchanged. It stays a single value per property across all covered sources; the breakdown decomposes it rather than replacing it. Where any covered source is sometimesSent or neverSent, the property is not required. One legacy configuration diverges: a property using the older “excluded sources” setting reports neverSent for an excluded source while still being listed as required.

If you load the ndjson export into a warehouse with a fixed schema — for example a BigQuery load job with ignoreUnknownValues=false — an unexpected column makes the load fail. Widen your schema before the field is enabled for your workspace.

Gateways section

When the Gateways feature is on for your workspace and the workspace has at least one gateway, the default JSON Schema export carries a top-level gateways section. Every other export is byte-for-byte what it was before: a missing gateways key only means the section is not included in this export (the feature is off, or the export is not the default JSON Schema format), not that the workspace has no gateways.

The section is configuration only: the gateways, their inputs and outputs, and each rule. It does not say what a checkpoint receives. Use the checkpoint parameter for that.

"gateways": {
  "gw_main": {
    "id": "gw_main",
    "name": "Segment gateway",
    "inputs": {
      "in_web": {
        "id": "in_web",
        "from": [{ "kind": "source", "id": "web" }],
        "rules": {
          "properties": {
            "p_debug_flag": { "name": "Debug Flag", "action": "remove" }
          }
        }
      }
    },
    "outputs": {
      "out_meta": {
        "id": "out_meta",
        "outputReference": "meta",
        "to": [{ "kind": "destination", "id": "d_meta" }],
        "rules": {
          "unlistedEvents": "remove",
          "events": {
            "e_purchase": { "name": "Purchase", "action": "keep" }
          },
          "eventPropertyRules": {
            "r_1": {
              "propertyId": "p_email",
              "name": "Email",
              "on": ["e_purchase"],
              "action": "remove"
            }
          }
        }
      }
    }
  }
}

The example is abbreviated. Rules can also sit on the gateway itself, under its own rules key.

  • Gateways, inputs and outputs are keyed by id and repeat it as id; a gateway’s name is written only when it has one. from and to are arrays of typed references (the same shape checkpoint takes), [] when nothing is connected.
  • Rules are flat: action, override fields only when the rule sets them (a cleared override is null), unlistedEvents / unlistedProperties, and description. The rules key is left out when a checkpoint has no rules.
  • Rules on every event sit under properties, keyed by property id.
  • Rules on some events sit under eventPropertyRules, keyed by rule id, with propertyId, the property name, and the on or except scope (event ids).
  • Object key rules are listed under objectKeys, each with its path and an action of remove or rename.
  • A type change writes propertyType and isList when the rule sets them.

Governance fields

For workspaces using Governance (Enterprise plan), the JSON Schema export includes the governance values:

FieldWhereDescription
customFieldsEvents and propertiesObject mapping each custom field name to its value, encoded per field type: a string (Text, Single select), an array of strings (Multi select, Array of strings), a boolean (Boolean), or a JSON value (JSON)
piiPropertiesObject with isPii (boolean) and, for PII properties, piiType (the PII type name). Absent when the property’s PII status is Undeclared
piiEventsObject with containsPii: true and piiTypes (the names of the PII types found on the event’s properties). Only present when the event contains PII properties

customFields and the property-level pii object round-trip through the Import API, as long as the custom field and PII type definitions exist in the target workspace. The event-level pii object is informational only — it’s computed from the PII status of the event’s properties and ignored on import.

Example Usage

JSON Schema (default)

$ curl -H "authorization: Basic <Base64 encoded token>" -X GET https://api.avo.app/workspaces/:workspaceId/branches/main/export/v1
# or explicitly:
$ curl -H "authorization: Basic <Base64 encoded token>" -X GET "https://api.avo.app/workspaces/:workspaceId/branches/main/export/v1?payloadFormat=jsonSchema"

Snowplow Schemas

$ curl -H "authorization: Basic <Base64 encoded token>" -X GET "https://api.avo.app/workspaces/:workspaceId/branches/main/export/v1?payloadFormat=snowplowSchemas"
# with a custom vendor:
$ curl -H "authorization: Basic <Base64 encoded token>" -X GET "https://api.avo.app/workspaces/:workspaceId/branches/main/export/v1?payloadFormat=snowplowSchemas&vendor=com.mycompany"

NDJSON

$ curl -H "authorization: Basic <Base64 encoded token>" -X GET "https://api.avo.app/workspaces/:workspaceId/branches/main/export/v1?payloadFormat=ndjson"

Changed Events Only

$ curl -H "authorization: Basic <Base64 encoded token>" -X GET "https://api.avo.app/workspaces/:workspaceId/branches/:branchId/export/v1?changedEventsOnly=true"

Response (JSON Schema):

Preview Json Response
{
  "name": "Exported Tracking Plan: main",
  "events": [
    {
      "id": "C3XnUJ3kRq",
      "name": "page_viewed",
      "description": "When a user views a web page within the website",
      "triggers": [],
      "tags": ["Tier 3 - UI"],
      "categories": ["ujPLZEoj9"],
      "actions": ["skipLogEvent", "page"],
      "sources": [
        {
          "id": "Z8siDew5I",
          "name": "Website",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "page_title": {
                "id": "ElSfT9WzR",
                "index": 0,
                "description": "Title of the web page",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "page_url": {
                "id": "ojoRkR5_-",
                "index": 1,
                "description": "URL of the web page",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "page_query": {
                "id": "rQ8gO_Oyf",
                "index": 2,
                "description": "HTML query string from page URL (?variable=value etc)",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 3,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 4,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "page_title",
              "page_url",
              "page_query",
              "app_name",
              "app_version"
            ]
          }
        }
      }
    },
    {
      "id": "3ysJ7dtvo",
      "name": "link_clicked",
      "description": "When a user clicks a web link",
      "triggers": [],
      "tags": ["Tier 3 - UI"],
      "categories": ["ujPLZEoj9"],
      "actions": ["logEvent"],
      "sources": [
        {
          "id": "Z8siDew5I",
          "name": "Website",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "link_label": {
                "id": "PBwPS4fHR",
                "index": 0,
                "description": "The label on the link as seen by the user",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "link_url": {
                "id": "najwoUnNr",
                "index": 1,
                "description": "The destination URL of the link",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 2,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 3,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": ["link_label", "link_url", "app_name", "app_version"]
          }
        }
      }
    },
    {
      "id": "IoEtIvfQBw",
      "name": "user_account_created",
      "description": "When a user creates an account",
      "triggers": [],
      "tags": ["Tier 1 - Customer/Revenue"],
      "categories": ["U2yiEhv-z"],
      "actions": ["logEvent", "identify"],
      "sources": [
        {
          "id": "g8jALgEm8",
          "name": "Backend",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            },
            {
              "id": "jNEdDoL-7"
            },
            {
              "id": "MrfxKOlw8"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "authentication_method": {
                "id": "AQlf1NLD_k",
                "index": 0,
                "description": "The mechanism by which the user authenticated their account (e.g. Google SSO, Apple SSO, email/pass)",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 1,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 2,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": ["authentication_method", "app_name", "app_version"]
          },
          "userProperties": {
            "type": "object",
            "properties": {
              "user_first_name": {
                "id": "HSBADFYrPB",
                "index": 0,
                "description": "User's first name",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "user_surname": {
                "id": "rSGLlBzhEg",
                "index": 1,
                "description": "User's surname",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "user_email_address": {
                "id": "sEaU5fCUNz",
                "index": 2,
                "description": "User's email address",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "user_country": {
                "id": "pQqfhfFcMZ",
                "index": 3,
                "description": "The country the user is based in",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "user_language": {
                "id": "jHb6HjMpbB",
                "index": 4,
                "description": "The language the user has set within the application",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "user_first_name",
              "user_surname",
              "user_email_address",
              "user_country",
              "user_language"
            ]
          }
        }
      }
    },
    {
      "id": "usqGPDSbeL",
      "name": "product_viewed",
      "description": "When a user views a product page",
      "triggers": [],
      "tags": ["Tier 2 - Product"],
      "categories": ["o2odrHGgK"],
      "actions": ["logEvent"],
      "sources": [
        {
          "id": "WmAiFg1DR",
          "name": "Android",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "8ZF8Z5i4M",
          "name": "iOS",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "Z8siDew5I",
          "name": "Website",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "product_id": {
                "id": "Bslqe3Ili",
                "index": 0,
                "description": "Identifier for the product",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "product_display_name": {
                "id": "f2SJjht-L",
                "index": 1,
                "description": "The name of the product as shown to the user",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "product_price_usd": {
                "id": "kzGzqqf6D",
                "index": 2,
                "description": "The price of the product in USD (ex tax+shipping)",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "number"
              },
              "product_category": {
                "id": "QqDB4vxlK",
                "index": 3,
                "description": "The category of the product",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string",
                "enum": ["electronics", "clothing", "food", "outdoors"]
              },
              "product_description": {
                "id": "8ZoOLi3hF",
                "index": 4,
                "description": "Description of the product",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 5,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 6,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "product_id",
              "product_display_name",
              "product_price_usd",
              "product_category",
              "product_description",
              "app_name",
              "app_version"
            ]
          }
        }
      }
    },
    {
      "id": "VSKv7P38Cg",
      "name": "product_added_to_basket",
      "description": "When a user adds a product to their basket",
      "triggers": [],
      "tags": ["Tier 2 - Product"],
      "categories": ["o2odrHGgK"],
      "actions": ["logEvent"],
      "sources": [
        {
          "id": "WmAiFg1DR",
          "name": "Android",
          "implementWithCodegen": false,
          "destinations": [
            {
              "id": "jNEdDoL-7"
            },
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "8ZF8Z5i4M",
          "name": "iOS",
          "implementWithCodegen": false,
          "destinations": [
            {
              "id": "jNEdDoL-7"
            },
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "Z8siDew5I",
          "name": "Website",
          "implementWithCodegen": false,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "product_id": {
                "id": "Bslqe3Ili",
                "index": 0,
                "description": "Identifier for the product",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "product_display_name": {
                "id": "f2SJjht-L",
                "index": 1,
                "description": "The name of the product as shown to the user",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "product_price_usd": {
                "id": "kzGzqqf6D",
                "index": 2,
                "description": "The price of the product in USD (ex tax+shipping)",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "number"
              },
              "product_category": {
                "id": "QqDB4vxlK",
                "index": 3,
                "description": "The category of the product",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string",
                "enum": ["electronics", "clothing", "food", "outdoors"]
              },
              "product_description": {
                "id": "8ZoOLi3hF",
                "index": 4,
                "description": "Description of the product",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 5,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 6,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "product_id",
              "product_display_name",
              "product_price_usd",
              "product_category",
              "product_description",
              "app_name",
              "app_version"
            ]
          }
        }
      }
    },
    {
      "id": "7G61o4B9G",
      "name": "checkout_started",
      "description": "When a user starts the checkout process",
      "triggers": [],
      "tags": ["Tier 1 - Customer/Revenue"],
      "categories": ["crsxPVqkt"],
      "actions": ["logEvent"],
      "sources": [
        {
          "id": "WmAiFg1DR",
          "name": "Android",
          "implementWithCodegen": false,
          "destinations": [
            {
              "id": "MrfxKOlw8"
            },
            {
              "id": "jNEdDoL-7"
            },
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "8ZF8Z5i4M",
          "name": "iOS",
          "implementWithCodegen": false,
          "destinations": [
            {
              "id": "MrfxKOlw8"
            },
            {
              "id": "jNEdDoL-7"
            },
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "Z8siDew5I",
          "name": "Website",
          "implementWithCodegen": false,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            },
            {
              "id": "jNEdDoL-7"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "checkout_id": {
                "id": "9_FVqqEuw",
                "index": 0,
                "description": "Identifier for the checkout process",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "checkout_basket": {
                "id": "SqIVNBclU",
                "index": 1,
                "description": "List of product property bundle objects",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": false
                }
              },
              "checkout_payment_method": {
                "id": "TXFbynuna",
                "index": 2,
                "description": "The payment method selected during the checkout",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": ["string", "null"],
                "enum": ["paypal", "card", "gpay", "apple_pay"]
              },
              "checkout_total_local": {
                "id": "0pM63DmMx",
                "index": 3,
                "description": "Total amount of the order in local currency (ex shipping + tax)",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "number"
              },
              "checkout_delivery_address": {
                "id": "IR8foGF9s",
                "index": 4,
                "description": "Delivery address for the order to be shipped to",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": ["string", "null"]
              },
              "checkout_delivery_method": {
                "id": "Ew_BIhOfS",
                "index": 5,
                "description": "The delivery method selected during the checkout process",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": ["string", "null"],
                "enum": ["next_day", "standard", "named_day"]
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 6,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 7,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "checkout_id",
              "checkout_basket",
              "checkout_total_local",
              "app_name",
              "app_version"
            ]
          }
        }
      }
    },
    {
      "id": "dKxlmCGgz",
      "name": "product_removed_from_basket",
      "description": "When a user removes a product from the basket",
      "triggers": [],
      "tags": ["Tier 2 - Product"],
      "categories": ["o2odrHGgK"],
      "actions": ["logEvent"],
      "sources": [
        {
          "id": "WmAiFg1DR",
          "name": "Android",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "8ZF8Z5i4M",
          "name": "iOS",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "Z8siDew5I",
          "name": "Website",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "product_id": {
                "id": "Bslqe3Ili",
                "index": 0,
                "description": "Identifier for the product",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "product_display_name": {
                "id": "f2SJjht-L",
                "index": 1,
                "description": "The name of the product as shown to the user",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "product_price_usd": {
                "id": "kzGzqqf6D",
                "index": 2,
                "description": "The price of the product in USD (ex tax+shipping)",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "number"
              },
              "product_category": {
                "id": "QqDB4vxlK",
                "index": 3,
                "description": "The category of the product",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string",
                "enum": ["electronics", "clothing", "food", "outdoors"]
              },
              "product_description": {
                "id": "8ZoOLi3hF",
                "index": 4,
                "description": "Description of the product",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 5,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 6,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "product_id",
              "product_display_name",
              "product_price_usd",
              "product_category",
              "product_description",
              "app_name",
              "app_version"
            ]
          }
        }
      }
    },
    {
      "id": "taWnl30zC",
      "name": "user_logged_in",
      "description": "When a user logs into their account",
      "triggers": [],
      "tags": ["Tier 3 - UI"],
      "categories": ["ujPLZEoj9"],
      "actions": ["logEvent", "identify"],
      "sources": [
        {
          "id": "WmAiFg1DR",
          "name": "Android",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "8ZF8Z5i4M",
          "name": "iOS",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "Z8siDew5I",
          "name": "Website",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "authentication_method": {
                "id": "AQlf1NLD_k",
                "index": 0,
                "description": "The mechanism by which the user authenticated their account (e.g. Google SSO, Apple SSO, email/pass)",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 1,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 2,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": ["authentication_method", "app_name", "app_version"]
          }
        }
      }
    },
    {
      "id": "UZqMos5s2",
      "name": "checkout_delivery_confirmed",
      "description": "When a user adds/confirms their delivery details",
      "triggers": [],
      "tags": ["Tier 2 - Product"],
      "categories": ["crsxPVqkt"],
      "actions": ["logEvent"],
      "sources": [
        {
          "id": "WmAiFg1DR",
          "name": "Android",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "8ZF8Z5i4M",
          "name": "iOS",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "Z8siDew5I",
          "name": "Website",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "checkout_id": {
                "id": "9_FVqqEuw",
                "index": 0,
                "description": "Identifier for the checkout process",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "checkout_basket": {
                "id": "SqIVNBclU",
                "index": 1,
                "description": "List of product property bundle objects",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": false
                }
              },
              "checkout_payment_method": {
                "id": "TXFbynuna",
                "index": 2,
                "description": "The payment method selected during the checkout",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": ["string", "null"],
                "enum": ["paypal", "card", "gpay", "apple_pay"]
              },
              "checkout_total_local": {
                "id": "0pM63DmMx",
                "index": 3,
                "description": "Total amount of the order in local currency (ex shipping + tax)",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "number"
              },
              "checkout_delivery_address": {
                "id": "IR8foGF9s",
                "index": 4,
                "description": "Delivery address for the order to be shipped to",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "checkout_delivery_method": {
                "id": "Ew_BIhOfS",
                "index": 5,
                "description": "The delivery method selected during the checkout process",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string",
                "enum": ["next_day", "standard", "named_day"]
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 6,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 7,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "checkout_id",
              "checkout_basket",
              "checkout_total_local",
              "checkout_delivery_address",
              "checkout_delivery_method",
              "app_name",
              "app_version"
            ]
          }
        }
      }
    },
    {
      "id": "DsgnVFXkV",
      "name": "checkout_payment_confirmed",
      "description": "When a user adds/confirms their payment details",
      "triggers": [],
      "tags": ["Tier 2 - Product"],
      "categories": ["crsxPVqkt"],
      "actions": ["logEvent"],
      "sources": [
        {
          "id": "WmAiFg1DR",
          "name": "Android",
          "implementWithCodegen": false,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "8ZF8Z5i4M",
          "name": "iOS",
          "implementWithCodegen": false,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "Z8siDew5I",
          "name": "Website",
          "implementWithCodegen": false,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "checkout_id": {
                "id": "9_FVqqEuw",
                "index": 0,
                "description": "Identifier for the checkout process",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "checkout_basket": {
                "id": "SqIVNBclU",
                "index": 1,
                "description": "List of product property bundle objects",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": false
                }
              },
              "checkout_payment_method": {
                "id": "TXFbynuna",
                "index": 2,
                "description": "The payment method selected during the checkout",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string",
                "enum": ["paypal", "card", "gpay", "apple_pay"]
              },
              "checkout_total_local": {
                "id": "0pM63DmMx",
                "index": 3,
                "description": "Total amount of the order in local currency (ex shipping + tax)",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "number"
              },
              "checkout_delivery_address": {
                "id": "IR8foGF9s",
                "index": 4,
                "description": "Delivery address for the order to be shipped to",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "checkout_delivery_method": {
                "id": "Ew_BIhOfS",
                "index": 5,
                "description": "The delivery method selected during the checkout process",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string",
                "enum": ["next_day", "standard", "named_day"]
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 6,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 7,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "checkout_id",
              "checkout_basket",
              "checkout_payment_method",
              "checkout_total_local",
              "checkout_delivery_address",
              "checkout_delivery_method",
              "app_name",
              "app_version"
            ]
          }
        }
      }
    },
    {
      "id": "BtBhbKNW1",
      "name": "checkout_completed",
      "description": "When a checkout has completed successfully",
      "triggers": [],
      "tags": ["Tier 1 - Customer/Revenue"],
      "categories": ["crsxPVqkt"],
      "actions": ["logEvent"],
      "sources": [
        {
          "id": "g8jALgEm8",
          "name": "Backend",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            },
            {
              "id": "jNEdDoL-7"
            },
            {
              "id": "MrfxKOlw8"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "checkout_id": {
                "id": "9_FVqqEuw",
                "index": 0,
                "description": "Identifier for the checkout process",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "checkout_basket": {
                "id": "SqIVNBclU",
                "index": 1,
                "description": "List of product property bundle objects",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": false
                }
              },
              "checkout_payment_method": {
                "id": "TXFbynuna",
                "index": 2,
                "description": "The payment method selected during the checkout",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string",
                "enum": ["paypal", "card", "gpay", "apple_pay"]
              },
              "checkout_total_local": {
                "id": "0pM63DmMx",
                "index": 3,
                "description": "Total amount of the order in local currency (ex shipping + tax)",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "number"
              },
              "checkout_delivery_address": {
                "id": "IR8foGF9s",
                "index": 4,
                "description": "Delivery address for the order to be shipped to",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "checkout_delivery_method": {
                "id": "Ew_BIhOfS",
                "index": 5,
                "description": "The delivery method selected during the checkout process",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string",
                "enum": ["next_day", "standard", "named_day"]
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 6,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 7,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "checkout_id",
              "checkout_basket",
              "checkout_payment_method",
              "checkout_total_local",
              "checkout_delivery_address",
              "checkout_delivery_method",
              "app_name",
              "app_version"
            ]
          }
        }
      }
    },
    {
      "id": "lNHB3Im57",
      "name": "checkout_failed",
      "description": "When a checkout is unable to complete",
      "triggers": [],
      "tags": ["Tier 2 - Product"],
      "categories": ["crsxPVqkt"],
      "actions": ["logEvent"],
      "sources": [
        {
          "id": "g8jALgEm8",
          "name": "Backend",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            },
            {
              "id": "jNEdDoL-7"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "checkout_id": {
                "id": "9_FVqqEuw",
                "index": 0,
                "description": "Identifier for the checkout process",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "checkout_basket": {
                "id": "SqIVNBclU",
                "index": 1,
                "description": "List of product property bundle objects",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": false
                }
              },
              "checkout_payment_method": {
                "id": "TXFbynuna",
                "index": 2,
                "description": "The payment method selected during the checkout",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": ["string", "null"],
                "enum": ["paypal", "card", "gpay", "apple_pay"]
              },
              "checkout_total_local": {
                "id": "0pM63DmMx",
                "index": 3,
                "description": "Total amount of the order in local currency (ex shipping + tax)",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": ["number", "null"]
              },
              "checkout_delivery_address": {
                "id": "IR8foGF9s",
                "index": 4,
                "description": "Delivery address for the order to be shipped to",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": ["string", "null"]
              },
              "checkout_delivery_method": {
                "id": "Ew_BIhOfS",
                "index": 5,
                "description": "The delivery method selected during the checkout process",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": ["string", "null"],
                "enum": ["next_day", "standard", "named_day"]
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 6,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 7,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "checkout_id",
              "checkout_basket",
              "app_name",
              "app_version"
            ]
          }
        }
      }
    },
    {
      "id": "Ds6WH3R15",
      "name": "user_logged_out",
      "description": "When a user logs out of their account",
      "triggers": [],
      "tags": ["Tier 3 - UI"],
      "categories": ["ujPLZEoj9"],
      "actions": ["logEvent", "unidentify"],
      "sources": [
        {
          "id": "WmAiFg1DR",
          "name": "Android",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "8ZF8Z5i4M",
          "name": "iOS",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "Z8siDew5I",
          "name": "Website",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 0,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 1,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": ["app_name", "app_version"]
          }
        }
      }
    },
    {
      "id": "eznH-ro_n",
      "name": "checkout_abandoned",
      "description": "When a user starts the checkout process but fails to complete within the session",
      "triggers": [],
      "tags": ["Tier 2 - Product"],
      "categories": ["crsxPVqkt"],
      "actions": ["logEvent"],
      "sources": [
        {
          "id": "g8jALgEm8",
          "name": "Backend",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            },
            {
              "id": "jNEdDoL-7"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "checkout_id": {
                "id": "9_FVqqEuw",
                "index": 0,
                "description": "Identifier for the checkout process",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "checkout_basket": {
                "id": "SqIVNBclU",
                "index": 1,
                "description": "List of product property bundle objects",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": false
                }
              },
              "checkout_payment_method": {
                "id": "TXFbynuna",
                "index": 2,
                "description": "The payment method selected during the checkout",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": ["string", "null"],
                "enum": ["paypal", "card", "gpay", "apple_pay"]
              },
              "checkout_total_local": {
                "id": "0pM63DmMx",
                "index": 3,
                "description": "Total amount of the order in local currency (ex shipping + tax)",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": ["number", "null"]
              },
              "checkout_delivery_address": {
                "id": "IR8foGF9s",
                "index": 4,
                "description": "Delivery address for the order to be shipped to",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": ["string", "null"]
              },
              "checkout_delivery_method": {
                "id": "Ew_BIhOfS",
                "index": 5,
                "description": "The delivery method selected during the checkout process",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": ["string", "null"],
                "enum": ["next_day", "standard", "named_day"]
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 6,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 7,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "checkout_id",
              "checkout_basket",
              "app_name",
              "app_version"
            ]
          }
        }
      }
    },
    {
      "id": "7npoe1yq6",
      "name": "user_account_verified",
      "description": "When a user confirms their email address and successfully verifies their account",
      "triggers": [],
      "tags": ["Tier 2 - Product"],
      "categories": ["U2yiEhv-z"],
      "actions": ["logEvent"],
      "sources": [
        {
          "id": "g8jALgEm8",
          "name": "Backend",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            },
            {
              "id": "jNEdDoL-7"
            },
            {
              "id": "MrfxKOlw8"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 0,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 1,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": ["app_name", "app_version"]
          }
        }
      }
    },
    {
      "id": "jsvqaGWpl",
      "name": "screen_viewed",
      "description": "When a user views a screen within the mobile apps",
      "triggers": [],
      "tags": ["Tier 3 - UI"],
      "categories": ["ujPLZEoj9"],
      "actions": ["skipLogEvent", "page"],
      "sources": [
        {
          "id": "WmAiFg1DR",
          "name": "Android",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "8ZF8Z5i4M",
          "name": "iOS",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "screen_name": {
                "id": "ewJGkBUN4B",
                "index": 0,
                "description": "Name of the screen",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 1,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 2,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": ["screen_name", "app_name", "app_version"]
          }
        }
      }
    },
    {
      "id": "l_-GUpBCa",
      "name": "app_opened",
      "description": "When the user opens the app",
      "triggers": [],
      "tags": ["Tier 3 - UI"],
      "categories": ["ujPLZEoj9"],
      "actions": ["logEvent"],
      "sources": [
        {
          "id": "WmAiFg1DR",
          "name": "Android",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        },
        {
          "id": "8ZF8Z5i4M",
          "name": "iOS",
          "implementWithCodegen": true,
          "destinations": [
            {
              "id": "YQ2yA9OUm"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "utm_term": {
                "id": "P0RqnLoYI",
                "index": 0,
                "description": "The value for the UTM term parameter if a deep link was used",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "utm_source": {
                "id": "nt_xkeJ_X",
                "index": 1,
                "description": "The value for the UTM source parameter if a deep link was used",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "utm_medium": {
                "id": "PYlRhqIbU",
                "index": 2,
                "description": "The value for the UTM medium parameter if a deep link was used",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "utm_content": {
                "id": "BnYpd6LGX",
                "index": 3,
                "description": "The value for the UTM content parameter if a deep link was used",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "utm_campaign": {
                "id": "_7cSXSWo1",
                "index": 4,
                "description": "The value for the UTM campaign parameter if a deep link was used",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 5,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 6,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "utm_term",
              "utm_source",
              "utm_medium",
              "utm_content",
              "utm_campaign",
              "app_name",
              "app_version"
            ]
          }
        }
      }
    },
    {
      "id": "_CAGHkyxZ",
      "name": "user_app_tracking_presented",
      "description": "When a user is presented with the iOS App Tracking Transparency message",
      "triggers": [],
      "tags": ["Tier 2 - Product"],
      "categories": ["U2yiEhv-z"],
      "actions": ["logEvent"],
      "sources": [
        {
          "id": "8ZF8Z5i4M",
          "name": "iOS",
          "implementWithCodegen": false,
          "destinations": [
            {
              "id": "MrfxKOlw8"
            },
            {
              "id": "jNEdDoL-7"
            },
            {
              "id": "YQ2yA9OUm"
            }
          ]
        }
      ],
      "rules": {
        "$schema": "http://json-schema.org/draft-06/schema#",
        "type": "object",
        "required": ["properties", "nameMapping"],
        "nameMapping": [],
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "ios_tracking_enabled": {
                "id": "MLjH5QhC8u",
                "index": 0,
                "description": "Whether the user has enabled app tracking for the app within iOS",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "string"
              },
              "app_name": {
                "id": "T3A3iFXh7P",
                "index": 1,
                "description": "Name of the application that is generating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              },
              "app_version": {
                "id": "EPZIK4ZilD",
                "index": 2,
                "description": "Version of the application that is creating the events",
                "nameMapping": [],
                "isSystemProperty": true,
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": ["ios_tracking_enabled", "app_name", "app_version"]
          },
          "userProperties": {
            "type": "object",
            "properties": {
              "user_ios_tracking_enabled": {
                "id": "kc8fxETds",
                "index": 0,
                "description": "Whether the user has enabled app tracking for the app within iOS",
                "nameMapping": [],
                "isSystemProperty": false,
                "type": "boolean"
              }
            },
            "additionalProperties": false,
            "required": ["user_ios_tracking_enabled"]
          }
        }
      }
    }
  ],
  "metrics": {},
  "sources": {
    "Z8siDew5I": {
      "id": "Z8siDew5I",
      "name": "Website",
      "programmingLanguage": "JavaScript_V2",
      "developmentPlatform": "Web",
      "destinations": ["YQ2yA9OUm", "jNEdDoL-7"]
    },
    "g8jALgEm8": {
      "id": "g8jALgEm8",
      "name": "Backend",
      "programmingLanguage": "Python3",
      "developmentPlatform": "Python",
      "destinations": ["YQ2yA9OUm", "jNEdDoL-7", "MrfxKOlw8"]
    },
    "8ZF8Z5i4M": {
      "id": "8ZF8Z5i4M",
      "name": "iOS",
      "programmingLanguage": "Swift",
      "developmentPlatform": "IOS",
      "destinations": ["MrfxKOlw8", "jNEdDoL-7", "YQ2yA9OUm"]
    },
    "WmAiFg1DR": {
      "id": "WmAiFg1DR",
      "name": "Android",
      "programmingLanguage": "Java",
      "developmentPlatform": "Android",
      "destinations": ["MrfxKOlw8", "jNEdDoL-7", "YQ2yA9OUm"]
    }
  },
  "destinations": {
    "YQ2yA9OUm": {
      "id": "YQ2yA9OUm",
      "name": "RudderStack",
      "type": "Rudderstack"
    },
    "jNEdDoL-7": {
      "id": "jNEdDoL-7",
      "name": "Braze",
      "type": "Braze"
    },
    "MrfxKOlw8": {
      "id": "MrfxKOlw8",
      "name": "AppsFlyer",
      "type": "AppsFlyer"
    }
  },
  "categories": {
    "wDR6HdP7z": {
      "id": "wDR6HdP7z",
      "name": "Search",
      "description": "{\"ops\":[]}",
      "metrics": [],
      "events": ["COlxu-Qod"]
    },
    "KUZGzImDf": {
      "id": "KUZGzImDf",
      "name": "Order",
      "description": "{\"ops\":[{\"insert\":\"Events relating to orders\\n\"}]}",
      "metrics": [],
      "events": ["5eYj0JckP", "QiP29Bls-", "_dW34bUce", "axH6Fn4Ki"]
    },
    "crsxPVqkt": {
      "id": "crsxPVqkt",
      "name": "Checkout",
      "description": "{\"ops\":[{\"insert\":\"Events relating to checkouts\\n\"}]}",
      "metrics": [],
      "events": [
        "7G61o4B9G",
        "UZqMos5s2",
        "DsgnVFXkV",
        "BtBhbKNW1",
        "lNHB3Im57",
        "eznH-ro_n"
      ]
    },
    "U2yiEhv-z": {
      "id": "U2yiEhv-z",
      "name": "Onboarding",
      "description": "{\"ops\":[{\"insert\":\"Events related to user onboarding\\n\"}]}",
      "metrics": [],
      "events": ["IoEtIvfQBw", "7npoe1yq6", "_CAGHkyxZ"]
    },
    "o2odrHGgK": {
      "id": "o2odrHGgK",
      "name": "Products",
      "description": "{\"ops\":[]}",
      "metrics": [],
      "events": ["VSKv7P38Cg", "usqGPDSbeL", "dKxlmCGgz"]
    },
    "ujPLZEoj9": {
      "id": "ujPLZEoj9",
      "name": "User Interaction",
      "description": "{\"ops\":[]}",
      "metrics": [],
      "events": [
        "C3XnUJ3kRq",
        "3ysJ7dtvo",
        "taWnl30zC",
        "Ds6WH3R15",
        "jsvqaGWpl",
        "l_-GUpBCa",
        "KxcSTbeTj",
        "FLcYab-wM"
      ]
    }
  },
  "propertyGroups": {}
}

Response (Snowplow Schemas):

Preview Snowplow Schemas Response
{
  "eventSchemas": [
    {
      "$schema": "http://iglucentral.com/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#",
      "self": {
        "vendor": "app.avo",
        "name": "page_viewed",
        "format": "jsonschema",
        "version": "1-0-0"
      },
      "type": "object",
      "description": "When a user views a web page within the website",
      "properties": {
        "page_title": {
          "type": "string",
          "description": "Title of the web page"
        },
        "page_url": {
          "type": "string",
          "description": "URL of the web page"
        },
        "page_query": {
          "type": "string",
          "description": "HTML query string from page URL (?variable=value etc)"
        }
      },
      "required": ["page_title", "page_url", "page_query"],
      "additionalProperties": false
    }
  ],
  "contextSchemas": []
}

Response (NDJSON):

Preview NDJSON Response
{"schema":"iglu:app.avo/page_viewed/jsonschema/1-0-0","data":{"$schema":"http://iglucentral.com/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#","self":{"vendor":"app.avo","name":"page_viewed","format":"jsonschema","version":"1-0-0"},"type":"object","description":"When a user views a web page within the website","properties":{"page_title":{"type":"string","description":"Title of the web page"},"page_url":{"type":"string","description":"URL of the web page"},"page_query":{"type":"string","description":"HTML query string from page URL (?variable=value etc)"}},"required":["page_title","page_url","page_query"],"additionalProperties":false}}
{"schema":"iglu:app.avo/link_clicked/jsonschema/1-0-0","data":{"$schema":"http://iglucentral.com/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#","self":{"vendor":"app.avo","name":"link_clicked","format":"jsonschema","version":"1-0-0"},"type":"object","description":"When a user clicks a web link","properties":{"link_label":{"type":"string","description":"The label on the link as seen by the user"},"link_url":{"type":"string","description":"The destination URL of the link"}},"required":["link_label","link_url"],"additionalProperties":false}}

Changelog

4 November 2026

New Features

  • checkpoint optional query parameter (early access): export the JSON Schema as it arrives at a gateway input, gateway or output.
  • gateways section in the default JSON Schema export for workspaces with gateways: configuration only.

4 March 2026

New Features

  • payloadFormat optional query parameter added to the export endpoint, supporting three output formats:
    • jsonSchema (default) — unchanged behavior, returns a JSON Schema representation of the tracking plan
    • snowplowSchemas — returns Snowplow Iglu self-describing JSON schemas with shape { "eventSchemas": [...], "contextSchemas": [...] }. Per-event schema versions are extracted from pinned schema properties.
    • ndjson — returns the tracking plan as Newline Delimited JSON (NDJSON), one envelope per event per line
  • vendor optional query parameter added for use with payloadFormat=snowplowSchemas. Specifies the Iglu vendor namespace (defaults to app.avo). Only alphanumeric characters, dots, hyphens, and underscores are accepted; invalid values return HTTP 400.
  • Passing an unrecognized payloadFormat value returns HTTP 400.

14 March 2024

Bug Fixes

  • Optional Lists are now defined as optional, instead of the values inside them.

New Features

  • userProperties array has been added to the event.rules.properties object
  • groupProperties array has been added to the event.rules.properties object
  • isSystemProperty field has been added to property object, set to true for properties that are system properties in Avo.
  • groupTypeId optional field has been added to property object for groupProperties.
  • propertyGroups array has been added to schema object
  • actions array has been added to event object.

Avo is the analytics governance platform for product data that lets you define it consistently, implement it correctly and trust it everywhere. Using an AI agent? Connect it to the Avo MCP at https://mcp.avo.app/mcp and it can read and change your tracking plan on a branch.