Delete a webhook subscription
The same event-specific scope used to subscribe is required.
Permission
An OAuth access token with any one of these scopes. How to get a token
webhooks:document_statusSubscribe to document status changes.
webhooks:form_submissionSubscribe to form submissions.
webhooks:contact_createdSubscribe to contact creation.
webhooks:document_createdSubscribe to document creation.
webhooks:recipient_activitySubscribe to recipient views and signatures.
webhooks:contact_changesSubscribe to contact updates and removals.
webhooks:document_deliverySubscribe to delivery status changes.
webhooks:product_changesSubscribe to product changes.
webhooks:document_paymentsSubscribe to document payment events.
webhooks:document_commentsSubscribe to document comment events.
Parameters
Not sure what to enter? Here’s where to find IDs.
eventpath · stringrequiredScope mapping:
documentStatusChange → webhooks:document_status; formSubmitted → webhooks:form_submission; contactCreated → webhooks:contact_created; documentCreated → webhooks:document_created; recipientFirstViewed and recipientSigned → webhooks:recipient_activity; contactUpdated and contactRemoved → webhooks:contact_changes; documentDeliveryStatusChanged → webhooks:document_delivery; productChanged → webhooks:product_changes; documentPaymentEvent → webhooks:document_payments; documentCommentEvent → webhooks:document_comments.One of documentStatusChange, formSubmitted, contactCreated, documentCreated, recipientFirstViewed, recipientSigned, contactUpdated, contactRemoved, documentDeliveryStatusChanged, productChanged, documentPaymentEvent, documentCommentEvent. client_idquery · stringrequiredThe Client ID of your OAuth client. It’s public, and goes on every request alongside your access token. Find it in QuoteCloud under Settings → API dashboard → Manage Integrations → OAuth Clients.Length at least 1.
statusquery · stringDocument status for
documentStatusChange; optional subtype for delivery (scheduled, paused_addon, queued, preparing, sending, sent, skipped, failed, needs_review, cancelled), product (created, updated, activated, deactivated), payment (received, failed, refunded), or comment (created, resolved, reopened).zapIdquery · stringSent by Zapier to identify the Zap. You can leave this out.
Request body
Sent as application/json.
hookUrlstring (uri)requiredResponses
200Webhook deleted.
dataobjectrequiredFields
statusstringrequiredAlways
success. messagestringrequired400Invalid request or validation failure.
dataobjectrequiredFields
statusstringrequiredAlways
error. messagestringrequiredcodestringdocumentRefstringassetGenerationIdstringerrorsarray of objectItem fields
fieldstringrequiredmessagestringrequired401Missing or invalid bearer token or client ID.
errorstringrequirederror_descriptionstring403Insufficient scope, missing add-on, usage limit, or permission denial.
Exactly one of these:
OAuthError
errorstringrequirederror_descriptionstringApiErrorEnvelope
dataobjectrequiredFields
statusstringrequiredAlways
error. messagestringrequiredcodestringdocumentRefstringassetGenerationIdstringerrorsarray of objectItem fields
fieldstringrequiredmessagestringrequired404Requested resource was not found in the token's company.
dataobjectrequiredFields
statusstringrequiredAlways
error. messagestringrequiredcodestringdocumentRefstringassetGenerationIdstringerrorsarray of objectItem fields
fieldstringrequiredmessagestringrequired429Shared company API request quota exceeded. Wait before retrying.
Retry-Afterheader · integerMinimum seconds to wait before retrying.Value at least 1.
dataobjectrequiredFields
statusstringrequiredAlways
error. messagestringrequiredretryAfterSecondsintegerrequiredValue at least 1.
Rate limit
120 requests a minute per company, shared across REST, Zapier and MCP. On a 429, wait for Retry-After.