Event schemas

transaction_end Order

An order was placed: its lines, sizes and total.

When to send it

Merchant tag fmttag on the order page, or the Shopify pixel's checkout.

Required fields

Field Type Rules Description
client_id integer greater than 0
event "transaction_end"
timestamp_ms integer
order_id string 1–255 characters
products array of object 1–500 items
products[].id string 1–255 characters

Optional fields

Field Type Rules Description
tracking_id string a UUID
event_id string 1–255 characters
schema_version 1
user_agent string at most 2048 characters
shop_country string | null at most 8 characters; may be null
channel string | null at most 64 characters; may be null
instance_id string 1–255 characters
product_id string 1–255 characters
brand_id integer | null greater than 0; may be null
product_associated boolean
ab_data object
testEvent true
extra object
products[].price number 0 or more
products[].quantity integer greater than 0
products[].size string | null 1–64 characters; may be null
products[].currency string 3 capital letters (ISO 4217)
products[].variant_id string 1–64 characters
products[].platform_product_id string 1–255 characters
products[].sent_id string 1–255 characters
products[].unknown_product true
product_ids array of string | null
total_price number | null 0 or more; may be null
currency string 3 capital letters (ISO 4217)
paid_price object
transaction_id string 1–255 characters
products_associated array of boolean
brand_ids array of integer | null

Example

Test values only. This example passes the event's schema.

{
  "event": "transaction_end",
  "client_id": 1000,
  "tracking_id": "3f0b8c2e-4d5a-4b6c-8d7e-9f0a1b2c3d4e",
  "timestamp_ms": 1792000000000,
  "order_id": "TEST-ORDER-1001",
  "products": [
    {
      "id": "TEST-JACKET-01",
      "size": "M",
      "quantity": 1,
      "price": 59.9,
      "currency": "EUR"
    }
  ],
  "total_price": 64.9,
  "currency": "EUR"
}

Checks and messages

What Tracking debug in your back office checks for this event, with its exact message. An error means the event is not counted; a warning means it is counted but something is likely wrong; an info is a hint.

LevelCheckMessage
error body_data the field: body data is not allowed here, the value was dropped (D110)
error invalid_field what is wrong with the field
error over_limit the field is over the limit of <limit>
error products_empty products is empty: an order needs at least one line
warning currency_not_iso the field "<value>" is not an ISO 4217 currency code (3 letters, such as EUR)
warning price_text the field was sent as text: send a number (stored as <value>)
warning product_unknown product not found in your catalogue or has no size chart
warning size_not_in_product size "<value>" is not one of the product's sizes
warning timestamp_missing timestamp_ms is missing or not a time in milliseconds: the time the event was received is used
warning timestamp_out_of_range timestamp_ms is more than 30 days old or more than 3 days ahead: the time the event was received is used
warning untracked untracked: no tracking_id. The event is kept but cannot be joined to the widget visitor.
info no_prior_cart no cart from this visitor in the 30 days before this order
info size_lower_case size "<value>" was sent in lower case. Use uppercase letters or numbers.

JSON schema

The schema the API checks this event against: transaction_end.schema.json.