In-Store Orders
When a merchant creates an order directly in your POS system (such as call-in orders, walk-in orders, or other first-party orders), you can submit these orders to Stream for processing through the Handle Webhook Event (POS -> Stream) endpoint.
This allows Stream to handle dispatch, delivery coordination, and other services for orders that originated in your POS system.
Submitting In-Store Orders
To submit an in-store order to Stream, send a POST request to the webhook endpoint with the order.created
event type. The order will be processed by Stream and can be routed to appropriate delivery partners or services.
{
"event": "order.created",
"data": {
"order": {
"provider_id": "pos_order_123",
"location_id": "location_456",
"fulfillment_type": "delivery",
"customer": {
"name": "John Doe",
"phone": "+1234567890",
"email": "john.doe@example.com"
},
"delivery_address": {
"street": "123 Main St",
"city": "Anytown",
"state": "CA",
"zip": "12345",
"country": "US"
},
"line_items": [
{
"name": "Cheeseburger",
"quantity": 2,
"price_amount": 1200,
"price_currency": "usd",
"provider_id": "item_789",
"modifiers": [
{
"name": "Extra Cheese",
"price_amount": 100,
"price_currency": "usd",
"provider_id": "modifier_101"
}
]
}
],
"subtotal_amount": 2400,
"tax_amount": 200,
"total_amount": 2600,
"currency": "usd",
"notes": "Extra crispy fries please"
}
}
}
Order Processing
Once an in-store order is successfully submitted to Stream:
- Order Acceptance: Stream will return a 200 status code with confirmation of order acceptance
- Dispatch Processing: For delivery orders, Stream will coordinate with delivery partners
- Status Tracking: You can track order status through Stream's order management system
- Customer Communication: Stream can handle customer notifications and updates
Order Status Updates
You can update the status of in-store orders by sending status update events to the same webhook endpoint:
{
"event": "order.status.updated",
"data": {
"order": {
"provider_id": "pos_order_123",
"status": "ready_for_pickup"
}
}
}
Available status values:
Status | Description |
---|---|
preparing | Order is being prepared in the kitchen |
ready_for_pickup | Order is prepared and ready for pickup by customer or driver |
out_for_delivery | Order is being delivered (for delivery orders) |
completed | Order has been completed (picked up or delivered) |
canceled | Order has been canceled |
Order Cancellation
To cancel an in-store order that has been submitted to Stream, send a cancellation event:
{
"event": "order.canceled",
"data": {
"order": {
"provider_id": "pos_order_123",
"reason": "Customer requested cancellation"
}
}
}
Special Considerations
- Call-in Orders: These are typically created manually in the POS and may require additional customer information collection
- Walk-in Orders: Orders placed in person that may need delivery coordination
- Future Orders: Orders scheduled for later pickup or delivery should include
requested_for
timestamp - Payment Processing: In-store orders may have different payment processing requirements than third-party orders