Best practices for using webhooks with QuickBooks Online

Webhooks are notifications sent to an external app whenever an event—that the app must subscribe to—occurs in the QuickBooks Online customer’s company file. If your app has a use case where having access to real-time customer information is important, using webhooks will make the data sync easy. An app can subscribe to listen to these events (such as create, update, and delete notifications) on several entities made available in our APIs.

We recommend you implement webhooks so you can be automatically notified whenever data changes in a connected QuickBooks company. For example, you may be developing an inventory management app. Whenever a customer records a sale in QuickBooks, the app can listen to an ‘Invoice create’ event and execute appropriate business logic based on the items included in the Invoice.

If you’ve been having trouble with webhooks or have missed webhook notifications, here are some common reasons why:


Entities & operations not selected

In the webhooks setup page, ensure you’ve selected the right set of operations for the entities for which you need webhooks.

Connection timeline

You can only receive webhooks for companies that are connected to your app. Webhooks will only be sent for events occurring after the app connection.

Unavailable endpoint

Webhook endpoint URLs must be exposed over the internet and secured via HTTPS. Ensure the specified domain has intermediate certificates installed to complete the chain of trust. Self-signed certificates aren’t supported.

Delayed response

Ensure you respond to a webhook notification within 3 seconds with an HTTP 200 status code. Don’t process the notification payload or perform complex operations within the webhooks endpoint implementation. Do the processing on a separate thread asynchronously using a queue.

To compensate for the possibility of missed events, make a ChangeDataCapture (CDC) call for all required entities, dating back to the last known successfully processed webhook event for each entity. Additionally, you can make a daily CDC call for all required entities to ensure your app has always processed the most up-to-date data.

To learn more


Leave a Reply

Your email address will not be published. Required fields are marked *