DealHub · AsyncAPI Specification
Dealhub Webhooks
Version
View Spec
View on GitHub
CompanyCPQQuote to CashContract Lifecycle ManagementSubscription ManagementBillingRevenue OperationsSalesPricingUsage Based BillingRevenue RecognitionSales EnablementAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-12'
method: searched
source: https://developers.dealhub.io/docs/webhooks-overview
docs:
- https://developers.dealhub.io/docs/webhooks-overview
- https://developers.dealhub.io/docs/how-to-configure-webhooks
- https://developers.dealhub.io/docs/dealroom-webhook-events-reference
spec_type: none
asyncapi_published: false
asyncapi_note: >-
DealHub documents a real, catalogued webhook surface in prose and tables but
publishes NO AsyncAPI document. /asyncapi.yaml, /asyncapi.json and an event-catalog
page were not found on developers.dealhub.io, and the ReadMe hub index
(developers.dealhub.io/llms.txt) contains no AsyncAPI entry. The event catalog
below is captured verbatim from the published documentation — nothing here is
synthesized into a spec.
transport:
style: HTTP POST
content_type: application/json
destination: customer-configured HTTPS endpoint URL
direction: DealHub -> subscriber
delivery: at-event, no documented retry/backoff policy
security:
note: >-
Outbound authentication is configured per webhook by the DealHub administrator
and must match what the receiving endpoint requires. One of three modes.
modes:
- {mode: Token, detail: 'DealHub sends a secret bearer token in the Authorization header.'}
- {mode: Basic, detail: 'DealHub sends a username and password for HTTP Basic authentication.'}
- {mode: None, detail: 'No Authorization header. Used when the endpoint is unsecured or
relies on a token embedded in the URL (e.g. an Azure SAS token).'}
signature_verification: false
signature_note: DealHub does not document a payload signature or timestamp header, so
subscribers cannot cryptographically verify origin — only the configured shared
credential distinguishes a genuine call.
envelope:
event_info:
- {field: webhook_id, description: Unique identifier of the webhook configuration.}
- {field: event_id, description: Unique identifier for this specific event notification.}
- {field: api_version, description: 'Version of the API that sent the event. Currently 1.0.'}
- {field: request_id, description: Present only when the event was triggered by an
asynchronous API call (product upload, version activation). Correlates back to
getAsyncRequestStatus.}
common_fields:
- {field: execution_date, description: GMT date and time the action occurred.}
- {field: executed_by, description: 'Login/email of the user who performed the action, or
SYSTEM for automated actions.'}
- {field: impersonated_by, description: Login of the admin who performed the action on
behalf of another user.}
quote_fields:
- {field: dealhub_quote_id, description: Use to call the Quote API for full detail.}
- {field: dealhub_opportunity_id}
- {field: additional_data, description: Optional. Answers to specific playbook questions,
configured per webhook.}
event_count: 16
events:
- {name: draftQuote, entity: Quote, trigger: A user creates a quote and saves it as a draft,
or modifies an existing draft.}
- {name: primaryQuote, entity: Quote, trigger: A user or the system marks a specific quote
as the Primary quote.}
- {name: quotePendingApproval, entity: Quote, trigger: A user submits a quote that requires
approval. Also published as each approver approves their part of the flow.}
- {name: quoteReady, entity: Quote, trigger: A quote is ready to be shared with the customer —
either fully approved, or submitted when no approval is required.}
- {name: quoteRejected, entity: Quote, trigger: An approver rejects the quote.}
- {name: quoteRecalled, entity: Quote, trigger: A user explicitly cancels (recalls) the quote.}
- {name: quotePublished, entity: Quote, trigger: The quote is published to a DealRoom.}
- {name: quoteUnpublished, entity: Quote, trigger: A user unpublishes the DealRoom.}
- {name: quoteWon, entity: Quote, trigger: The quote is signed, either via DealRoom or
externally.}
- {name: version, entity: Version, action: created, trigger: An administrator creates a new
version from scratch or duplicates an existing version.}
- {name: version, entity: Version, action: activated, trigger: An administrator activates a
specific version.}
- {name: version, entity: Version, action: reactivated, trigger: An administrator reactivates
a version.}
- {name: user, entity: User, action: created, trigger: 'A user was created — manually by an
admin, via API, or on first authentication.'}
- {name: user, entity: User, action: modified, trigger: A user was modified (fields updated,
or active status changed by an admin).}
- {name: user, entity: User, action: deleted, trigger: A user was deleted from the system.}
- {name: productsUpload, entity: Product Catalog, trigger: 'An SFTP product file upload or
Open API upload completed. Payload indicates success or error.'}
- {name: Failure WebHook v1, entity: AsyncRequest, trigger: 'The system failed to execute an
asynchronous API request (e.g. duplicating or activating a version).'}
- {name: crmImport, entity: CRM Import, trigger: 'A CRM Import (buyer account and contact
migration) completed. Payload carries total/succeeded/failed/skipped counts and the
originating request_id in event_info.'}
dealroom_events:
envelope: DEALROOM_EVENT
discriminator: action_summary
reference: https://developers.dealhub.io/docs/dealroom-webhook-events-reference
note: >-
DealRoom (digital sales room) activity — document actions, signatures, redline
sessions and related buyer-side activity — is delivered under a separate common
DEALROOM_EVENT envelope with an action_summary object identifying the specific
activity, rather than as distinct top-level event names.