> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequenzy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Event Schemas

> Read the published payload of a built-in event

Read what a built-in event payload actually contains: a real example payload per provider, every property path with its type, and the merge tag that resolves it.

Use this before writing `{{event.*}}` merge tags or event property filters. An unrecognized merge tag renders as an empty string rather than an error, so a guessed property name ships silently broken.

This is static reference data describing the shape of an event, not what your account has received. For real deliveries, see [List Integration Activity](/api-reference/integrations/activity).

## Request

<ParamField query="eventName" type="string">
  Event to describe, such as `ecommerce.order_placed`. Legacy aliases like
  `order.completed` resolve to their current name. Omit to list every documented
  event.
</ParamField>

<ParamField query="provider" type="string">
  Return only this provider's payload: `shopify`, `woocommerce`, `manual`,
  `api`, or `stripe`. Omit to compare every provider that documents the event.
</ParamField>

```bash theme={null}
curl "https://api.sequenzy.com/api/v1/events/schemas?eventName=ecommerce.order_placed&provider=shopify" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

## Response fields

<ResponseField name="eventName" type="string">
  The normalized event name that was described, or `null` when listing every
  documented event.
</ResponseField>

<ResponseField name="events" type="object[]">
  One entry per event. Listing mode returns summaries only; asking for a single
  `eventName` adds `providers`, `mergeTagPrefix`, and `notes`.
</ResponseField>

<ResponseField name="events[].documented" type="boolean">
  Whether a reference payload is published. `false` means no sample exists - it
  never means the event name is invalid. Custom events are fully supported and
  carry exactly the properties you send.
</ResponseField>

<ResponseField name="events[].documentedProviders" type="string[]">
  Providers with a reference payload for this event.
</ResponseField>

<ResponseField name="events[].providers" type="object[]">
  Per provider: `examplePayload` (a real sample) and `properties`.
</ResponseField>

<ResponseField name="events[].providers[].properties" type="object[]">
  Every property path, with `type`, the `mergeTag` that resolves it, and a
  `description` wherever the sample value alone is ambiguous - a `null` sample,
  an empty list, a unit that is not obvious, or a type that differs per
  provider.
</ResponseField>

## Units and types worth knowing

* Fields ending in `Cents` are minor units: `8850` is \$88.50.
* `price` is a preformatted display string. Use `priceCents` for arithmetic and comparisons.
* `predictedLtv` is whole currency units, not cents, even though it sits next to `*Cents` fields.
* `churnRisk` is a percent from 0 to 95, quantized to the nearest 5 - not a 0-1 probability.
* `orderId` is a string on Shopify and the commerce API, and a number on WooCommerce. Compare it as a string.

## Responses

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "eventName": "ecommerce.order_placed",
    "events": [
      {
        "eventName": "ecommerce.order_placed",
        "documented": true,
        "label": "Order Placed",
        "category": "E-commerce",
        "description": "Customer placed an order",
        "documentedProviders": ["shopify", "woocommerce", "api"],
        "requestedEventName": "ecommerce.order_placed",
        "providers": [
          {
            "provider": "shopify",
            "examplePayload": {
              "provider": "shopify",
              "orderId": "820982911946154500",
              "orderNumber": 1001,
              "totalPriceCents": 8850,
              "currency": "USD",
              "financialStatus": "paid",
              "fulfillmentStatus": null,
              "orderedAt": "2026-04-02T12:00:00.000Z",
              "productNames": ["Protein Powder"],
              "itemCount": 1,
              "lineItems": [
                {
                  "title": "Protein Powder",
                  "variantTitle": "Vanilla",
                  "quantity": 1,
                  "priceCents": 8850,
                  "price": "$88.50"
                }
              ]
            },
            "properties": [
              {
                "path": "totalPriceCents",
                "type": "number",
                "description": "Total in minor units (8850 = $88.50), not a decimal amount.",
                "mergeTag": "{{event.totalPriceCents}}"
              },
              {
                "path": "fulfillmentStatus",
                "type": "string | null",
                "description": "Shopify fulfillment state. Null on a newly placed order - it is set on `ecommerce.order_fulfilled`.",
                "mergeTag": "{{event.fulfillmentStatus}}"
              },
              {
                "path": "lineItems",
                "type": "object[]"
              },
              {
                "path": "lineItems[].title",
                "type": "string",
                "mergeTag": "{{event.lineItems.0.title}}"
              }
            ]
          }
        ],
        "mergeTagPrefix": "event.",
        "notes": [
          "Reference payloads are representative samples, not a contract. Providers omit fields that do not apply to a given order or product, and any extra properties you send with the event are passed through unchanged."
        ]
      }
    ]
  }
  ```

  ```json 400 theme={null}
  {
    "success": false,
    "error": "provider must be one of shopify, woocommerce, manual, api, stripe"
  }
  ```

  ```json 401 theme={null}
  {
    "success": false,
    "error": "Unauthorized"
  }
  ```
</ResponseExample>
