Order events
Orders stored for the first time, and stored orders that changed.
order.placed
Sent when Emailit stores an order for the first time: from Create or update an order, from the tracking script, or from Import orders in bulk with historical set to false. Historical imports don’t send it. The same event can start an automation. See Commerce.
Webhook requests carry a JSON array of events like this one; see Webhook requests.
Fields
event_idstringEvent ID (evt_…). A retried request carries the same ID, so use it to skip events you already handled. You can also look the event up with Retrieve an event.
typestringAlways order.placed.
objectobjectThe order the event describes. Its fields are listed below.
data.objectobjectThe same object again, in the shape that the Events API returns in data.
Order object
The same object as Retrieve an order returns.
idstringOrder ID (ord_…).
objectstringAlways order.
external_idstringThe order ID in your shop.
contact_idstring | nullThe buyer’s contact (con_…), or null.
emailstring | nullThe buyer’s email address, in lowercase.
statusstringplaced, paid, fulfilled, canceled or refunded.
currencystringThree-letter ISO 4217 code of the amounts.
subtotal, discount, shipping, taxnumber | nullThe order’s amounts, or null when not sent.
totalnumberOrder total.
refunded_amountnumberAmount refunded so far.
coupon_codesstring[]Coupon or discount codes used in the order.
cart_idstring | nullThe cart or checkout ID in your shop that the order came from.
sourcestringapi, js (the tracking script) or import.
placed_atstringWhen the order was placed, in ISO 8601 UTC.
paid_at, fulfilled_at, canceled_at, refunded_atstring | nullWhen the order first had that status in Emailit.
attributionobject | nullThe email the order is credited to, or null: email_id, campaign_id, campaign_name, variant_id, automation_id, automation_name, type (click or open) and touched_at. See How orders are credited to emails.
itemsobject[]Line items, each with product_id, variant_id, sku, title, quantity, unit_price, total, categories, url and image_url.
metadataobjectYour own key-value data from the order.
created_at, updated_atstringWhen Emailit stored the order and when it last changed, in ISO 8601 UTC.
{
"event_id": "evt_381an2bijq9dF40JdqYLuJT43Z4",
"type": "order.placed",
"object": {
"object": "order",
"id": "ord_3aMEK4No62Zw8S1fcHNznAnnbfp",
"external_id": "1042",
"contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
"email": "ada@example.com",
"status": "paid",
"currency": "USD",
"subtotal": 107,
"discount": 10.7,
"shipping": 5,
"tax": 0,
"total": 101.3,
"refunded_amount": 0,
"coupon_codes": [
"WELCOME-7KQ2M9XA"
],
"cart_id": "c-58f1a2",
"source": "api",
"placed_at": "2026-10-08T14:32:10.000Z",
"paid_at": "2026-10-08T14:32:11.204Z",
"fulfilled_at": null,
"canceled_at": null,
"refunded_at": null,
"attribution": {
"email_id": "eml_3TSvDAUQi7vqxvAQ1UEVN7k4igq",
"campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"campaign_name": "October newsletter",
"variant_id": null,
"automation_id": null,
"automation_name": null,
"type": "click",
"touched_at": "2026-10-08T09:41:52.000Z"
},
"items": [
{
"product_id": "8123456789",
"variant_id": "42-blue",
"sku": "TRS-BLU-42",
"title": "Trail running shoe",
"quantity": 1,
"unit_price": 89,
"total": 89,
"categories": [
"Shoes",
"Running"
],
"url": "https://shop.example.com/products/trail-running-shoe",
"image_url": "https://shop.example.com/images/trail-running-shoe.jpg"
}
],
"metadata": {
"channel": "web"
},
"created_at": "2026-10-08T14:32:11.204Z",
"updated_at": "2026-10-08T14:32:11.204Z"
},
"data": {
"object": {
"object": "order",
"id": "ord_3aMEK4No62Zw8S1fcHNznAnnbfp",
"external_id": "1042",
"contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
"email": "ada@example.com",
"status": "paid",
"currency": "USD",
"subtotal": 107,
"discount": 10.7,
"shipping": 5,
"tax": 0,
"total": 101.3,
"refunded_amount": 0,
"coupon_codes": [
"WELCOME-7KQ2M9XA"
],
"cart_id": "c-58f1a2",
"source": "api",
"placed_at": "2026-10-08T14:32:10.000Z",
"paid_at": "2026-10-08T14:32:11.204Z",
"fulfilled_at": null,
"canceled_at": null,
"refunded_at": null,
"attribution": {
"email_id": "eml_3TSvDAUQi7vqxvAQ1UEVN7k4igq",
"campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"campaign_name": "October newsletter",
"variant_id": null,
"automation_id": null,
"automation_name": null,
"type": "click",
"touched_at": "2026-10-08T09:41:52.000Z"
},
"items": [
{
"product_id": "8123456789",
"variant_id": "42-blue",
"sku": "TRS-BLU-42",
"title": "Trail running shoe",
"quantity": 1,
"unit_price": 89,
"total": 89,
"categories": [
"Shoes",
"Running"
],
"url": "https://shop.example.com/products/trail-running-shoe",
"image_url": "https://shop.example.com/images/trail-running-shoe.jpg"
}
],
"metadata": {
"channel": "web"
},
"created_at": "2026-10-08T14:32:11.204Z",
"updated_at": "2026-10-08T14:32:11.204Z"
}
}
}order.updated
Sent when an order that Emailit already stored changes:
- You change its status, refund or metadata with Update an order.
- You send the same order again with Create or update an order, or the tracking script sends it again.
- Import orders in bulk with
historicalset tofalseupdates it. Historical imports don’t send the event.
When the status changed, the event also carries previous_status.
Webhook requests carry a JSON array of events like this one; see Webhook requests.
Fields
event_idstringEvent ID (evt_…). A retried request carries the same ID, so use it to skip events you already handled. You can also look the event up with Retrieve an event.
typestringAlways order.updated.
objectobjectThe order after the change. It has the same fields as in order.placed and Retrieve an order.
previous_statusstringThe order’s status before the change. Only present when the status changed. It sits next to object, not inside it.
dataobjectobject and previous_status again, in the shape that the Events API returns in data.
{
"event_id": "evt_3sRH2D1JwRBeo2uyN9p2NM4VX3i",
"type": "order.updated",
"object": {
"object": "order",
"id": "ord_3aMEK4No62Zw8S1fcHNznAnnbfp",
"external_id": "1042",
"contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
"email": "ada@example.com",
"status": "fulfilled",
"currency": "USD",
"subtotal": 107,
"discount": 10.7,
"shipping": 5,
"tax": 0,
"total": 101.3,
"refunded_amount": 0,
"coupon_codes": [
"WELCOME-7KQ2M9XA"
],
"cart_id": "c-58f1a2",
"source": "api",
"placed_at": "2026-10-08T14:32:10.000Z",
"paid_at": "2026-10-08T14:32:11.204Z",
"fulfilled_at": "2026-10-09T11:05:43.019Z",
"canceled_at": null,
"refunded_at": null,
"attribution": {
"email_id": "eml_3TSvDAUQi7vqxvAQ1UEVN7k4igq",
"campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"campaign_name": "October newsletter",
"variant_id": null,
"automation_id": null,
"automation_name": null,
"type": "click",
"touched_at": "2026-10-08T09:41:52.000Z"
},
"items": [
{
"product_id": "8123456789",
"variant_id": "42-blue",
"sku": "TRS-BLU-42",
"title": "Trail running shoe",
"quantity": 1,
"unit_price": 89,
"total": 89,
"categories": [
"Shoes",
"Running"
],
"url": "https://shop.example.com/products/trail-running-shoe",
"image_url": "https://shop.example.com/images/trail-running-shoe.jpg"
}
],
"metadata": {
"channel": "web"
},
"created_at": "2026-10-08T14:32:11.204Z",
"updated_at": "2026-10-09T11:05:43.019Z"
},
"previous_status": "paid",
"data": {
"object": {
"object": "order",
"id": "ord_3aMEK4No62Zw8S1fcHNznAnnbfp",
"external_id": "1042",
"contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
"email": "ada@example.com",
"status": "fulfilled",
"currency": "USD",
"subtotal": 107,
"discount": 10.7,
"shipping": 5,
"tax": 0,
"total": 101.3,
"refunded_amount": 0,
"coupon_codes": [
"WELCOME-7KQ2M9XA"
],
"cart_id": "c-58f1a2",
"source": "api",
"placed_at": "2026-10-08T14:32:10.000Z",
"paid_at": "2026-10-08T14:32:11.204Z",
"fulfilled_at": "2026-10-09T11:05:43.019Z",
"canceled_at": null,
"refunded_at": null,
"attribution": {
"email_id": "eml_3TSvDAUQi7vqxvAQ1UEVN7k4igq",
"campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"campaign_name": "October newsletter",
"variant_id": null,
"automation_id": null,
"automation_name": null,
"type": "click",
"touched_at": "2026-10-08T09:41:52.000Z"
},
"items": [
{
"product_id": "8123456789",
"variant_id": "42-blue",
"sku": "TRS-BLU-42",
"title": "Trail running shoe",
"quantity": 1,
"unit_price": 89,
"total": 89,
"categories": [
"Shoes",
"Running"
],
"url": "https://shop.example.com/products/trail-running-shoe",
"image_url": "https://shop.example.com/images/trail-running-shoe.jpg"
}
],
"metadata": {
"channel": "web"
},
"created_at": "2026-10-08T14:32:11.204Z",
"updated_at": "2026-10-09T11:05:43.019Z"
},
"previous_status": "paid"
}
}