Skip to content

Every order is a loop that runs to its outcome.

Draw a flow from catalog nodes: pricing, payments, approvals, shipping, store pickup, digital delivery, marketplace sellers, AI triage. OrderLoop runs each order, from any channel, through it durably, waits for people and partners, and rolls back what it did when the order fails.

One direct to consumer order, as the engine ran it

Waiting on pickup.collected
  1. TriggerSucceeded

    Checkout

    checkout#1

    Web

  2. CommerceSucceeded

    Validate

    validate#1

    1 line · Ada Lovelace

  3. CommerceSucceeded

    List price

    price#1

    Subtotal $349.00

  4. CommerceSucceeded

    Tax

    tax#1

    Tax $27.92 · total $376.92

  5. CommerceundoSucceeded

    Authorize payment

    authorize#1

    Authorized $376.92

    • ok (taken)
    • declined
  6. CommerceSucceeded

    Route fulfillment

    route#1

    Pick up at SoHo store

    • ship
    • pickup (taken)
    • carry_out
    • digital
    • unavailable
  7. CommerceundoSucceeded

    Hold at store

    reserve_pickup#1

    Reserved 1 line

    • ok (taken)
    • backorder
  8. CommerceundoSucceeded

    Ready for pickup

    ready#1

    Pickup code QGFZU3

  9. CommerceSucceeded

    Pickup ready

    ready_note#1

    → ada@example.com: Web order #10655 (pickup) is ready at SoHo store

  10. ControlwaitsWaiting

    Customer collects

    collect#1

    Waiting for pickup.collected

    • received
    • timeout
Subtotal
$349.00
Tax
$27.92
Total
$376.92
tpl-omnichannel-order run by the engine in workerd

on the dashboard’s “Buy online, pick up in store” scenario: a direct-to-consumer web order held at the SoHo store, waiting for the customer to collect it

. 8 other nodes were skipped: the branches this order didn't take.

Every commerce model: B2B, B2C, direct to consumer, marketplace, subscription, procurement and replenishment, from any channel. Each model starts from a built-in flow you can open in the editor, change and republish.

  • Flows are data. A flow is a JSON graph of catalog nodes. Publishing makes an immutable version, and each order pins the version it started on.
  • Orders are durable. Each node runs once and its result is kept, so an order survives restarts, waits days for a person or a payment, and rolls back its reservations, holds and shipments when it fails.
  • Every order is live. The order page shows each node as it runs, and approvals and events reach the waiting node from the dashboard, the API, a signed webhook or the assistant.
  • AI never blocks an order. Every model call has a schema, a 20-second cap and a deterministic fallback.