Vendasta · AsyncAPI Specification
Vendasta Webhooks
Version
View Spec
View on GitHub
CompanySaaSMarketplaceSMBWhite LabelResellerMarketingCRMDigital AgencyPlatformAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-13'
method: searched
source: https://github.com/vendasta/marketplace-documentation/blob/master/docs/Other/marketplace_webhooks.md
docs: https://developers.vendasta.com/vendor
notes: >-
Vendasta publishes NO AsyncAPI document — searched the developer center, both documentation GitHub
repos (vendasta/marketplace-documentation, vendasta/api-gateway-docs) and /asyncapi.yaml on every
host, 2026-08-13. It does publish a real, well-specified webhook surface in two distinct shapes,
captured here as the event catalog: (1) MARKETPLACE webhooks — 8 provider-defined event types
pushed to a URL a vendor registers in Vendor Center, delivered as an RS256-signed JWT sent as
text/plain in the POST body, with the platform's RSA public key published for verification; and
(2) the AUTOMATION "Send a webhook" action — a partner-configured outbound HTTP call whose query
params, headers, cookies and JSON body the partner defines, with response data passed to the next
automation step. Registration is UI-only for both: "Webhooks are registered by placing a url in the
Integration page of an App in Vendor Center. API registration is not available." That is the single
biggest agent-readiness gap on this surface — an agent cannot subscribe programmatically.
spec_type: none
asyncapi_published: false
webhooks_published: true
transport:
protocol: https
method: POST
content_type: text/plain
body: JWT signed base64 string sent as plaintext raw in the POST body
signature:
format: JWT
algorithm: RS256
key_type: RSA public key
issuer_claim: Vendasta Marketplace
test_issuer_claim: Vendasta Marketplace Test
public_key_published: true
public_key_location: https://github.com/vendasta/marketplace-documentation/blob/master/docs/Other/marketplace_webhooks.md
verification_note: >-
Always verify the `iss` claim is 'Vendasta Marketplace' (or 'Vendasta Marketplace Test' for
payloads sent from the Vendor Center testing tool). The payload sits under the namespaced claim
"vendasta.com/marketplace/webhook".
payload_claim: vendasta.com/marketplace/webhook
registration:
method: ui-only
location: https://vendors.vendasta.com
api_registration: false
quote: >-
Webhooks are registered by placing a url in the Integration page of an App in Vendor Center. API
registration is not available.
delivery:
timeouts:
- {webhook: Purchase webhooks, timeout: 30s, retry: backoff doubles from 30s to a maximum spacing of approximately one hour}
- {webhook: All other Marketplace webhooks, timeout: 10s, retry: backoff doubles from 60s to a maximum spacing of approximately one hour}
response_contract:
- {status: 2xx, result: Success — do not retry}
- {status: 3xx-4xx, result: 'Permanent error — no retry. For purchase webhooks the activation resolves as `rejected`.'}
- {status: 5xx, result: Transient error — retried. For purchase webhooks the activation stays pending.}
rejection_body_fields: [error_code, message, human_readable_message]
events:
- name: Product Purchase Hook
webhook_id: purchase
actions: [provisioned, change-edition, de-provisioned]
description: >-
Fired every time billing information about an account changes with respect to your product.
payload_fields:
- webhook_id
- action
- account
- order_form
- partner_id
- market_id
- activation_id
- order_form_submission_id
- vendor_order_id
- edition_id
- app_id
- variable_price
variable_price_fields:
received_from_reseller: [value, currency, frequency]
sent_to_vendor: [converted_value, conversion_currency, conversion_rate]
- name: Add-Ons Purchase Hook
actions: [provisioned, de-provisioned]
description: Fired when billing information changes with respect to an Add-on for your product.
payload_fields:
- webhook_id
- action
- account
- order_form
- market_id
- addon_id
- activation_id
- order_form_submission_id
- variable_price
- activation_time
- deactivation_time
- partner_id
- app_id
- name: Cancelation Webhook
webhook_id: Cancel-Product
actions: [cancel, undo-cancel]
description: Fired when a product is canceled or a cancellation is undone.
payload_fields:
- account_group_id
- activation_id
- activation_time
- cancellation_time
- deactivation_time
- cancellation_choices
- cancellation_comment
- webhook_id
- action
- name: Logout Webhook
webhook_id: logout
description: >-
Fired when a user session is invalidated by timeout or an explicit logout; instructs the app to
remove that session from its session store. session_id is a one-way hash of the Vendasta session id.
payload_fields: [webhook_id, session_id, user_id, partner_id, market_id]
- name: Account Update Webhook
webhook_id: account
actions: [update]
description: >-
Fired every time account information changes (address, phone, etc.). Intended for keeping a local
account cache. Only CORE account data is in the payload; extended data (images, description,
toll-free number, services offered, hours of operation, landmark) must be pulled from Get Account
Rich Data.
payload_fields: [webhook_id, action, account, partner_id, market_id]
- name: User Permission Webhook
actions: [permission-granted, permission-revoked]
description: >-
Fired when permission is granted or revoked for an account that uses any of your products.
Intended for keeping a local cache of users and the accounts they can access. Note the user_id
here is the `legacy_user_id` from the OIDC user-info endpoint.
- name: Customer Webhook
status: deprecated
actions: [create, update, delete]
description: >-
Fired when a customer is created, updated or deleted in an account's Customer List. Superseded by
the Vendasta CRM — no new integrations should be built against it.
payload_fields: [action, origin, first_name, last_name, email, phone, address, city, state, country, contact_id, account_group_id, created]
- name: Spend Change Request Webhook
description: >-
Fired when a spend change is requested for one of the vendor's products. Applies only to apps on
the Variable Spend billing model. Resolve it with the Marketplace change_spend API.
payload_fields: [requested_value, currency, converted_value, conversion_currency, conversion_rate]
related_api: openapi/vendasta-change-spend-api-openapi.yml
automation_webhook_action:
name: Send a webhook
source: https://github.com/vendasta/api-gateway-docs/blob/master/docs/Guides/Automate/WebhookAction.md
description: >-
Any Partner Center automation can include a `Send a webhook` step. The partner defines the query
parameters, headers, cookies and JSON body; the response body can be shaped and passed to later
automation steps. Body is a single flat JSON object — nested JSON is not supported unless
manually constructed.
supersedes: Trigger a webhook step
timeout: 60s
retry_conditions:
- Response took more than 60 seconds
- HTTP response code >= 500
- Connection broken before the response was processed
example_body_fields: [accountId, entityId, marketId, orderId, partnerId]
guidance: >-
"Be careful when including sensitive data... it is recommended to only send ids and then fetch up
to date info using an API request."
testing:
tool: Vendor Center Testing Page
detail: >-
Sends dummy PURCHASE webhook payloads only to a URL you supply. Order-form payloads cannot be
tested this way — you must test-activate the product in the platform.
gaps:
- No AsyncAPI document published.
- No programmatic webhook registration — Vendor Center UI only.
- No documented event-type list endpoint or subscription API.
checked: '2026-08-13'