Skip to main content
Setup guide
Google AdsWebflow

Google Ads lead conversions from Webflow forms

On most Webflow sites the conversion is a form: a quote request, a demo booking, a newsletter sign-up. Google Ads can only optimise for those if it hears about each submission and can tie it to the ad click that brought the visitor. A Google tag does that in the browser. This guide covers a second route, where SignalBridge uploads the lead from its servers as an offline click conversion.

A lead is harder to count than a sale. It has no order number, the same person can submit twice, and nothing on the page tells you whether it was any good. So this guide spends its time on the parts that decide whether the uploaded numbers are trustworthy: how a submission gets an identity, which forms count and when a lead is dropped.

By Kiril Kostov, Founder of SignalBridge. Checked against the product and the sources below on .

Install
Site settings, Custom code, Head code, then publish
Needs
Webflow custom code, which requires an active Site plan or a qualifying Workspace plan
Counts as a lead
A form with an email field, recorded when it is submitted
Click IDs
gclid, gbraid and wbraid, kept for up to 30 days. Safari caps JavaScript cookies at seven days
Lead ID
A stable submission ID that SignalBridge turns into the order ID Google receives
Conversion action
Offline (import), category Submit lead form, count One
Value
None by default. Add one in Google Ads or with sb_track
Not sent
Whether a lead later became a customer

How a submission gets an identity

Google uses the order ID of an upload to recognise the same conversion if it arrives twice, for example after a retry. A purchase brings its own number. A form submission does not, so SignalBridge creates one. When the visitor submits, the script gives that submission a stable ID, or uses the lead, application or submission ID your form supplies. The server turns it into an opaque ID before it goes to Google, so no raw identifier is exposed in Google Ads.

This is why a retried upload does not count a lead twice, and why two real submissions an hour apart are not merged by accident: each has its own ID. The one exception is the hourly rule below, which stops a second Lead from the same browser from being sent at all.

In Google Ads, choose the counting setting One for this action. If a person clicks an ad once and submits two forms, Google then credits one lead for that click, which is the number you want when you judge cost per lead.

From ad click to uploaded lead

This is the path a lead takes, and the point on it where each kind of loss happens.

StepWhat happensWhat can go wrong
The visitor lands from a Google adThe script stores gclid, gbraid or wbraid from the URL in a first-party cookie and session storageA redirect that drops the query string removes the click ID before the script sees it
The visitor browses and comes backThe stored click ID is kept for up to 30 daysSafari limits cookies written by JavaScript to seven days, so a lead that arrives after a longer gap loses it
The visitor submits a formThe email, phone and name are read from the form, the submission gets its ID and a Lead is sentA form with no email field is not treated as a lead and nothing is sent
SignalBridge uploads itThe upload carries the action, time, click ID, the submission-based order ID and consent signalsGoogle accepts a brand-new action slowly, and SignalBridge retries temporary rejections automatically
The same browser submits again within the hourThe second Lead is droppedA visitor who fills in two forms in one session counts once

Which submissions upload

Google needs something to match a lead to. SignalBridge checks this for every submission.

SituationWhat happens
Arrived from a Google ad and the click ID is still storedUploaded with the click ID. The lead's hashed email and phone ride along only once consent has been explicitly granted.
No click ID, but a usable email or phone and consent grantedUploaded using the hashed identifiers, so Google can match the lead to a signed-in user.
Organic, direct, referral or another ad networkNot uploaded, because there is nothing to match.
The visitor declined marketing cookiesNot uploaded. The click ID and identifiers are cleared.
Form inside an iframe, such as an embedded booking or survey toolNot seen. The browser treats the iframe as a separate page.

Value, GA4 and Webflow Ecommerce

A form has no price, so the Lead goes up without a value. In Google Ads you can leave the action without a value, or give it a default one that reflects what a lead is worth to you. If you need a different amount for a particular form, send the event yourself with sb_track and a value.

If a Google tag is on the page, SignalBridge also calls it in the browser with an event named Lead. GA4 lists that as a custom event. By itself it does not create a Google Ads conversion. If you import GA4 key events into Google Ads, do not also import this one as a goal, or the lead will be counted by both routes.

On a Webflow Ecommerce store the order confirmation page, /order-confirmation, is recognised and the purchase is uploaded to Google Ads as well, as long as you map Purchase to an offline action of its own. The value is copied from the Meta Pixel call that Webflow makes, or from the Google tag when there is no Meta Pixel. A page that runs both a Meta Pixel and a TikTok Pixel sends each pixel's events only to its own platform, so no Google Ads upload is created from them.

Set it up

You need permission to edit Site settings and publish the site, and admin access to the Google Ads account.

  1. Add the snippet and publish

    Copy the Webflow snippet from your pixel in SignalBridge, paste it into Site settings, Custom code, Head code, save, and publish to every domain you serve the site from. Custom code shows in preview, but only goes live once you publish.

  2. Check that auto-tagging is on

    In Google Ads, under account settings, confirm that auto-tagging is enabled. Without it the landing page URL carries no gclid.

  3. Create an offline lead action

    In Goals, create a conversion action that imports data and tracks conversions from clicks. Choose the Submit lead form category, count One, and either no value or a default value.

  4. Connect Google Ads in SignalBridge

    Open the pixel's settings, choose Google Ads, sign in with the Google account that has access and select the account, adding the manager ID if you reach it through a manager account.

  5. Map Lead to the action

    Select the Lead event and enter the Conversion Action ID, which is the number after ctId= in the address when the action is open in Google Ads. Map Purchase to a separate offline action if you sell on Webflow.

  6. Accept the customer data terms if asked

    If Google reports that the enhanced conversions customer data terms are not accepted, accept them in the Google Ads account and retry the failed deliveries.

  7. Wire your cookie banner

    Call sb_consent(true) when a visitor accepts marketing cookies and sb_consent(false) when they refuse. Webflow's own banner recipe only talks to Meta, so this call has to be added. Set window.SB_REQUIRE_MARKETING_CONSENT = true above the snippet if a choice must come first.

Test with a real ad click

  1. Click one of your own ads

    In a browser that accepts marketing cookies, click a live ad and confirm that the landing URL contains a gclid.

  2. Submit a form with a test email

    On that same visit, fill in a form that has an email field and submit it. In the SignalBridge event stream a Lead should appear with a Google click ID and Google Ads as a delivered destination.

  3. Submit again

    Submit another form straight away. No second Lead should be sent within the hour, which confirms the dedupe is working.

  4. Read the action in Google Ads

    Open the conversion action and read its status and diagnostics. Uploads take several hours to show, and the first upload to a new action can take longer.

Problems that are specific to Webflow

  • Google Ads shows far fewer leads than the Webflow form list

    Only leads that came from a Google ad click, or carry a consented email or phone, are uploaded. Forms without an email field, a second form within the hour and iframe forms are not sent.

  • A lead is uploaded, but Webflow shows no entry

    The Lead is recorded when the visitor submits, before Webflow accepts the entry. A failed spam check or a rejected submission can therefore leave an upload behind.

  • Leads from iPhones disappear after a week

    Safari caps the cookie holding the click ID at seven days. Those leads can still upload by hashed email or phone when consent was granted.

  • The action never receives anything

    Check that you published after saving the head code, that the form was submitted on a page where the script loaded and that the click ID was present on the landing URL.

  • Google rejects uploads as an invalid action type

    The Lead event is mapped to a website action. Create an offline (import) action and map that.

  • Embedded forms are not tracked

    A form in an iframe is a separate page to the browser. Call sb_track from the embed's success callback instead.

What this does not do

  • It reports the submission, not whether the lead became a customer. Later outcomes need a separate import in Google Ads, keyed by the click ID.
  • There is no order feed from Webflow, so refunds, cancellations and orders created in the dashboard are not sent.
  • Webflow notes that on an Ecommerce site, scripts you add are outside its control and can create PCI DSS obligations of your own.
  • Webflow support does not help with custom code, so a script conflict is for you or your developer to resolve.
  • Google decides attribution, so its counts will never match your form list exactly.

Questions about this setup

Do I need a Google tag on my Webflow site?

Not for these uploads. A Google tag is still useful for GA4 and remarketing, so keep it if you use them.

Does it work if my form redirects to a thank-you page?

Yes. The Lead is sent when the form is submitted, before the redirect, so it does not depend on the thank-you page loading.

Why does Google count one lead when two people submitted?

It counts one per ad click when the action is set to One. Two visitors would have two clicks and two conversions, and one visitor who submits twice has one.

Can I give leads a value?

Yes. Set a default value on the action in Google Ads, or send the event yourself with sb_track and the value you want.

Does it work with Performance Max and Search campaigns?

The upload does not depend on the campaign type. It depends on the lead carrying a Google click ID or a consented email or phone number.

Do I need a paid Webflow plan?

Yes. According to Webflow, custom code is available with an active Site plan or with a Core, Growth, Agency or Freelancer Workspace.

Sources

The vendor documents this guide relies on. Statements about SignalBridge come from the product itself.

Try this setup with SignalBridge

Every plan starts with a 14-day free trial. Connect it, send a test conversion and see the result before you decide.