GET /v3/company/{realmId}/cdc?entities=Invoice,Payment,Customer&changedSince={ISO8601 timestamp}
Parse the 'CDCResponse' array; each entry contains an entity name and a 'QueryResponse' listing changed objects of that type
Detect deleted records by checking for objects where 'status' is 'Deleted' in the response
Store the high-water-mark timestamp (use the response's 'time' field, not your local clock) for the next CDC call
Request multiple entity types in one CDC call to reduce API round-trips, but check that all listed entity types support CDC
Implement idempotent upsert logic downstream, as the same record may appear in multiple CDC windows if it is updated repeatedly
Known gotchas
CDC has a maximum lookback window (consult current docs for the exact duration); requesting changes older than the window returns an error rather than partial results
Not every QBO entity supports CDC; verify the supported entity list in the current documentation before building a sync on an entity type
Deleted records in CDC carry minimal data (only Id and a few metadata fields); your system must tolerate receiving a delete for a record it may never have seen (e.g., created and deleted between CDC polls)
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp