AsyncAPI definition for Vercel's webhook surface. Vercel webhooks are HTTP POST deliveries from Vercel to a subscriber-configured endpoint URL registered either as an Account Webhook (Team Settings -> Webhooks) or through a Vercel Integration (Integration Console). Every delivery is a JSON document with a stable envelope: { "id": "", "type": "", "createdAt": , "region": "", "payload": { ... event specific ... } } Each delivery includes an `x-vercel-signature` header. Vercel signs the raw request body with the webhook's secret using HMAC-SHA1 and sends the hex-encoded digest in this header. Subscribers verify a delivery by recomputing HMAC-SHA1 over the raw body with their secret and comparing the result to `x-vercel-signature` using a constant-time comparison. For Integration webhooks the secret is the Integration Secret (also referred to as the Client Secret) from the Integration Console; for Account webhooks the secret is the one shown once when the webhook is created. Sourced from: - https://vercel.com/docs/webhooks - https://vercel.com/docs/webhooks/webhooks-api - https://vercel.com/docs/headers/request-headers#x-vercel-signature Event types and payload fields that the Vercel documentation does not describe are not invented here.
View SpecView on GitHubAI GatewayGatewaysObservabilityWebhookServerlessHostingDeploymentAsyncAPIEventsWebhooks
Channels
deployment.created
subscribeonDeploymentCreated
Deployment created
A new deployment is initiated.
deployment.ready
subscribeonDeploymentReady
Deployment ready
A deployment is ready.
deployment.succeeded
subscribeonDeploymentSucceeded
Deployment succeeded
A deployment successfully built and any integration checks completed.
deployment.error
subscribeonDeploymentError
Deployment failed
A deployment failed.
deployment.canceled
subscribeonDeploymentCanceled
Deployment canceled
A deployment was canceled.
deployment.promoted
subscribeonDeploymentPromoted
Deployment promoted
A deployment was promoted to production (manually or automatically). Does not include rollbacks.
deployment.rollback
subscribeonDeploymentRollback
Deployment rollback accepted
Vercel accepted an instant rollback request.
deployment.cleanup
subscribeonDeploymentCleanup
Deployment cleanup
A deployment is permanently deleted after the 30-day recovery period.
deployment.check-rerequested
subscribeonDeploymentCheckRerequested
Deployment check re-requested
A user requested a failed deployment check to be re-run.
deployment.integration.action.start
subscribeonDeploymentIntegrationActionStart
Deployment integration action started
A deployment started an integration action.
deployment.integration.action.cancel
subscribeonDeploymentIntegrationActionCancel
Deployment integration action canceled
An integration action or its deployment was canceled.
deployment.integration.action.cleanup
subscribeonDeploymentIntegrationActionCleanup
Deployment integration action cleanup
A deployment with an integration action is permanently deleted.
domain.created
subscribeonDomainCreated
Domain created
A domain was created.
domain.auto-renew-changed
subscribeonDomainAutoRenewChanged
Domain auto-renew changed
A domain's auto-renew setting changed.
domain.certificate-add
subscribeonDomainCertificateAdd
Domain certificate added
An SSL certificate was added for a domain.
domain.certificate-add-failed
subscribeonDomainCertificateAddFailed
Domain certificate add failed
Adding an SSL certificate for a domain failed.
domain.certificate-deleted
subscribeonDomainCertificateDeleted
Domain certificate deleted
An SSL certificate for a domain was deleted.
domain.certificate-renew
subscribeonDomainCertificateRenew
Domain certificate renewed
An SSL certificate for a domain was renewed.
domain.certificate-renew-failed
subscribeonDomainCertificateRenewFailed
Domain certificate renew failed
Renewing an SSL certificate for a domain failed.
domain.dns-records-changed
subscribeonDomainDnsRecordsChanged
Domain DNS records changed
DNS records in a Vercel-hosted zone were changed.
domain.renewal
subscribeonDomainRenewal
Domain renewed
A domain was renewed.
domain.renewal-failed
subscribeonDomainRenewalFailed
Domain renewal failed
A domain renewal failed.
domain.transfer-in-started
subscribeonDomainTransferInStarted
Domain transfer-in started
A domain transfer into Vercel was initiated.
domain.transfer-in-completed
subscribeonDomainTransferInCompleted
Domain transfer-in completed
A domain transfer into Vercel completed.
domain.transfer-in-failed
subscribeonDomainTransferInFailed
Domain transfer-in failed
A domain transfer into Vercel failed.
project.created
subscribeonProjectCreated
Project created
A new project was created. Sent only when the integration has access to all team projects.
project.removed
subscribeonProjectRemoved
Project removed
A project was removed. Sent only when the integration has access to all team projects.
project.renamed
subscribeonProjectRenamed
Project renamed
A project was renamed. Sent only when the integration has access to all team projects.
project.env-variable.created
subscribeonProjectEnvVariableCreated
Project environment variable created
A project environment variable was created. The value is not included in the payload.
project.env-variable.updated
subscribeonProjectEnvVariableUpdated
Project environment variable updated
A project environment variable was updated. The value is not included in the payload.
A user confirmed pending scope changes for an integration.
integration-configuration.transferred
subscribeonIntegrationConfigurationTransferred
Integration configuration transferred
An integration installation was transferred to another team.
integration-resource.project-connected
subscribeonIntegrationResourceProjectConnected
Integration resource connected to project
A user connected an integration resource to a project.
integration-resource.project-disconnected
subscribeonIntegrationResourceProjectDisconnected
Integration resource disconnected from project
A user disconnected an integration resource from a project.
marketplace.invoice.created
subscribeonMarketplaceInvoiceCreated
Marketplace invoice created
A marketplace invoice was created and sent to the customer.
marketplace.invoice.paid
subscribeonMarketplaceInvoicePaid
Marketplace invoice paid
A marketplace invoice was paid.
marketplace.invoice.notpaid
subscribeonMarketplaceInvoiceNotPaid
Marketplace invoice not paid
A marketplace invoice payment failed.
marketplace.invoice.overdue
subscribeonMarketplaceInvoiceOverdue
Marketplace invoice overdue
A marketplace invoice was not paid after the grace period.
marketplace.invoice.refunded
subscribeonMarketplaceInvoiceRefunded
Marketplace invoice refunded
A marketplace invoice was refunded.
marketplace.member.changed
subscribeonMarketplaceMemberChanged
Marketplace member changed
A marketplace installation member was added, removed, or had their role changed.
alerts.triggered
subscribeonAlertsTriggered
Alert triggered
An observability alert was triggered.
Messages
✉
DeploymentCreated
Deployment created
A new deployment is initiated.
✉
DeploymentReady
Deployment ready
✉
DeploymentSucceeded
Deployment succeeded
✉
DeploymentError
Deployment error
✉
DeploymentCanceled
Deployment canceled
✉
DeploymentPromoted
Deployment promoted
✉
DeploymentRollback
Deployment rollback accepted
✉
DeploymentCleanup
Deployment cleanup
✉
DeploymentCheckRerequested
Deployment check re-requested
✉
DeploymentIntegrationActionStart
Deployment integration action started
✉
DeploymentIntegrationActionCancel
Deployment integration action canceled
✉
DeploymentIntegrationActionCleanup
Deployment integration action cleanup
✉
DomainCreated
Domain created
✉
DomainAutoRenewChanged
Domain auto-renew changed
✉
DomainCertificateAdd
Domain certificate added
✉
DomainCertificateAddFailed
Domain certificate add failed
✉
DomainCertificateDeleted
Domain certificate deleted
✉
DomainCertificateRenew
Domain certificate renewed
✉
DomainCertificateRenewFailed
Domain certificate renew failed
✉
DomainDnsRecordsChanged
Domain DNS records changed
✉
DomainRenewal
Domain renewed
✉
DomainRenewalFailed
Domain renewal failed
✉
DomainTransferInStarted
Domain transfer-in started
✉
DomainTransferInCompleted
Domain transfer-in completed
✉
DomainTransferInFailed
Domain transfer-in failed
✉
ProjectCreated
Project created
✉
ProjectRemoved
Project removed
✉
ProjectRenamed
Project renamed
✉
ProjectEnvVariableCreated
Project environment variable created
✉
ProjectEnvVariableUpdated
Project environment variable updated
✉
ProjectEnvVariableDeleted
Project environment variable deleted
✉
ProjectDomainCreated
Project domain created
✉
ProjectDomainDeleted
Project domain deleted
✉
ProjectDomainMoved
Project domain moved
✉
ProjectDomainVerified
Project domain verified
✉
ProjectDomainUnverified
Project domain unverified
✉
ProjectDomainUpdated
Project domain updated
✉
ProjectRollingReleaseStarted
Rolling release started
✉
ProjectRollingReleaseApproved
Rolling release approved
✉
ProjectRollingReleaseCompleted
Rolling release completed
✉
ProjectRollingReleaseAborted
Rolling release aborted
✉
FlagCreated
Feature flag created
✉
FlagUpdated
Feature flag updated
✉
IntegrationConfigurationRemoved
Integration configuration removed
✉
IntegrationConfigurationPermissionUpgraded
Integration configuration permission upgraded
✉
IntegrationConfigurationScopeChangeConfirmed
Integration configuration scope change confirmed
✉
IntegrationConfigurationTransferred
Integration configuration transferred
✉
IntegrationResourceProjectConnected
Integration resource connected to project
✉
IntegrationResourceProjectDisconnected
Integration resource disconnected from project
✉
MarketplaceInvoiceCreated
Marketplace invoice created
✉
MarketplaceInvoicePaid
Marketplace invoice paid
✉
MarketplaceInvoiceNotPaid
Marketplace invoice not paid
✉
MarketplaceInvoiceOverdue
Marketplace invoice overdue
✉
MarketplaceInvoiceRefunded
Marketplace invoice refunded
✉
MarketplaceMemberChanged
Marketplace member changed
✉
AlertsTriggered
Alert triggered
Servers
https
subscriber{endpointUrl}
The HTTPS endpoint that the subscriber configures on the Vercel webhook. Vercel delivers all events the subscription opts into to this URL via HTTP POST with a JSON body.
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.