# Using Google Optimize in a plugin initializer JS

**URL:** https://meta.discourse.org/t/using-google-optimize-in-a-plugin-initializer-js/184865
**Category:** Support
**Created:** [March 30, 2021, 4:17pm UTC](https://meta.discourse.org/t/using-google-optimize-in-a-plugin-initializer-js/184865 "2021-03-30T16:17:33Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![Ali\_Hassan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ali_hassan/32/215114_2.png) [@Ali\_Hassan](https://meta.discourse.org/u/Ali_Hassan)
#### Post date: [March 30, 2021, 4:17pm UTC](https://meta.discourse.org/t/using-google-optimize-in-a-plugin-initializer-js/184865/1 "2021-03-30T16:17:34Z")

</div>

Hey everyone, i have a problem when i enable v4\_gtag for analytics instead of v3\_analytics, i need GTag for Google Optimize but i keep getting an error that `gtag is not a function`.

i am calling the `gtag` function inside a plugin js file, can someone provide more context on why this isn’t working ?

here is a sample of how i’ve written the code, Thank you in advance

```plaintext
export default {
  name: 'common-init',
  after: 'inject-objects',
  initialize() {
    gtag('event', 'optimize.callback', {
      name: settings.optimize_js_experiment_id,
      callback: (variation) => {
       console.log(`Variation: ${variation}`)
      }
    })
  }
}

```

---

<div class="post-metadata">

### Author: ![hawm](https://avatars.discourse-cdn.com/v4/letter/h/f07891/32.png) [@hawm](https://meta.discourse.org/u/hawm)
#### Post date: [March 30, 2021, 4:24pm UTC](https://meta.discourse.org/t/using-google-optimize-in-a-plugin-initializer-js/184865/2 "2021-03-30T16:24:57Z")

</div>

Where your `gtag` function define?

---

<div class="post-metadata">

### Author: ![Ali\_Hassan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ali_hassan/32/215114_2.png) [@Ali\_Hassan](https://meta.discourse.org/u/Ali_Hassan)
#### Post date: [March 31, 2021, 8:20am UTC](https://meta.discourse.org/t/using-google-optimize-in-a-plugin-initializer-js/184865/3 "2021-03-31T08:20:57Z")

</div>

i would assume its defined as part of Discourse when. i enable gtag from settings

---

<div class="post-metadata">

### Author: ![hawm](https://avatars.discourse-cdn.com/v4/letter/h/f07891/32.png) [@hawm](https://meta.discourse.org/u/hawm)
#### Post date: [March 31, 2021, 8:29am UTC](https://meta.discourse.org/t/using-google-optimize-in-a-plugin-initializer-js/184865/4 "2021-03-31T08:29:00Z")

</div>

You will still need to import even it define at somewhere already.

---

<div class="post-metadata">

### Author: ![Ali\_Hassan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ali_hassan/32/215114_2.png) [@Ali\_Hassan](https://meta.discourse.org/u/Ali_Hassan)
#### Post date: [March 31, 2021, 2:09pm UTC](https://meta.discourse.org/t/using-google-optimize-in-a-plugin-initializer-js/184865/5 "2021-03-31T14:09:18Z")

</div>

so i still need to add the GTag importing script manually somewhere ?

---

<div class="post-metadata">

### Author: ![hawm](https://avatars.discourse-cdn.com/v4/letter/h/f07891/32.png) [@hawm](https://meta.discourse.org/u/hawm)
#### Post date: [March 31, 2021, 2:49pm UTC](https://meta.discourse.org/t/using-google-optimize-in-a-plugin-initializer-js/184865/6 "2021-03-31T14:49:28Z")

</div>

Seems `gtag` is define at runtime under `window` object, so you don’t have to import it again but call it in runtime like `window.gtag`.  
[https://github.com/discourse/discourse/blob/master/app/assets/javascripts/google-universal-analytics-v4.js](https://github.com/discourse/discourse/blob/master/app/assets/javascripts/google-universal-analytics-v4.js)

---

<div class="post-metadata">

### Author: ![Ali\_Hassan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ali_hassan/32/215114_2.png) [@Ali\_Hassan](https://meta.discourse.org/u/Ali_Hassan)
#### Post date: [April 4, 2021, 11:33am UTC](https://meta.discourse.org/t/using-google-optimize-in-a-plugin-initializer-js/184865/7 "2021-04-04T11:33:46Z")

</div>

i was able to define the function on startup and i think discourse is gonna redefine it when it loads which is currently working ok, but i have another problem now, when i add my ga tracking code in ga universal tracking code it still includes analytics.js even though i am using v4\_gtag, is this an expected behavior ? won’t. that make an issue of sending duplicate events ?
