The Goodtill API allows retrieving new Goodeats orders and updating their statuses.
The following diagram shows the data flow for Goodeats integrations. New sales can be fetched by polling the API or by receiving webhook notifications. You can then update the order status via the API (eg to state that a delivery has been completed).
Order statuses can be updated from the POS or Goodeats terminal, so you should also poll or listen to changes in the order state which do not originate from your application.
See the following article for a full list of order states.
Orders can be cancelled after creation
Orders can be rejected before being accepted or cancelled any time before being marked as completed. Please ensure you are handling these events to prevent actioning orders which have been rejected or cancelled.
Please see the following article for an overview of the API.
You can interact with Goodeats orders via the following API methods:
- Sale-GetSales - Get the details (items, customer, delivery address) for a sale by ID.
- ExternalSale-GetSalesStatuses - Get a list outstanding and recently completed sales, including their status.
- ExternalSale-GetSale - Get the status of a single sale.
- ExternalSale-UpdateSaleStatus - Update the status of a sale.
When using the ExternalSale methods, you will need to add an additional header to the requests:
If you are building an integration for multiple customers, you will need a set of credentials per customer.
You can use webhooks to be notified of new sales and sale status updates without polling. Please see the following article for an overview of webhooks.
The following events may be relevant to your integration:
- sale.completed - A new sale has been created
- sale.web_order_status_updated - The status of a web sale has been updated
We can provide a test account which will allow you to place Goodeats orders and interact with them via the API. Please contact firstname.lastname@example.org with some details about your planned integration and the customer(s) you're working with.