API Reference
Webhooks
Subscribe to workspace events and receive HTTPS POST deliveries when matching records change. Each subscription covers one event type per workspace.
Last updated 2026-06-10
Overview
Webhooks let your integration react to changes in a workspace without polling. Create a subscription for a specific event (for example `customer.created`), provide a public HTTPS callback URL, and COUNT delivers a JSON payload whenever that event occurs.
Only subscriptions with status `active` receive deliveries. You may optionally configure a signing secret; COUNT then sends an `X-Webhook-Signature` header on every delivery so you can verify authenticity.
Key concepts
One subscription per event
Each workspace allows one subscription per event type per partner. Creating a duplicate returns an error — update the existing subscription instead.
Delivery payload
Deliveries are HTTPS POST requests with a JSON body containing `id`, `event`, `apiVersion`, `occurredAt`, `team`, and `data`. Verify the raw request bytes against your signing secret.
Signature verification
When a signing secret is configured, COUNT sends `X-Webhook-Signature: sha256=<hex>` where the hex is HMAC-SHA256 of the raw body using your secret. See the Verify Webhook Deliveries guide for a walkthrough.
Callback URL requirements
Callback URLs must be public HTTPS endpoints. Localhost and private IP addresses are rejected when creating or updating a subscription.
The webhook subscription object
Fields returned when you list, create, or update a subscription.
Attributes
uuiduuidSubscription identifier. Use this value in update and delete paths.
eventenumThe event type this subscription listens for.
One of: customer.created, customer.updated, customer.deleted, vendor.created, vendor.updated, vendor.deleted, transaction.created, transaction.updated, transaction.deleted, invoice.created, invoice.updated, invoice.deleted, bill.created, bill.updated, bill.deleted
callbackUrlstringPublic HTTPS URL that receives POST deliveries.
statusenumOnly active subscriptions receive deliveries.
One of: active, paused, disabled
createdAtdatetimeISO 8601 timestamp when the subscription was created.
updatedAtdatetimeISO 8601 timestamp of the last update.
{
"uuid": "e0f1a2b3-c4d5-6789-ef01-234567890abc",
"event": "customer.created",
"callbackUrl": "https://webhook.site/your-unique-id",
"status": "active",
"createdAt": "2026-03-01T09:00:00.000Z",
"updatedAt": "2026-03-01T09:00:00.000Z"
}Signing secret is write-only
The signing secret is never returned in list or retrieve responses. Store it securely when you create or update a subscription. Pass `signingSecret: null` on update to clear it.Test with a request catcher
Use a service like webhook.site to capture deliveries while developing. Point your subscription callback URL there, trigger the event, and inspect the payload and signature header.Related
Recent changes
Webhooks and Documents reference
Added full API reference groups for Webhooks and Documents, including chunked upload and signature verification guidance.
Expanded webhook events
Expanded webhook events to cover bills and invoices.
Endpoints
/partners/webhooksReturns every webhook subscription for the authorized workspace.
/partners/webhooksSubscribes to a single event type for the workspace.
/partners/webhooks/{uuid}Updates callback URL, status, or signing secret for an existing subscription.
/partners/webhooks/{uuid}Removes a webhook subscription. Deliveries stop immediately.
