POS integrations
If you already run a point-of-sale system in your outlets, connecting it means orders and menu live in one place instead of two. Three are supported: Clover, Toast and Square.
What can sync
Section titled “What can sync”Four switches, each independent, and it is worth deciding each one deliberately:
| Switch | Direction | Effect |
|---|---|---|
| Sync app orders to POS | Outbound | Online orders appear on your till |
| Sync POS orders to app | Inbound | Counter orders appear in your reporting |
| Push status updates to POS | Outbound | Status changes here are reflected there |
| Terminal states only | Outbound | Push only the final states, not every step |
Inbound sync needs a default business type and default outlet — where a counter order should land when the till does not say. Set both, or inbound orders have nowhere to go.
Menu import is separate again, and needs the outlet whose menu is the source.
Start with outbound only. Add inbound once you trust the mapping, because inbound orders go straight into your reporting and a wrong default distorts it quietly.
Connecting
Section titled “Connecting”-
Get credentials from the provider — the specifics differ, see the tabs below.
-
Create the integration, pick the provider, and enter them.
-
Register the webhook in the provider’s dashboard and paste its signing secret back. Leave verify signature on. Without this, orders and status changes never arrive — and it fails silently, which is the single most common POS support case. See Webhooks & the menu API.
-
Set the sync switches and the inbound defaults.
-
Scope it with conditions if it applies to some outlets only.
-
Test the connection, then place one real order each way and watch it arrive.
You will need, from the Clover developer dashboard:
- Merchant ID — visible in your Clover dashboard
- App ID and App Secret — from an app you create in the developer dashboard
- A webhook secret, generated when you register the callback
Clover’s app must be installed on the merchant account before the credentials work. A correct-looking set of credentials on an uninstalled app fails in a way that looks like a typo.
You will need, from Toast:
- Restaurant GUID — identifies the location
- Client ID and Client Secret — API credentials, issued by Toast rather than self-served
- A webhook secret
- Dining option GUIDs — Toast identifies delivery, pickup and dine-in by GUID rather than by name, and you map each of yours to the matching one
The dining option mapping is Toast-specific and easy to skip. Orders sync without it and arrive as the wrong type, which is worse than not syncing.
Toast credentials come through their partner process, so start earlier than you think you need to.
You will need, from the Square developer dashboard:
- Application credentials from an app you create
- A webhook signature key
- The production flag set correctly — Square has separate sandbox and production environments, and credentials from one never work against the other
Square requires the webhook notification URL to be registered against the same application whose credentials you are using. Mixing an app’s credentials with another app’s webhook is a silent failure.
Importing a menu
Section titled “Importing a menu”Rather than rebuilding your menu, you can preview what the POS holds, import it, and later push changes back.
Preview first, always. It shows what would come across, and POS menus are frequently messier than their owners remember — retired dishes, test entries, options nobody has used in years. Import into one outlet, tidy it, then use it as the source for the rest. See Building your menu.
When sync stops
Section titled “When sync stops”A POS that keeps failing is skipped automatically rather than retried into the ground, so a broken till cannot slow your ordering down. Once fixed, that is reset from the dashboard.
There is also an operations view listing sync attempts, with a retry action for individual ones — the right tool when a handful of orders failed rather than the connection itself.
Troubleshooting
Section titled “Troubleshooting”| Symptom | Try this |
|---|---|
| Nothing syncs either way | Test the connection; if the circuit is open, fix the cause and reset it |
| Orders reach the POS but statuses do not | Push status updates is a separate switch |
| Counter orders never appear here | Inbound sync needs a default business type and outlet |
| Inbound orders land in the wrong outlet | That is the default doing its job — scope per outlet instead |
| Toast orders arrive as the wrong type | The dining option GUIDs are unmapped |
| Square works in testing and not live | The production flag, or sandbox credentials |
| It worked and then stopped | A rotated credential or webhook secret that was not updated here |
| Menu import brought rubbish across | Preview first; import into one outlet, tidy, then propagate |
Related: Integrations overview · Webhooks & the menu API · Building your menu · POS register
Was this page helpful?
Thanks — that helps.