Scheduled Orders
Scheduled orders allow customers to place orders ahead of time for future fulfillment. Our system supports three different approaches to handling scheduled orders, depending on how your platform manages order timing and preparation.
Order Fields for Scheduled Orders
When working with scheduled orders, these fields in the NewOrder object are particularly important:
is_future_order- Set to true when the order is a scheduled orderstatus- Set toscheduledwhen the order is a scheduled orderestimated_ready_at_ms- The estimated time when the order should be ready for pickup/delivery, in epoch milliseconds
3 Approaches to Scheduled Orders
1. DSP Managed Timing
In this approach, your platform handles all the timing logic internally and only sends us the order when it should begin preparation.
How it works:
- Customer places a scheduled order on your platform.
- Your platform calculates prep time and holds the order internally.
- When it's time to start preparation, your platform sends the order via webhook.note
When sending the order webhook,
is_future_orderwould befalse. - We immediately confirm the order and begin preparation.
2. Stream-Managed Timing
In this approach, you send us the complete scheduled order information, and we ingest the order into the POS system immediately.
How it works:
- Customer places a scheduled order on your platform.
- Your platform sends us the complete order with
is_future_order: true, andestimated_ready_at_ms. - We internally manage the delay until the appropriate preparation time.
- When it's time to prepare, we automatically confirm the order and begin preparation.
3. Stream-Managed Timing (Scheduled)
In this approach, you send us the complete scheduled order information, and we handle the timing delay internally.
How it works:
- Customer places a scheduled order on your platform.
- Your platform sends us the complete order with
is_future_order: true,status: scheduledandestimated_ready_at_ms. - We internally manage the delay until the appropriate preparation time.
- When it's time to prepare, we automatically confirm the order and begin preparation.
Adjusting Scheduled Orders
While a scheduled order is held by Stream (before it is sent to the merchant's POS for preparation), you can update it by sending an order_adjustment event with the full adjusted order. The held order is replaced with the adjusted details, and the adjusted order is what gets submitted to the POS at preparation time.
- The scheduled preparation time is retained unless the adjustment changes
estimated_ready_at_ms. - Re-state
status: scheduled,is_future_order: trueandestimated_ready_at_mson the adjusted order — if omitted, the order is treated as an ASAP order and is prepared immediately. - If the adjustment arrives after the order has already been sent to the POS, it is not applied automatically; the merchant is notified so they can update the order on their POS.