New to VisionScaper?
Start here
Help Center › Get your API keys › QuickBooks webhook and Security key
QuickBooks webhook and Security key
Optional setup that makes QuickBooks tell VisionScaper right away when a customer or invoice changes.
Without a webhook, VisionScaper syncs on its own schedule. With one, QuickBooks tells VisionScaper when something changes and a sync starts soon after. It is optional.
Note: The Intuit developer pages could not be read. The Intuit screen names below come from VisionScaper’s own walkthrough and are unverified. The signature method is from the plugin code.
Before you start
- QuickBooks is connected (see “Get your QuickBooks Client ID and Client Secret”).
Steps
- In the Contractor Hub go to Settings → Connected apps → QuickBooks Online → Set-up walkthrough and copy the Webhook address. It ends in
/wp-json/dreamscaper/v1/qbo/webhook. - In your app on developer.intuit.com open Webhooks. The walkthrough says to add an endpoint with the Customer entity. A third-party guide notes the webhook is configured in the Production section.
- Paste the address. Intuit shows a key (the verifier token). Copy it.
- Back in the QuickBooks Online card, paste it into the field Security key (the placeholder reads “Security key (optional)”; older wording called it a Verifier token).
- Click Save settings.
- Change a customer in QuickBooks and watch for VisionScaper to catch up.
What triggers a sync
The code looks for changes to these QuickBooks records: Customer, and (for money sync) Invoice, Payment and Item. Customer changes start a customer sync. The others start the money sync if it is turned on. If you add only the Customer entity as the walkthrough says, money changes will not reach VisionScaper by webhook. Add Invoice, Payment and Item too if you use money sync (not verified against Intuit’s screens).
How the secret is checked
VisionScaper checks Intuit’s intuit-signature header. It computes a base64 HMAC-SHA256 of the raw body using your Security key. A wrong or empty key answers 401. This matches how Intuit signs webhooks, as far as the code shows.
Tips
- Keep the Security key private.
- If you skip this, nothing breaks. The scheduled sync still runs.
- The Security key is stored scrambled.
If something goes wrong
- Intuit shows the endpoint as failing. Wrong address, or HTTPS is not working.
- Webhooks reach the site but nothing syncs. The Security key does not match, or the company is not connected.
Sources
- Plugin: assets/js/contacts.js (walkthrough and field); includes/integrations-qbo.php (dreamscaper_rest_qbo_webhook).
- Intuit developer pages were unreachable (JavaScript only), so Intuit screen names are unverified.