Send Google Ads click IDs to your CRM
Sign Customiser stores the Google Ads click IDs (gclid, gbraid, wbraid) of each form submission. Read them from the quotes API, a webhook, merchant emails or JavaScript events, then report offline conversions back to Google Ads.
Last updated:
When someone clicks one of your Google Ads and auto-tagging is on, Google adds a click ID to the URL. When the customer reaches a page that shows your customiser, Sign Customiser picks that up, keeps it with the customer’s session, and includes it when the customer submits a quote request or custom design form.
That matters because it closes the gap between ad click and sale. Instead of losing attribution after the customer fills in a form, you can store the click ID in your CRM, keep it attached to the lead, and send it back to Google Ads when that lead becomes a paying customer.
Tip: Sign Customiser also captures UTM parameters (such as utm_source, utm_medium, and utm_campaign) for broader campaign attribution across all marketing channels. See Track marketing campaigns with UTM parameters for the full guide.
How it works
-
A customer clicks a Google Ad and lands on a page that shows your customiser.
-
When the customiser loads, Sign Customiser captures the click ID automatically from the URL, cookies, or session storage.
-
The customer submits a quote form or custom design form.
-
Sign Customiser stores the click ID with the form submission and sends it with the submission data.
-
Your CRM stores that click ID against the lead or deal.
-
When the customer converts, you send that conversion back to Google Ads.
You do not need to configure anything. When the customiser loads on a page, Sign Customiser captures any click ID that is present in the URL, cookies, or session storage.
Choose how to receive click IDs
You can receive the click ID in three ways:
-
The quotes API. Read stored submissions when you need them. Use this for new integrations. It also returns earlier submissions that Sign Customiser can attribute to your Store.
-
A webhook. Sign Customiser sends each submission to your server as it happens. The
form:submittedwebhook is deprecated, but it still works. -
Frontend JavaScript events. On an inline embed, scripts on your storefront receive the click ID in the browser.
Read click IDs from the quotes API
-
Open API Tokens. In the Universal admin, go to Integrate and click API Tokens. In the Shopify admin, open Sign Customiser, go to Tools & Settings, and click API Tokens.
-
Click Create API key.
-
Enter a name for the key, for example “CRM sync”.
-
Under Access, clear every checkbox except Read quotes, so that only Read quotes is ticked. All permissions are ticked when the page opens.

The picture shows the Access card with the Quotes group. Tick only Read quotes.
-
Click Create key. Copy the key and keep it safe. Sign Customiser shows the key only once.
-
Send a
GETrequest to/api/v3/quotes. Send the key as a bearer token. The request needs thequotes:readscope. Read quotes gives the key this scope. -
In the response, read the
ad_click_idsobject of each quote indata, for examplead_click_ids.gclid. -
Store the values against the contact, lead, or opportunity in your CRM.
-
When that lead becomes a sale, send the stored click ID back to Google Ads as an offline conversion.
The list is paginated. Follow links.next while pagination.has_more is true. The list does not include submissions from forms that were deleted before Sign Customiser began to record form deletions. For all filters and fields, see the quotes API reference.
Receive click IDs with the form:submitted webhook (deprecated)
Note: The form:submitted webhook was deprecated on 24 August 2026. It still works. It keeps firing on every submission with the same payload, and it has no removal date. For a new integration, use the quotes API.
A webhook sends the click ID to your server or CRM when the customer submits a form.
-
Set up a webhook in Sign Customiser by following our Subscribe to webhooks guide.
-
For the topic, choose Form Submitted (deprecated). Sign Customiser saves this topic as
form:submitted.
-
Point that webhook at your server, CRM middleware, or automation platform (for example Zapier).
-
Read the
form_submission.ad_click_idsfield from the payload. -
Store the values against the contact, lead, or opportunity in your CRM.
-
When that lead becomes a sale, send the stored click ID back to Google Ads as an offline conversion.
If you already use Zapier or your own backend to process form submissions, the webhook fits into the workflow that you already have.
What fields you will receive
Sign Customiser can send up to three Google Ads click ID fields:
-
gclid: the Google Click Identifier. Google adds it to the URL when auto-tagging is on. This is the one most people are looking for. -
gbraid: used when a customer clicks an ad on the web and is sent to an iOS app. -
wbraid: used when a customer clicks an ad in an iOS app and reaches your web page.
If more than one is present, store all of them.
The ad_click_ids object can also contain fbclid, the Facebook (Meta) click ID, when the page URL has an fbclid query parameter. See Tracking events for ad conversions for the full list.
Example payloads
When a form submission includes ad tracking data, the webhook payload looks like this:
{ "form_submission": { "submission_number": 42, "type": "custom_form_submission", "ad_click_ids": { "gclid": "CjwKCAjw7p6aBhAoBhAAEiwA...", "gbraid": "BRAID_456", "wbraid": "WBRAID_789" }, "utm_params": { "utm_source": "google", "utm_medium": "cpc", "utm_campaign": "spring_sale" }, "form": { ... }, "responses": [ ... ] }}Your developer should send this field with Google Ads offline conversions, because Google recommends including the GCLID where possible:
form_submission.ad_click_ids.gclidEach quote in the quotes API response has the same data:
{ "data": [ { "object": "quote", "id": 8123, "type": "quote", "ad_click_ids": { "gclid": "CjwKCAjw7p6aBhAoBhAAEiwA..." }, "utm_params": { "utm_source": "google", "utm_medium": "cpc" }, "responses": [ ... ] } ]}In the quotes API response, the field is data[].ad_click_ids.gclid. A submission with no click IDs has an empty ad_click_ids object.
Where the click ID is stored
The click ID goes through three stages:
-
While the customer is browsing. Sign Customiser keeps the click ID in the browser session storage so it survives the journey from ad click to form submission. The storage key is
signCustomiser:adClickIds. -
When the form is submitted. Sign Customiser stores the click ID with the quote request or custom design submission. It also passes the click ID into your webhook payloads, merchant notification emails, and JavaScript tracking events.
-
After the submission. For each submission that Sign Customiser can attribute to your Store, you can read the stored click ID with
GET /api/v3/quotes. If a Shopify data erasure request removes a submission’s data, its click IDs are removed too. A submission that Sign Customiser cannot attribute to your Store is not returned. Use an API key with thequotes:readscope. The steps are in the section “Read click IDs from the quotes API”.
Click IDs in form submission emails
When ad click IDs are available, they also appear in the default merchant notification email under an Ad Tracking section. If you replaced the default email with your own template, the template must include the click IDs for them to appear. Sign Customiser sends this email for a quote request or a custom design form submission. It is not an order email. Use it for manual matching if you do not have an automated CRM integration yet.
The email includes click IDs only when the form sends notification emails. A warning icon next to a form in the Forms list means that the form’s emails are off, because its recipients were inactive. To start the emails again, change the Receiver Email on the form. If the emails still do not send, contact Sign Customiser support.
Frontend JavaScript events
If you already have custom scripts running on your storefront, the same click ID data is available in these frontend events on an inline embed, which is the default for Shopify:
-
signCustomiserProductAddedToCart -
signCustomiserFormSubmitted -
signCustomiserQuoteSubmitted
Access the data at event.detail.adClickIds:
document.addEventListener("signCustomiserFormSubmitted", function(e) { var gclid = e.detail.adClickIds && e.detail.adClickIds.gclid; if (gclid) { // Send to your CRM, analytics, or Google Ads console.log("Captured GCLID:", gclid); }});The signCustomiserProductAddedToCart event also fires for Shopify embeds with Use iframe (experimental) turned on, for the Sign Customiser Modal block, and for generic embeds that use the custom driver. It does not fire for WooCommerce or Wix embeds.
Iframe embeds (WooCommerce, Wix, the generic embed, the Shopify Sign Customiser Modal block, and Shopify with Use iframe (experimental) turned on) do not pass the form and quote events to your storefront scripts. For those embeds, use the quotes API or a webhook.
Sign Customiser does not send the form or quote events for Starter, Standard, or Pro plans.
For more on frontend events, see our Tracking events for ad conversions guide.
Quotes API, webhooks or frontend events
Use the quotes API when you want to store the click ID in your backend or CRM. Use it for new integrations. It does not depend on browser-side JavaScript. You can also read submissions again if your integration missed them.
Use a webhook if you already have one. It still works and sends each submission as it happens.
Use frontend events on an inline embed when you want to trigger browser-based pixels, fire a Google Ads conversion tag on the page, or pass data to a client-side analytics tool.
If your goal is CRM storage and offline conversion uploads to Google Ads, start with the quotes API.
Common questions
Do I need to change anything in my store to capture click IDs?
No. When the customiser loads on a page, Sign Customiser captures a click ID that is present in the URL, cookies, or session storage. There is nothing to configure.
Will I always get a gclid?
Not always. A submission has a click ID only when Sign Customiser captured one. You can receive gclid, gbraid, wbraid, or none of them. Sign Customiser looks for a click ID in the URL, in the browser session storage, and in cookies whose names end in _aw (for example _gcl_aw). If none of these holds a click ID, there is no click ID to send.
Can I get click IDs from submissions that customers made before I set this up?
Partly. Sign Customiser stores the click ID with each submission from the time it began to store click IDs, so older submissions have none. Read the earlier submissions that have a click ID, and that Sign Customiser can attribute to your Store, with GET /api/v3/quotes.
Can I see the click ID in the form submission email?
Yes, when the form sends notification emails. If click IDs are available, they appear in the default merchant notification email under the Ad Tracking section.
Can Sign Customiser send the offline conversion to Google Ads for me?
No. Sign Customiser captures and passes the click ID through to you. Your CRM, backend, or automation workflow needs to store that value and send the final offline conversion back to Google Ads.
Does this work when the customiser is embedded in an iframe?
Yes. The embed code reads the click ID on your page and passes it to the customiser inside the iframe. This works for the Shopify, WooCommerce, Wix, and generic embeds.