# Tracking events for ad conversions

A custom JavaScript event is fired every time a form submission is sent and when a customer adds a product to cart. You can use these events to track Google Ads and Facebook conversions, send data to your CRM, or trigger any custom scripts on your storefront. These events are available only for stores subscribed to one of our new plans or development plans. Legacy plans cannot use this feature.

- Source URL: https://www.signcustomiser.com/help/faqs/tracking-events-for-ad-conversions/
- Markdown URL: https://www.signcustomiser.com/help/faqs/tracking-events-for-ad-conversions.md
- Category: FAQs
- Last updated: 2026-04-15

## Article

A custom JavaScript event is fired every time a form submission is sent and when a customer adds a product to cart. You can use these events to track Google Ads and Facebook conversions, send data to your CRM, or trigger any custom scripts on your storefront.

<div class="intercom-interblocks-callout" style="background-color: #feedaf80; border-color: #fbc91633;"><p class="no-margin">These events are available only for stores subscribed to one of our new plans or development plans. Legacy plans cannot use this feature.</p></div>

## List of events

-   Add-to-cart events use **signCustomiserProductAddedToCart**

-   Custom design form submission events use **signCustomiserFormSubmitted**

-   Quote form submission events use **signCustomiserQuoteSubmitted**

## How to listen to these events

Add this JavaScript snippet to your storefront theme:

```
document.addEventListener("signCustomiserProductAddedToCart", function(e) {  console.log(e.detail);}, false);
```

## Add-to-cart event detail

```
{  customiserId: "25",  cart: [ ... ],  domain: "your-store.myshopify.com",  adClickIds: {    gclid: "CjwKCAjw7p6aBhAoBhAAEiwA..."  },  utmParams: {    utm_source: "google",    utm_medium: "cpc",    utm_campaign: "spring_sale"  }}
```

## Form submission event detail

```
{  customiserId: "25",  formId: 1241,  data: [    {      fieldId: "abc123",      label: "First name",      value: "Jane"    }  ],  domain: "your-store.myshopify.com",  adClickIds: {    gclid: "CjwKCAjw7p6aBhAoBhAAEiwA..."  },  utmParams: {    utm_source: "google",    utm_medium: "cpc",    utm_campaign: "spring_sale"  }}
```

The `formId` identifies which form was submitted. Each item in the `data` array includes a `fieldId` that you can use to map fields to your CRM instead of matching by label text.

## Google Ads click ID tracking

All three events now include an `adClickIds` object when a customer arrived via a Google Ad. This object can contain:

-   `gclid` — the standard Google Ads click identifier

-   `gbraid` — used in mobile and privacy-restricted scenarios

-   `wbraid` — used for cross-device and cookie-less attribution

The field will be `null` if the customer did not arrive via a Google Ad.

Here is an example of how you can capture the click ID and use it for conversion tracking:

```css
document.addEventListener("signCustomiserProductAddedToCart", function(e) {  var gclid = e.detail.adClickIds && e.detail.adClickIds.gclid;  if (gclid) {    // Example: send to Google Ads as a conversion    gtag("event", "conversion", {      send_to: "AW-XXXXXXXXX/XXXXXXX",      transaction_id: gclid    });  }}, false);
```

If you want to send click IDs to your CRM for offline conversion tracking, see our [Send Google Ads click IDs to your CRM](../../faqs/14190105-send-google-ads-click-ids-to-your-crm/) guide for the full webhook-based workflow.

## UTM parameter tracking

All three events include a `utmParams` object when a customer arrived via a URL containing UTM parameters. This covers traffic from Google Ads, Facebook Ads, email campaigns, social media links — any source that uses UTM tags.

The object can contain:

-   `utm_source` — where the traffic came from (e.g. google, facebook, newsletter)

-   `utm_medium` — the marketing medium (e.g. cpc, email, social)

-   `utm_campaign` — the campaign name

-   `utm_content` — used to differentiate ad variations

-   `utm_term` — the search keyword (for paid search)

The field will be `null` if the customer's URL had no UTM parameters.

Here is an example of capturing UTM data and pushing it to a dataLayer for Google Tag Manager:

```css
document.addEventListener("signCustomiserFormSubmitted", function(e) {  var utm = e.detail.utmParams;  if (utm) {    window.dataLayer = window.dataLayer || [];    window.dataLayer.push({      event: "sign_form_submitted",      utm_source: utm.utm_source,      utm_medium: utm.utm_medium,      utm_campaign: utm.utm_campaign    });  }}, false);
```

For the full webhook-based workflow, see our [Track marketing campaigns with UTM parameters](../../faqs/14631311-track-marketing-campaigns-with-utm-parameters/) guide.
