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. Select Integrations

Add a new webhook

Click + Add > Webhook to begin setup. Select Webhook Option

Enter an event name

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

Enter Event Name

Choose an event field

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

Choose Event Field

Select event types

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

Open Search Menu

Select All Events Option

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.

Access URL Input Field

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.

Open Page Search Menu

Save and activate

Click Create to save and activate your webhook.

Finalize Webhook Setup

Testing the Connection

After saving, verify the webhook is working before relying on it in production:

  1. Open one of your published pages.
  2. Fill out the form with test data (e.g., test.user@example.com).
  3. Submit the form.
  4. Check your backend server logs, CRM, or Google Sheet.
  5. 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:

PartWhat it does
KeyThe field name your endpoint will receive.
Value sourceWhere 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.
EncodingHow the value is encoded before it is sent. Defaults to No encoding.
Type and ValueThe 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