Skip to main content
POST
/
api
/
v1
/
orders
Push Order
curl --request POST \
  --url https://api.sequenzy.com/api/v1/orders \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "orderId": "<string>",
  "orderNumber": "<string>",
  "status": "<string>",
  "totalCents": 123,
  "currency": "<string>",
  "orderedAt": "<string>",
  "customer": {},
  "items": [
    {}
  ],
  "refundAmountCents": 123,
  "customerTotals": {},
  "properties": {}
}
'
{
  "success": true,
  "queued": true,
  "jobId": "commerce-order-1a2b3c",
  "orderId": "order-1001",
  "status": "placed"
}
Push an order from any e-commerce platform. This is the core of the Commerce API: one call gives you the same behavior as a native Shopify/WooCommerce order webhook. When an order is pushed, Sequenzy:
  1. Upserts the customer as a subscriber (with names and custom attributes)
  2. Triggers the matching event (ecommerce.order_placed, ecommerce.order_cancelled, ecommerce.order_fulfilled, or ecommerce.order_refunded) for automations and segments
  3. Updates revenue attributes on the subscriber: ltv, totalSpent, ordersCount, aov (placed orders only)
  4. Cancels superseded automations (e.g. a replenishment or back-in-stock sequence for a product the customer just bought)
  5. Schedules replenishment reminders for products with replenishment enabled
Processing is asynchronous - the endpoint returns 202 Accepted immediately.

Idempotency

Pushing the same orderId twice never double counts revenue. Retries are safe.

Request Body

orderId
string
required
Unique order identifier in your platform. Used for idempotency.
orderNumber
string
Human-facing order number, if different from orderId.
status
string
default:"placed"
Lifecycle status of this order event: placed, cancelled, fulfilled, or refunded.
totalCents
integer
required
Order total in cents.
currency
string
required
ISO 4217 currency code (e.g. USD).
orderedAt
string
ISO 8601 timestamp of when the order happened. Defaults to now.
customer
object
required
The customer who placed the order. Requires email; also accepts externalId, firstName, lastName, and attributes (custom subscriber attributes, synced for segment filtering).
items
array
Order line items. Each item has productId (required), title (required), quantity (required), variantId, sku, variantTitle, and priceCents. Use the same productId values as your product catalog so replenishment and product matching work.
refundAmountCents
integer
For refunded orders: refunded amount in cents.
customerTotals
object
Authoritative customer aggregates from your platform: ordersCount and totalSpentCents. When provided, these override Sequenzy’s additive revenue bookkeeping (recommended if your platform tracks lifetime totals).
properties
object
Extra event properties to attach to the triggered ecommerce.* event. Available in sequence emails as {{event.*}} merge tags. Reserved normalized keys (provider, orderId, lineItems, orderedAt, etc.) cannot be overridden.
curl -X POST "https://api.sequenzy.com/api/v1/orders" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "orderId": "order-1001",
    "totalCents": 8850,
    "currency": "USD",
    "orderedAt": "2026-06-01T12:00:00.000Z",
    "customer": {
      "email": "buyer@example.com",
      "firstName": "Jane",
      "attributes": { "acquisitionChannel": "tiktok" }
    },
    "items": [
      {
        "productId": "SKU-PROTEIN-1KG",
        "variantId": "SKU-PROTEIN-1KG-VANILLA",
        "title": "Protein Powder",
        "variantTitle": "Vanilla",
        "quantity": 2,
        "priceCents": 4425
      }
    ]
  }'

Refund example

curl -X POST "https://api.sequenzy.com/api/v1/orders" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "orderId": "order-1001",
    "status": "refunded",
    "totalCents": 8850,
    "refundAmountCents": 8850,
    "currency": "USD",
    "customer": { "email": "buyer@example.com" }
  }'

Responses

{
  "success": true,
  "queued": true,
  "jobId": "commerce-order-1a2b3c",
  "orderId": "order-1001",
  "status": "placed"
}