Webflow Webhooks API
The Webflow Webhooks API provides endpoints for registering, listing, retrieving, and removing webhooks that deliver real-time event notifications for a Webflow site.
The Webflow Webhooks API provides endpoints for registering, listing, retrieving, and removing webhooks that deliver real-time event notifications for a Webflow site.
openapi: 3.1.0
info:
title: Webflow Webhooks API
description: Webflow Data API v2 - Webhooks endpoints.
version: 2.0.0
contact:
name: Webflow Developer Relations
email: [email protected]
url: https://developers.webflow.com
termsOfService: https://webflow.com/legal/terms
license:
name: MIT
url: https://opensource.org/licenses/MIT
servers:
- url: https://api.webflow.com/v2
description: Webflow API v2
x-fern-server-name: Data API
security:
- OAuth2: []
- ApiKey: []
tags:
- name: Webhooks
description: Webhooks are the webhooks in your Webflow site.
paths:
/sites/{site_id}/webhooks:
get:
x-fern-sdk-group-name: webhooks
x-fern-sdk-method-name: list
operationId: list-webhooks
summary: Webflow List Webhooks
description: 'List all App-created Webhooks registered for a given site
Required scope | `sites:read`
'
tags:
- Webhooks
parameters:
- name: site_id
in: path
description: Unique identifier for a Site
example: 580e63e98c9a982ac9b8b741
required: true
schema:
type: string
format: objectid
default:
responses:
'200':
description: Request was successful
content:
application/json:
schema:
example:
webhooks:
- id: 57ca0a9e418c504a6e1acbb6
triggerType: form_submission
siteId: 562ac0395358780a1f5e6fbd
workspaceId: 4f4e46fd476ea8c507000001
filter:
name: Email Form
createdOn: '2016-09-02T23:26:22.241Z'
lastTriggered: '2023-02-08T23:59:28.572Z'
url: https://webhook.site/7f7f7f7f-7f7f-7f7f-7f7f-7f7f7f7f7f7f
- id: 578d85cce0c47cd2865f4cf2
triggerType: form_submission
siteId: 562ac0395358780a1f5e6fbd
workspaceId: 4f4e46fd476ea8c507000001
filter:
name: Email Form
createdOn: '2016-07-19T01:43:40.585Z'
lastTriggered: '2023-02-08T23:59:28.572Z'
url: https://webhook.site/7f7f7f7f-7f7f-7f7f-7f7f-7f7f7f7f7f7f
- id: 578d85cce0c47cd2865f4cf3
triggerType: form_submission
siteId: 562ac0395358780a1f5e6fbd
workspaceId: 4f4e46fd476ea8c507000001
filter:
name: Email Form
createdOn: '2016-07-19T01:43:40.605Z'
lastTriggered: '2023-02-08T23:59:28.572Z'
url: https://webhook.site/7f7f7f7f-7f7f-7f7f-7f7f-7f7f7f7f7f7f
properties:
webhooks:
type: array
items:
example:
id: 582266e0cd48de0f0e3c6d8b
triggerType: form_submission
siteId: 562ac0395358780a1f5e6fbd
workspaceId: 4f4e46fd476ea8c507000001
createdOn: '2022-11-08T23:59:28.572Z'
lastTriggered: '2023-02-08T23:59:28.572Z'
filter:
url: https://webhook.site/7f7f7f7f-7f7f-7f7f-7f7f-7f7f7f7f7f7f
properties:
id:
readOnly: true
type: string
format: objectid
example: 57ca0a9e418c504a6e1acbb6
description: Unique identifier for the Webhook registration
triggerType:
type: string
example: form_submission
description: 'The type of event that triggered the request. See the the documentation for details on [supported events](/data/reference/all-events).
'
enum:
- form_submission
- site_publish
- page_created
- page_metadata_updated
- page_deleted
- ecomm_new_order
- ecomm_order_changed
- ecomm_inventory_changed
- collection_item_created
- collection_item_changed
- collection_item_deleted
- collection_item_published
- collection_item_unpublished
- comment_created
url:
type: string
example: https://example.com/webhook
description: URL to send the Webhook payload to
workspaceId:
readOnly: true
type: string
format: objectid
example: 580e63e98c9a982ac9b8b741
description: Unique identifier for the Workspace the Webhook is registered in
siteId:
readOnly: true
type: string
format: objectid
example: 562ac0395358780a1f5e6fbd
description: Unique identifier for the Site the Webhook is registered in
filter:
description: Only supported for the `form_submission` trigger type. Filter for the form you want Webhooks to be sent for.
type: object
properties:
name:
type: string
description: The name of the form you'd like to recieve notifications for.
example: My Form
lastTriggered:
readOnly: true
type: string
format: date-time
example: '2016-09-06T21:12:22.148Z'
description: Date the Webhook instance was last triggered
createdOn:
readOnly: true
type: string
format: date-time
example: '2016-09-02T23:26:22.241Z'
description: Date the Webhook registration was created
pagination:
description: Pagination object
type: object
required:
- limit
- offset
- total
properties:
limit:
type: integer
description: The limit used for pagination
example: 100
readOnly: true
offset:
type: integer
description: The offset used for pagination
example: 0
readOnly: true
total:
type: integer
description: The total number of records
example: 100
readOnly: true
'400':
description: Request body was incorrectly formatted.
x-logErrorCode: 400
content:
application/json:
schema:
type: object
example:
code: not_authorized
message: Request not authorized
externalReference:
details: []
properties:
code:
type: string
description: Error code
example: not_authorized
enum:
- bad_request
- collection_not_found
- conflict
- duplicate_collection
- duplicate_user_email
- ecommerce_not_enabled
- forbidden
- forms_require_republish
- incompatible_webhook_filter
- internal_error
- invalid_auth_version
- invalid_credentials
- invalid_domain
- invalid_user_email
- item_not_found
- missing_scopes
- no_domains
- not_authorized
- not_enterprise_plan_site
- not_enterprise_plan_workspace
- order_not_found
- resource_not_found
- too_many_requests
- unsupported_version
- unsupported_webhook_trigger_type
- user_limit_reached
- user_not_found
- users_not_enabled
- validation_error
message:
type: string
description: Error message
example: Request not authorized
externalReference:
type: string
description: Link to more information
example: ''
details:
type: array
description: Array of errors
items:
- type: string
example: Invalid email address
description: Error message
- type: object
example:
field: email
message: Invalid email address
description: Error message
example: []
example:
code: bad_request
message: 'Bad Request: Request is malformed'
externalReference:
details: []
'401':
description: Provided access token is invalid or does not have access to requested resource
x-logErrorCode: 401
content:
application/json:
schema:
type: object
example:
code: not_authorized
message: Request not authorized
externalReference:
details: []
properties:
code:
type: string
description: Error code
example: not_authorized
enum:
- bad_request
- collection_not_found
- conflict
- duplicate_collection
- duplicate_user_email
- ecommerce_not_enabled
- forbidden
- forms_require_republish
- incompatible_webhook_filter
- internal_error
- invalid_auth_version
- invalid_credentials
- invalid_domain
- invalid_user_email
- item_not_found
- missing_scopes
- no_domains
- not_authorized
- not_enterprise_plan_site
- not_enterprise_plan_workspace
- order_not_found
- resource_not_found
- too_many_requests
- unsupported_version
- unsupported_webhook_trigger_type
- user_limit_reached
- user_not_found
- users_not_enabled
- validation_error
message:
type: string
description: Error message
example: Request not authorized
externalReference:
type: string
description: Link to more information
example: ''
details:
type: array
description: Array of errors
items:
- type: string
example: Invalid email address
description: Error message
- type: object
example:
field: email
message: Invalid email address
description: Error message
example: []
example:
code: not_authorized
message: Request not authorized
externalReference:
details: []
'404':
description: Requested resource not found
x-logErrorCode: 404
content:
application/json:
schema:
type: object
example:
code: not_authorized
message: Request not authorized
externalReference:
details: []
properties:
code:
type: string
description: Error code
example: not_authorized
enum:
- bad_request
- collection_not_found
- conflict
- duplicate_collection
- duplicate_user_email
- ecommerce_not_enabled
- forbidden
- forms_require_republish
- incompatible_webhook_filter
- internal_error
- invalid_auth_version
- invalid_credentials
- invalid_domain
- invalid_user_email
- item_not_found
- missing_scopes
- no_domains
- not_authorized
- not_enterprise_plan_site
- not_enterprise_plan_workspace
- order_not_found
- resource_not_found
- too_many_requests
- unsupported_version
- unsupported_webhook_trigger_type
- user_limit_reached
- user_not_found
- users_not_enabled
- validation_error
message:
type: string
description: Error message
example: Request not authorized
externalReference:
type: string
description: Link to more information
example: ''
details:
type: array
description: Array of errors
items:
- type: string
example: Invalid email address
description: Error message
- type: object
example:
field: email
message: Invalid email address
description: Error message
example: []
example:
code: resource_not_found
message: 'Requested resource not found: The site cannot be found'
externalReference:
details: []
'429':
description: The rate limit of the provided access_token has been reached. Please have your application respect the X-RateLimit-Remaining header we include on API responses.
x-logErrorCode: 429
headers:
X-RateLimit-Remaining:
description: Contains the number of available requests remaining in the current minute
schema:
type: number
X-RateLimit-Limit:
description: Contains your current overall rate limit per minute
schema:
type: number
content:
application/json:
schema:
type: object
example:
code: not_authorized
message: Request not authorized
externalReference:
details: []
properties:
code:
type: string
description: Error code
example: not_authorized
enum:
- bad_request
- collection_not_found
- conflict
- duplicate_collection
- duplicate_user_email
- ecommerce_not_enabled
- forbidden
- forms_require_republish
- incompatible_webhook_filter
- internal_error
- invalid_auth_version
- invalid_credentials
- invalid_domain
- invalid_user_email
- item_not_found
- missing_scopes
- no_domains
- not_authorized
- not_enterprise_plan_site
- not_enterprise_plan_workspace
- order_not_found
- resource_not_found
- too_many_requests
- unsupported_version
- unsupported_webhook_trigger_type
- user_limit_reached
- user_not_found
- users_not_enabled
- validation_error
message:
type: string
description: Error message
example: Request not authorized
externalReference:
type: string
description: Link to more information
example: ''
details:
type: array
description: Array of errors
items:
- type: string
example: Invalid email address
description: Error message
- type: object
example:
field: email
message: Invalid email address
description: Error message
example: []
example:
code: too_many_requests
message: Too many requests
externalReference:
details: []
'500':
description: We had a problem with our server. Try again later.
content:
application/json:
x-logErrorCode: 500
schema:
type: object
example:
code: not_authorized
message: Request not authorized
externalReference:
details: []
properties:
code:
type: string
description: Error code
example: not_authorized
enum:
- bad_request
- collection_not_found
- conflict
- duplicate_collection
- duplicate_user_email
- ecommerce_not_enabled
- forbidden
- forms_require_republish
- incompatible_webhook_filter
- internal_error
- invalid_auth_version
- invalid_credentials
- invalid_domain
- invalid_user_email
- item_not_found
- missing_scopes
- no_domains
- not_authorized
- not_enterprise_plan_site
- not_enterprise_plan_workspace
- order_not_found
- resource_not_found
- too_many_requests
- unsupported_version
- unsupported_webhook_trigger_type
- user_limit_reached
- user_not_found
- users_not_enabled
- validation_error
message:
type: string
description: Error message
example: Request not authorized
externalReference:
type: string
description: Link to more information
example: ''
details:
type: array
description: Array of errors
items:
- type: string
example: Invalid email address
description: Error message
- type: object
example:
field: email
message: Invalid email address
description: Error message
example: []
example:
code: internal_error
message: An Internal Error occurred
externalReference:
details: []
post:
x-fern-sdk-group-name: webhooks
x-fern-sdk-method-name: create
operationId: create-webhook
summary: Webflow Create Webhook
description: 'Create a new Webhook.
Limit of 75 registrations per `triggerType`, per site.
<Note>Access to this endpoint requires a bearer token from a [Data Client App](/data/docs/getting-started-data-clients).</Note>
Required scope | `sites:write`
'
tags:
- Webhooks
parameters:
- name: site_id
in: path
description: Unique identifier for a Site
example: 580e63e98c9a982ac9b8b741
required: true
schema:
type: string
format: objectid
default:
requestBody:
description: The Webhook registration object
required: true
content:
application/json:
schema:
example:
id: 582266e0cd48de0f0e3c6d8b
triggerType: form_submission
siteId: 562ac0395358780a1f5e6fbd
workspaceId: 4f4e46fd476ea8c507000001
createdOn: '2022-11-08T23:59:28.572Z'
lastTriggered: '2023-02-08T23:59:28.572Z'
filter:
url: https://webhook.site/7f7f7f7f-7f7f-7f7f-7f7f-7f7f7f7f7f7f
properties:
id:
readOnly: true
type: string
format: objectid
example: 57ca0a9e418c504a6e1acbb6
description: Unique identifier for the Webhook registration
triggerType:
type: string
example: form_submission
description: 'The type of event that triggered the request. See the the documentation for details on [supported events](/data/reference/all-events).
'
enum:
- form_submission
- site_publish
- page_created
- page_metadata_updated
- page_deleted
- ecomm_new_order
- ecomm_order_changed
- ecomm_inventory_changed
- collection_item_created
- collection_item_changed
- collection_item_deleted
- collection_item_published
- collection_item_unpublished
- comment_created
url:
type: string
example: https://example.com/webhook
description: URL to send the Webhook payload to
workspaceId:
readOnly: true
type: string
format: objectid
example: 580e63e98c9a982ac9b8b741
description: Unique identifier for the Workspace the Webhook is registered in
siteId:
readOnly: true
type: string
format: objectid
example: 562ac0395358780a1f5e6fbd
description: Unique identifier for the Site the Webhook is registered in
filter:
description: Only supported for the `form_submission` trigger type. Filter for the form you want Webhooks to be sent for.
type: object
properties:
name:
type: string
description: The name of the form you'd like to recieve notifications for.
example: My Form
lastTriggered:
readOnly: true
type: string
format: date-time
example: '2016-09-06T21:12:22.148Z'
description: Date the Webhook instance was last triggered
createdOn:
readOnly: true
type: string
format: date-time
example: '2016-09-02T23:26:22.241Z'
description: Date the Webhook registration was created
responses:
'201':
description: Request was successful
content:
application/json:
schema:
example:
id: 582266e0cd48de0f0e3c6d8b
triggerType: form_submission
siteId: 562ac0395358780a1f5e6fbd
workspaceId: 4f4e46fd476ea8c507000001
createdOn: '2022-11-08T23:59:28.572Z'
lastTriggered: '2023-02-08T23:59:28.572Z'
filter:
url: https://webhook.site/7f7f7f7f-7f7f-7f7f-7f7f-7f7f7f7f7f7f
properties:
id:
readOnly: true
type: string
format: objectid
example: 57ca0a9e418c504a6e1acbb6
description: Unique identifier for the Webhook registration
triggerType:
type: string
example: form_submission
description: 'The type of event that triggered the request. See the the documentation for details on [supported events](/data/reference/all-events).
'
enum:
- form_submission
- site_publish
- page_created
- page_metadata_updated
- page_deleted
- ecomm_new_order
- ecomm_order_changed
- ecomm_inventory_changed
- collection_item_created
- collection_item_changed
- collection_item_deleted
- collection_item_published
- collection_item_unpublished
- comment_created
url:
type: string
example: https://example.com/webhook
description: URL to send the Webhook payload to
workspaceId:
readOnly: true
type: string
format: objectid
example: 580e63e98c9a982ac9b8b741
description: Unique identifier for the Workspace the Webhook is registered in
siteId:
readOnly: true
type: string
format: objectid
example: 562ac0395358780a1f5e6fbd
description: Unique identifier for the Site the Webhook is registered in
filter:
description: Only supported for the `form_submission` trigger type. Filter for the form you want Webhooks to be sent for.
type: object
properties:
name:
type: string
description: The name of the form you'd like to recieve notifications for.
example: My Form
lastTriggered:
readOnly: true
type: string
format: date-time
example: '2016-09-06T21:12:22.148Z'
description: Date the Webhook instance was last triggered
createdOn:
readOnly: true
type: string
format: date-time
example: '2016-09-02T23:26:22.241Z'
description: Date the Webhook registration was created
'400':
description: Request body was incorrectly formatted.
x-logErrorCode: 400
content:
application/json:
schema:
type: object
example:
code: not_authorized
message: Request not authorized
externalReference:
details: []
properties:
code:
type: string
description: Error code
example: not_authorized
enum:
- bad_request
- collection_not_found
- conflict
- duplicate_collection
- duplicate_user_email
- ecommerce_not_enabled
- forbidden
- forms_require_republish
- incompatible_webhook_filter
- internal_error
- invalid_auth_version
- invalid_credentials
- invalid_domain
- invalid_user_email
- item_not_found
- missing_scopes
- no_domains
- not_authorized
- not_enterprise_plan_site
- not_enterprise_plan_workspace
- order_not_found
- resource_not_found
- too_many_requests
- unsupported_version
- unsupported_webhook_trigger_type
- user_limit_reached
- user_not_found
- users_not_enabled
- validation_error
message:
type: string
description: Error message
example: Request not authorized
externalReference:
type: string
description: Link to more information
example: ''
details:
type: array
description: Array of errors
items:
- type: string
example: Invalid email address
description: Error message
- type:
# --- truncated at 32 KB (79 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/webflow/refs/heads/main/openapi/webflow-webhooks-openapi.yml