Normalizes channels
Receive identical JSON for orders from Uber Eats, DoorDash, Grubhub, ChowNow, and Wix. One handler, every supported channel.
Integration API
REST endpoints plus signed webhooks. Sandbox-first. Idempotent by key. Build one integration; reach every supported channel and POS.
import { OrderOut } from '@orderout/sdk';
const client = new OrderOut({ apiKey: process.env.OO_KEY });
// Receive a normalized order from any supported channel
client.on('order.created', async (order) => {
// order.channel: 'ubereats' | 'doordash' | 'grubhub' | 'chownow' | 'wix'
// order.lineItems: normalized shape across channels
await yourPosClient.pushOrder(order);
});
// Patch menu availability — pushes to connected channels
await client.menus.patch({
pos: 'clover',
itemId: 'item_123',
available: false,
}); Receive identical JSON for orders from Uber Eats, DoorDash, Grubhub, ChowNow, and Wix. One handler, every supported channel.
Push orders into Clover, Square, Pecan, Plateron, or Truffle. Toast and Lightspeed in private beta.
Bidirectional catalog updates. Item-level dual pricing and 86 actions supported across channels.
HMAC-signed delivery, retries on 5xx, idempotent by event key. Standard verification — no proprietary signature scheme.
Whoever is shipping the integration.
Add multi-channel order routing without writing one integration per marketplace.
Reach connected POS systems through one webhook contract.
Drive direct orders into the same POS pipeline as marketplace orders.
Read normalized orders for reporting, loyalty, accounting, and inventory.
Orders
Receive orders from supported channels; cancel from your application.
Menus
Read the live catalog; patch item availability and prices; push to channels.
Restaurants
List connected stores; read store hours; patch open/paused state.
Webhooks
Subscribe to events; verify HMAC signatures; replay missed events.
Delivery
Quote a delivery; dispatch through a connected courier network; track in real time.
Channel-to-POS routes you can build today.
await client.orders.list({ channel: "ubereats", status: "open" }) client.on("order.created", async (o) => square.push(o)) await client.menus.patch({ pos: "pecan", item, available: false }) Integrator pricing
Sandbox keys are request-based. Production and Enterprise plans are quoted against volume and integration depth.
Request a sandbox key and start receiving normalized orders within one business day.