Webflow Webhooks API

Webhook registration and management endpoints for receiving real-time event notifications from Webflow sites including form submissions, ecommerce events, and CMS changes.

OpenAPI Specification

webflow-webhooks-openapi.yml Raw ↑
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-api-and-documentation-webflow/refs/heads/main/openapi/webflow-webhooks-openapi.yml