arazzo: 1.0.1
info:
title: Webflow Register Webhook
summary: Resolve a site, register a webhook for an event, and confirm the registration.
description: >-
Wires a Webflow site up to an external listener. The workflow resolves the
site to confirm it exists, registers a webhook for the requested trigger
type pointing at the supplied URL, and reads the webhook back to confirm the
registration persisted. Each step spells out its request inline so the flow
can be read and executed without opening the underlying OpenAPI description.
version: 1.0.0
sourceDescriptions:
- name: sitesApi
url: ../openapi/webflow-api-and-documentation-webflow-sites-api-openapi.yml
type: openapi
- name: webhooksApi
url: ../openapi/webflow-api-and-documentation-webflow-webhooks-api-openapi.yml
type: openapi
workflows:
- workflowId: register-webhook
summary: Register a webhook on a site and confirm it.
description: >-
Confirms the site exists, creates a webhook for the supplied trigger type
and destination URL, and retrieves the created webhook to verify it.
inputs:
type: object
required:
- accessToken
- siteId
- triggerType
- destinationUrl
properties:
accessToken:
type: string
description: Webflow OAuth bearer token with sites:read and sites:write scopes.
siteId:
type: string
description: Unique identifier for the Site to register the webhook on.
triggerType:
type: string
description: Event that triggers the webhook (e.g. form_submission, site_publish).
destinationUrl:
type: string
description: URL the webhook payload is sent to.
steps:
- stepId: getSite
description: Resolve the site to confirm it exists before registering a webhook.
operationId: get-site
parameters:
- name: Authorization
in: header
value: "Bearer $inputs.accessToken"
- name: site_id
in: path
value: $inputs.siteId
successCriteria:
- condition: $statusCode == 200
outputs:
siteId: $response.body#/id
- stepId: createWebhook
description: Register a webhook for the supplied trigger type and destination URL.
operationId: create-webhook
parameters:
- name: Authorization
in: header
value: "Bearer $inputs.accessToken"
- name: site_id
in: path
value: $inputs.siteId
requestBody:
contentType: application/json
payload:
triggerType: $inputs.triggerType
url: $inputs.destinationUrl
successCriteria:
- condition: $statusCode == 201
outputs:
webhookId: $response.body#/id
- stepId: confirmWebhook
description: Retrieve the created webhook to confirm the registration persisted.
operationId: get-webhook
parameters:
- name: Authorization
in: header
value: "Bearer $inputs.accessToken"
- name: webhook_id
in: path
value: $steps.createWebhook.outputs.webhookId
successCriteria:
- condition: $statusCode == 200
outputs:
webhookId: $response.body#/id
triggerType: $response.body#/triggerType
outputs:
webhookId: $steps.createWebhook.outputs.webhookId
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.