In this step, you’ll configure the Surface Workflow Builder to send a webhook request to Customer.io whenever a lead submits your form—whether they complete it or drop off partway through.Documentation Index
Fetch the complete documentation index at: https://docs.withsurface.com/llms.txt
Use this file to discover all available pages before exploring further.
Open the Workflow Builder
- In the Surface app, open your form
- Go to the Workflows section
- Click Create Workflow (or edit an existing workflow)
Choose Your Triggers

| Trigger | When it fires | Customer.io webhook URL |
|---|---|---|
| Form Submission | When the lead completes the entire form | URL from your completed webhook campaign |
| Dropped Off | When the lead abandons the form mid-way | URL from your partial webhook campaign |
submission_type in the payload.
Add the HTTP Request Action

- Click the + button to add a new node
- Select HTTP Request from the actions menu
-
In the configuration panel, set:
- Request URL:
- Dropped Off path → Paste the webhook URL from your partial Customer.io campaign
- Form Submission path → Paste the webhook URL from your completed Customer.io campaign
- HTTP Method:
POST - Body: Same payload for both paths (see below)
- Request URL:
Build the Webhook Payload
Use the@ symbol in the workflow builder to insert form variables. Your payload should include:
- Identifier (email) — required for Customer.io to create/update the person
- Any other fields you want to pass (name, form ID, etc.)
Activate the Workflow
- Save the workflow
- Activate it so it runs when leads submit your form
- Test with a sample submission and verify the webhook reaches Customer.io
Verify in Customer.io
After a test submission:- Check Customer.io Campaigns → your webhook campaigns → Logs to see if the webhook was received
- Check People to confirm the lead was created or updated
- Check that the correct event was recorded (
partialFormFilledfor Dropped Off,formCompletedfor Form Submission)
