Integrations > Webhooks
Webhooks
Webhooks send lead data from SuperFunnel to your custom backend, CRM, or Google Sheets in real-time.
Overview
Webhooks send data from SuperFunnel to wherever you need it. By default, data is sent as a JSON payload via POST requests, but you can customize the method (GET, POST, etc.), content type (JSON, Form Data, URL Encoded), and apply delivery filters to optimize performance.
For example, a guide is provided on using webhooks in Google Sheets. However, this data could as easily be shared with a custom backend, CRM, Zapier, or any other system that can receive webhooks.
When setting up webhooks, it's helpful to understand how SuperFunnel fields are structured so you can correctly map and transform data. See Field Mapping for details on accessing form fields, computed fields, and query parameters in your webhook configuration.
Google Sheets & Docs connector alternative
SuperFunnel now has a Google Sheets & Docs connector that lets SuperAgent create and update sheets and docs directly. This is useful for building lead reports, automating lead data imports, or creating documents. Depending on your use case, the connector may be simpler than setting up a webhook — both approaches work and serve slightly different purposes.
Prerequisites
- A SuperFunnel account
- A publicly accessible endpoint URL to receive POST requests
- Access to server logs or your destination tool to verify incoming data
Reusing the same URL for multiple webhooks
You can create multiple webhooks that point to the same URL. This is useful when you want one endpoint to handle different event types.
Example: Create one webhook for "New Lead" and another for "Partial Lead", both pointing to the same URL. Your endpoint receives both payloads (distinguished by the type field), and you handle filtering and routing downstream. No need to set up separate URLs or mapping rules in SuperFunnel — just send all data and filter on your backend.
Step-by-Step Guide to Configuring a Webhook
Open the Integrations section
Click Settings > Integrations to access configuration options.

Add a new webhook
Click + Add > Webhook to begin setup.

Enter an event name
Give your webhook a descriptive name to identify the trigger (e.g., "New Lead Sync").

Choose an event field
Click the dropdown and select the event field associated with your form data.

Select event types
Click the event types dropdown to choose which events SuperFunnel will send to the webhook.


Choose the right event
When syncing form submissions to a backend or CRM, select New Lead (or Form Submit) instead of "All Events." This ensures your endpoint only receives data when a visitor successfully completes a form, rather than on every page view or button click.
Using partial leads? Filter on your endpoint
If you send Partial Lead or All Events, SuperFunnel posts a payload at every step, not just on completion. Use Advanced Settings to only send payloads that include a key field such as email or phone, so half-finished records don't pile up downstream.
Enter your endpoint URL
Paste your destination URL into the URL field. This is where the event data will be sent.

Optionally scope to a specific page
Select a specific page to limit events to that page only. Leave blank to receive events from all pages.

Save and activate
Click Create to save and activate your webhook.

Testing the Connection
After saving, verify the webhook is working before relying on it in production:
- Open one of your published pages.
- Fill out the form with test data (e.g.,
test.user@example.com). - Submit the form.
- Check your backend server logs, CRM, or Google Sheet.
- Confirm a POST request was received with the expected lead information.
Advanced Settings
HTTP Method
By default, webhooks send data via POST requests. You can change this in the webhook's advanced settings:
Open Advanced Settings
When editing or creating a webhook, click Advanced Settings (or a similar expand option).
Select GET or POST
Choose between GET (for simple requests via query parameters) or POST (for payloads in the request body). POST is the default and recommended for most use cases.
Save
Click Save to apply the change.
Content Type
By default, webhooks send data as JSON. You can customize the format in advanced settings:
JSON (default)
{
"type": "new_lead",
"data": { "form": { "email": { "value": "user@example.com" } } }
}Form Data
Sends data as application/x-www-form-urlencoded — useful for integrations that don't parse JSON natively.
URL Encoded Similar to Form Data, maintains the same field structure as JSON but uses a defined encoding format (removing spaces and special characters). This is useful for systems that expect traditional form submissions.
To change content type:
Open Advanced Settings
In the webhook editor, click Advanced Settings.
Select Content Type
Choose JSON, Form Data, or URL Encoded from the dropdown.
Save
Click Save to apply the change.
Object Mapping
By default, SuperFunnel sends its full payload and your destination system picks out the fields it needs. Object mapping flips that around: you define the exact structure your endpoint should receive, and SuperFunnel sends only that.
Use it when the receiving system expects a specific shape, such as a CRM that requires first_name and last_name at the top level rather than nested under form.
Each mapping row has four parts:
| Part | What it does |
|---|---|
| Key | The field name your endpoint will receive. |
| Value source | Where the value comes from: Parameter for a SuperFunnel field, Custom Value for one you define yourself, or Map to nest a group of fields as an object under this key. |
| Encoding | How the value is encoded before it is sent. Defaults to No encoding. |
| Type and Value | The data type (for example String) and the value or field path to send. Most rows also let you set a Default Value, sent if the source resolves to nothing. |
See it in practice
Webhook Examples walks through real mapping configurations for common cases, including hardcoded values, nested Map fields, timestamps, and default values.
Open Advanced Settings
In the webhook editor, click Advanced Settings and find Object Mapping.
Add your fields
Click Add Field and enter the Key your endpoint expects, then set the value. Form and computed fields use data.form.{field_name}.value, and URL parameters use data.queryParams.{parameter_name}. See Field Mapping for the full reference.
Choose an encoding
Leave the encoding dropdown on No encoding unless your destination requires otherwise. See the options below.
Save and test
Click Save, then send a test submission to confirm the receiving system parses the new structure correctly.
Encoding options
Each mapped field is encoded independently, so you can leave most fields untouched and encode only the one that needs it.
- No encoding (default) — the value is sent exactly as it appears in SuperFunnel. Use this unless your destination specifically asks for something else.
- Base64 — standard Base64. Useful when the receiving system expects an encoded value, or when the value contains characters that would otherwise break the payload.
- Base64 (URL-safe) — the same encoding using URL-safe characters, so the value survives being placed in a URL. Reach for this when the webhook method is GET or the content type is URL Encoded, since the value travels in the query string.
- JSON string — serializes the value into a quoted, escaped JSON string. Useful when the destination expects a stringified blob rather than a nested object.
Encoded values need decoding downstream
Anything other than No encoding means the receiving system has to decode the value before it can use it. If a field arrives as unreadable characters, check the encoding on that row first.
Object mapping replaces the default payload
Once you define mapping rules, the default payload is discarded entirely. Any field you don't map will not reach your endpoint, so include everything your destination needs.
Delivery Filters
Use delivery filters to prevent unnecessary webhook requests from incomplete or low-quality leads. This reduces traffic to your endpoint and keeps your downstream system clean.
Common filter scenarios:
- Filter out partial leads missing an email or phone number
- Only send leads where specific required fields are populated
- Skip events that don't meet your quality threshold
To set up delivery filters:
Open Advanced Settings
In the webhook editor, click Advanced Settings.
Add a Filter
Look for Delivery Filters or Conditions and click + Add Filter.
Define the condition
Select a field and set the condition (e.g., "Email is not empty" or "Phone is populated").
Save
Click Save. The webhook will now only fire when the filter condition is met.
Example: If you configure a filter for "Email must not be empty", the webhook will skip delivery for any partial leads that don't include an email address, reducing clutter in your CRM or backend system.
Troubleshooting
- No data received — Ensure your endpoint URL is publicly accessible and not blocked by a firewall.
- Incorrect format — Review the JSON payload structure sent by SuperFunnel to ensure your backend is parsing it correctly.
- Need help? — Contact support at
support@superfunnel.ai.
Developer Reference
If you're handling webhook deliveries in code, the Webhooks API reference covers the full payload schema for each event type, how to verify a request's signature, and how retries and delivery behave.
What's Next
Webhook Examples
Real object mapping examples for common fields, hardcoded values, and nested data.
Google Sheets
Send lead data directly to a Google Sheet using a webhook and Apps Script.
Troubleshooting
Diagnose common integration issues including broken webhooks and missing data.
Webhooks API Reference
Payload schemas, signature verification, and retry behavior for developers.