Manual entry on any register
Lightspeed, Shopify POS, a cash drawer: it doesn't matter. Staff add each order on the same phone they use to mark it ready. Name, ticket number or automatic daily number.
Integrations & API
Three ways in, and you can use any mix. Any register works today with two-second manual entry. Square connects in a few clicks. And anything that can make an HTTP request can post an order directly.
Lightspeed, Shopify POS, a cash drawer: it doesn't matter. Staff add each order on the same phone they use to mark it ready. Name, ticket number or automatic daily number.
Connect once from your dashboard through Square's standard authorization. Every eligible order lands on the board the moment it's rung up, with the customer name and items. Any Square account; no Restaurants plan, no KDS.
Multiple locations route to their own boards. Square texts vs a board →
Direct connections are in progress. Until they ship, shops on Clover or Toast run the board with manual entry: type a name or ticket number, press Enter, two seconds.
Tell us your register and you'll hear first when it's live.
For your developer
Your website, a kiosk, a spreadsheet with a Zapier automation. Send a name or ticket number and it appears instantly. Staff mark it ready like any other order.
POST https://pickupsignal.com/api/ingest-orderAuthorization: Bearer psk_your_keyRequest
curl -X POST https://pickupsignal.com/api/ingest-order \
-H "Authorization: Bearer psk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"shopId": "your-shop-id",
"name": "Priya",
"drink": "Taro Milk Tea",
"source": "online",
"id": "order-47"
}'
Response · 200
{"num": 47, "orderId": "i2a91cf6b8d4e4a2b9f7d3c1a5e6b8f90"}
Numbers-only board? Send ticket (0–999999) instead of name.
Every body needs shopId and at least one of name or ticket. Everything else is optional.
Idempotency. Send id and the same order can never be created twice: a repeat on the same business day returns the original. Zapier and Make retry webhooks automatically, so map id to something unique from your trigger.
shopIdstringRequired. Shown next to your key in the Custom integration panel.namestringName or ticket required. Up to 120 characters; whitespace collapsed.ticketinteger0–999999. For numbered boards. If both are sent the ticket wins for numbering; the name is kept.drinkstringOptional, up to 120 characters. Shown beside the name or ticket.idstringRecommended, up to 128 characters. Your unique reference; makes retries safe.sourcestringinstore, online or app. Defaults to online.createdReturns num (board number) and orderId.invalid-bodyMissing shopId, or neither name nor ticket.unauthorizedBad or missing key. Regenerate from the dashboard.method-not-allowedSomething other than POST.rate limitedOver 60/minute for this shop. Wait the Retry-After seconds.service-unavailableRetry later. Do not regenerate your key; a 500 is on our side.Start free, open Order sources, generate a key. Or connect Square and skip the code entirely.