Frequently Asked Questions

Here are some frequently asked questions about the gtag extension for Launch.

What is the Google Tag (gtag)?

The Google Tag (formerly Google's Global Site Tag and also known as gtag.js) is a JavaScript tagging framework and API that allows you to send event data to Google Ads, Campaign Manager, Display & Video 360, Search Ads 360, and Google Analytics. This framework that allows a seamless integration between the Google products. It is important to note that gtag is not a tag manager, which might be confusing since the main gtag.js library is served from www.googletagmanager.com. But rest assured, we're not advocating for you to load a tag manager within a tag manager!

Do I need any other extensions?

Nope! There are a few other gtag extensions that Adobe has created, but you only need to install the one from Acronym in order to install all of the products on your site. Adding other gtag extensions may cause unexpected results, and is not recommended.

Who created this extension?

The analytics team at Acronym, a digital marketing agency and Adobe partner. We're based of out the Empire State Building in New York City, with offices around the world. We specialize in Analytics (including building custom private extensions!), Usability/UX Testing, Paid Search, Paid Social, Programmatic, and Organic Search (SEO). Please contact us to use for more information about who we are or how we can help you succeed.

Does it support Google Analytics 4 (GA4)?

Yes! The extension supports GA4. Simply use the account ID starting with G- when adding a new account.

How do I track my e-commerce data?

The gtag.js library passes e-commerce data within custom data fields. Since Launch is data layer agnostic (meaning it does not have a set data layer format), it is ultimately up to you to create data element(s) that provide the data for the e-commerce fields.

You can find all of the relevant information on Google's Enhanced Ecommerce documentation. For reference though, you can pass the following custom data fields:

Custom Data Field

Format

Description

items

An Array of Objects:

[ { }, { }, { } ]

Each object should contain various properties

about the item / product on the page

promotions

An array of Objects:

[ { }, { }, { } ]

Each object should contain the name and ID

of the promotions from the page / event

coupon

String

The name of the coupon code entered

value

Number

This can be mapped within events natively,

but for page views this should be the total value of the items / products.

checkout_step

Non-negative Integer

The step number of the checkout funnel the visitor

is currently on

checkout_option

String

An optional field that can provide more information

about the current checkout step

transaction_id

String

The unique ID for the purchase / transaction

currency

String

The currency of the event's value

tax

Non-negative Float

The amount of taxes collected, if applicable

shipping

Non-negative Float

The amount of shipping fees collected, if applicable

affiliation

String

The store or affiliation from which this transaction occurred

Example

Let's say you had the following data layer setup on your page:

window.dataLayer = {
    "ecommerce": {
        "purchase_id": "123abc",
        "shipping": 20.00,
        "taxes": 5.25
    },
    "products": [
        {
            "id": "prodA",
            "name": "My awesome tshirt",
            "price": 12.45,
            "quantity": 5
        },
        {
            "id": "prodB",
            "name": "Foobar snacks",
            "price": 5.32,
            "quantity": 8
        }
    ]
};

In Launch, You could setup a few data elements that referenced the dataLayer.products, dataLayer.ecommerce.purchase_id, dataLayer.ecommerce.shipping, and dataLayer.ecommerce.taxes properties. From there, you can map the data elements in the custom data fields for the purchase event:

It's on our roadmap to explore making this easier for non-developers to implement, but since Launch is data layer agnostic, it likely won't be added in the near future.

Why do I see multiple requests to the Gtag library on the page?

You may see multiple instances of https://www.googletagmanager.com/gtag/js in your network requests. Our extension only loads one for the initial account. Due to the way Google configured the Gtag library, each account will load their own library file. Requests that contain &cx=c are loaded by the main Gtag library and not our extension.

Why are my accounts not sending data when using a custom data layer?

A common issue we see is an existing on-page gtag implementation or a third-party library (e.g., consent managers) setting or overwriting the gtag function. Because of this, the gtag function pushes to the default dataLayer rather than the custom data layer variable. To remedy this, either remove the on-page code setting the gtag function, or use a custom function name.

What features or changes are planned for the extension?

The following items are planned in future releases:

  • Add better support for Google's new "Google Tag" account type.

  • Add support for Google's native consent management.

  • Add the ability to prevent accounts from automatically running the config command on a page.

  • Allow custom Gtag library URL and/or code input (for those with more strict IT policies).

  • Add support for e-commerce fields without having to create a custom data element.

  • Add support to globally disable an account in the extension configuration (instead of either disabling it in every rule or removing it).

I have a feature suggestion or would like to report a bug, who can I contact?

You can reach out directly to the extension engineering team via launchsupport@acronym.com.

Last updated