---
title: ":quickbooks:"
img: https://unified.to/images/logo.svg
date: 2026-08-25T18:41:00.000Z
tag: Guides
description: "How to set up native webhooks for QuickBooks Online with Unified."
url: "https://unified.to/blog/_quickbooks"
---

# :quickbooks:
------
_August 25, 2026_

How to set up native [webhooks](/blog/replacing_polling_with_unified_webhooks_and_virtual_streams) for QuickBooks Online with Unified.


Intuit does **not** provide a programmatic webhook-registration API. The callback URL and entity subscriptions are configured in the [Intuit Developer Portal](https://developer.intuit.com/). Unified then receives Intuit deliveries and fans them out to your Unified webhook subscriptions.


Official Intuit docs: [Configure webhooks](https://developer.intuit.com/app/developer/qbo/docs/develop/webhooks/configure-webhooks)


---


## Prerequisites

- An Intuit Developer app with QuickBooks Online Accounting scopes
- A Unified workspace and a connected QuickBooks Online connection ([OAuth](/embeddedauth) completed)
- Your Unified **workspace ID** (from the Unified dashboard / API)

---


## Step 1 — Build the Unified webhook endpoint URL


Use this format:


```plain text
https://api.unified.to/webhook/workspace/quickbooks?workspace_id=YOUR_WORKSPACE_ID
```


> 💡 Replace `YOUR_WORKSPACE_ID` with your actual Unified workspace ID.  
> If your workspace runs in another Unified data region, use that region's API host instead of `api.unified.to` (for example EU / AU hosts).


Example:


```plain text
https://api.unified.to/webhook/workspace/quickbooks?workspace_id=5e8ba11d3fb8ff95c90b2
```


---


## Step 2 — Open your app in the Intuit Developer Portal

1. Go to [https://developer.intuit.com/app/developer/dashboard](https://developer.intuit.com/app/developer/dashboard)
2. Sign in and open the QuickBooks Online app that customers connect through Unified
3. In the left navigation, select **Webhooks**

---


## Step 3 — Choose Production or Development


Intuit maintains **separate** webhook configs:

- **Production** — live QuickBooks Online companies
- **Development** — sandbox / testing
1. Select **Production** or **Development** to match the companies you are testing
2. Enter the Endpoint URL from Step 1
3. Click **Show webhooks** (or equivalent) to expand the entity list

---


## Step 4 — Enable the entities Unified supports


Enable at least the entities that map to the Unified objects you care about:


| **QuickBooks entity** | **Unified object**    | **Operations to enable** |
| --------------------- | --------------------- | ------------------------ |
| Customer              | `accounting_contact`  | Create, Update, Delete   |
| Vendor                | `accounting_contact`  | Create, Update, Delete   |
| Invoice               | `accounting_invoice`  | Create, Update, Delete   |
| Class                 | `accounting_category` | Create, Update           |
> 📚 **Class** is listed as a supported webhook entity in Intuit's docs (Create / Update / Delete):  
> [Configure webhooks → supported API entities](https://developer.intuit.com/app/developer/qbo/docs/develop/webhooks/configure-webhooks)

1. Select **Save**

---


## Step 5 — Create Unified webhooks for each object/event


In Unified, create a **native** webhook for each object + event pair you need.


Examples:

- `accounting_contact` → `created` / `updated` / `deleted`
- `accounting_invoice` → `created` / `updated` / `deleted`
- `accounting_category` → `created` / `updated`

---


## Step 6 — Test the delivery path

1. In the Intuit Developer Portal Webhooks page, use **Send test notification** (if available) to confirm your endpoint responds with HTTP 200 quickly
2. In a connected QuickBooks company (sandbox or production matching Step 3), create or update an enabled entity — for example create/update a **Class** for `accounting_category`
3. Confirm Unified receives the delivery and dispatches to your Unified webhook hook URL

---


## Troubleshooting

- **No events arriving**
    - Confirm the Endpoint URL includes the correct `workspace_id`
    - Confirm you configured **Production** vs **Development** for the company you changed
    - Confirm the entity (e.g. **Class**) is enabled in the Intuit portal
    - Confirm a Unified native webhook exists for that `object_type` + `event`
- **Subscribe fails with realm_id error**
    - Re-auth the QuickBooks connection so `realm_id` is present
- **Events for one company only**
    - Expected: matching is per `realmId`. Each company connection has its own subscription marker

---


## References

- [Intuit: Configure webhooks](https://developer.intuit.com/app/developer/qbo/docs/develop/webhooks/configure-webhooks)
- [Intuit: Manage webhook notifications](https://developer.intuit.com/app/developer/qbo/docs/develop/webhooks/manage-webhooks-notifications)
- [Intuit: Best practices](https://developer.intuit.com/app/developer/qbo/docs/develop/webhooks/best-practices)