Webflow · Arazzo Workflow

Webflow Register a Form-Submission Webhook

Version 1.0.0

Resolve a site, confirm it has at least one form, then register a form_submission webhook.

1 workflow 3 source APIs 1 provider
View Spec View on GitHub CMSEcommerceNo-CodeWeb DevelopmentArazzoWorkflows

Provider

webflow

Workflows

register-form-webhook
Register a form_submission webhook on a site that has forms.
Lists sites, lists the forms on the chosen site, confirms at least one form exists, and registers a form_submission webhook pointing at the callback URL.
3 steps inputs: callbackUrl, siteId outputs: siteId, webhookId
1
listSites
list-sites
List accessible sites to resolve a target site id.
2
listForms
list-forms
List the forms on the resolved site and branch on whether any forms exist before registering a webhook.
3
registerWebhook
create-webhook
Register a webhook that fires on every form submission for the site, delivering the payload to the supplied callback URL.

Source API Descriptions

Arazzo Workflow Specification

webflow-register-form-webhook-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Webflow Register a Form-Submission Webhook
  summary: Resolve a site, confirm it has at least one form, then register a form_submission webhook.
  description: >-
    A webhook bootstrapping flow for form integrations. It resolves the target
    site, lists the site's forms, branches on whether any forms exist, and then
    registers a webhook that fires on every form submission to a supplied
    callback URL. Every 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-sites-openapi.yml
  type: openapi
- name: formsApi
  url: ../openapi/webflow-forms-openapi.yml
  type: openapi
- name: webhooksApi
  url: ../openapi/webflow-webhooks-openapi.yml
  type: openapi
workflows:
- workflowId: register-form-webhook
  summary: Register a form_submission webhook on a site that has forms.
  description: >-
    Lists sites, lists the forms on the chosen site, confirms at least one form
    exists, and registers a form_submission webhook pointing at the callback
    URL.
  inputs:
    type: object
    required:
    - callbackUrl
    properties:
      siteId:
        type: string
        description: Optional site id; when omitted the first accessible site is used.
      callbackUrl:
        type: string
        description: The HTTPS URL Webflow should POST form submissions to.
  steps:
  - stepId: listSites
    description: List accessible sites to resolve a target site id.
    operationId: list-sites
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      firstSiteId: $response.body#/sites/0/id
  - stepId: listForms
    description: >-
      List the forms on the resolved site and branch on whether any forms exist
      before registering a webhook.
    operationId: list-forms
    parameters:
    - name: site_id
      in: path
      value: $steps.listSites.outputs.firstSiteId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      firstFormId: $response.body#/forms/0/id
    onSuccess:
    - name: hasForms
      type: goto
      stepId: registerWebhook
      criteria:
      - context: $response.body
        condition: $.forms.length > 0
        type: jsonpath
    - name: noForms
      type: end
      criteria:
      - context: $response.body
        condition: $.forms.length == 0
        type: jsonpath
  - stepId: registerWebhook
    description: >-
      Register a webhook that fires on every form submission for the site,
      delivering the payload to the supplied callback URL.
    operationId: create-webhook
    parameters:
    - name: site_id
      in: path
      value: $steps.listSites.outputs.firstSiteId
    requestBody:
      contentType: application/json
      payload:
        triggerType: form_submission
        url: $inputs.callbackUrl
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      webhookId: $response.body#/id
      triggerType: $response.body#/triggerType
  outputs:
    siteId: $steps.listSites.outputs.firstSiteId
    webhookId: $steps.registerWebhook.outputs.webhookId