Guia do desenvolvedor

Veja neste documento como implementar o Gerenciador de tags do Google no seu site.

Como usar uma camada de dados

Para garantir a maior flexibilidade, portabilidade e facilidade de implementação, o Gerenciador de tags do Google funciona melhor quando implementado com uma camada de dados. Uma camada de dados é um objeto que contém todas as informações que você quer transmitir ao Gerenciador. Informações, como eventos ou variáveis, podem ser enviadas ao Gerenciador de tags do Google por meio da camada de dados, e os acionadores podem ser configurados no Gerenciador com base nos valores das variáveis (por exemplo, disparar uma tag de remarketing quando purchase_total > US$ 100) ou em eventos específicos. Os valores das variáveis também podem ser transmitidos a outras tags, por exemplo, enviando o purchase_total para o campo de valor de uma tag.

Em vez de fazer referência a variáveis, informações de transação, categorias de página e outros sinais importantes espalhados por toda a página, o Gerenciador de tags do Google foi projetado para referenciar facilmente as informações inseridas nessa camada de dados. No entanto, é opcional declarar a camada de modo explícito e, se você não quiser implementá-la, ainda poderá acessar os valores da página usando o recurso Variáveis. Porém, não é possível usar eventos sem a camada de dados. Implementar a camada com as variáveis e os valores associados, em vez de aguardar o carregamento dessas variáveis na página, garante que eles estarão disponíveis para disparar as tags.

Como adicionar variáveis da camada de dados a uma página

Para configurar a camada de dados, adicione o seguinte snippet de código ao cabeçalho da sua página, acima do snippet de contêiner:

<script>
  dataLayer = [];
</script>

O snippet mostrado acima é um objeto vazio que pode ser preenchido com as informações a serem transmitidas para o Gerenciador de tags do Google. Por exemplo, é possível definir variáveis na camada de dados que indicam se a página é de inscrição e se o visitante foi identificado como um cliente de alto valor. Para isso, preencheríamos a camada de dados da seguinte maneira:

<script>
  dataLayer = [{
    'pageCategory': 'signup',
    'visitorType': 'high-value'
  }];
</script>

Por exemplo, o Gerenciador de tags do Google pode ser configurado para disparar tags em todas as páginas identificadas como de signup e/ou em que o visitante tenha sido especificado como de high-value. É importante que esse snippet da camada de dados seja definido acima do snippet de contêiner, conforme descrito no Guia de início rápido.

Se o código da camada de dados for chamado após o snippet de contêiner, as variáveis declaradas não estarão disponíveis para que o Gerenciador dispare as tags de forma seletiva durante o carregamento de página. Veja alguns exemplos:

Incorreto

<!-- Google Tag Manager -->
...
<!-- End Google Tag Manager -->
<script>
  dataLayer = [{
    'pageCategory': 'signup',
    'visitorType': 'high-value'
  }];
</script>

Correto

<script>
  dataLayer = [{
    'pageCategory': 'signup',
    'visitorType': 'high-value'
  }];
</script>
<!-- Google Tag Manager -->
...
<!-- End Google Tag Manager -->

As variáveis declaradas no objeto da camada de dados persistirão enquanto o visitante permanecer na página atual. Portanto, as variáveis da camada de dados que são relevantes para as páginas (por exemplo, visitorType) precisam ser declaradas na camada de cada página do seu site. Embora não seja necessário inserir o mesmo conjunto de variáveis na camada de dados em todas as páginas, você precisa usar uma convenção de nomenclatura consistente. Em outras palavras, se você definir a categoria na página de inscrição usando pageCategory, também precisará utilizar a pageCategory para defini-la em uma página de compra.

É opcional declarar uma camada de dados de modo explícito. Portanto, se você não quiser implementar o código da camada de dados e preenchê-la com as variáveis, o snippet de contêiner do Gerenciador de tags do Google iniciará um objeto de camada de dados.

Como usar a camada de dados com manipuladores de eventos HTML

O Gerenciador de tags do Google oferece uma variável de camada de dados especial chamada event que é usada nos listeners de eventos JavaScript para iniciar o disparo de tags quando um usuário interage com elementos do site, como um botão. Por exemplo, convém disparar uma tag de acompanhamento de conversões quando um usuário clica no botão Submit em um formulário de inscrição de newsletter. Os eventos são chamados com base na interação do usuário com elementos do site, como links, botões e componentes de um sistema de menu em Flash, ou com base em outro JavaScript (por exemplo, atrasos etc.).

Esse recurso pode ser usado chamando a API push como um método da camada de dados na sua página (por exemplo, anexado aos elementos específicos a serem acompanhados). Veja a seguir a sintaxe básica para definição de um evento:

dataLayer.push({'event': 'event_name'});

em que event_name é uma string que indica qual é o evento ou o elemento fornecido.

Por exemplo, para definir um evento de clique em um botão, modifique o link do botão para chamar a API push() da seguinte forma:

<a href="#" name="button1" onclick="dataLayer.push({'event': 'button1-click'});" >Button 1</a>

Às vezes, os dados que você quer coletar ou usar para acionar determinadas tags não são carregados até que o usuário interaja com a página. Usando uma combinação de variáveis e eventos da camada de dados, é possível enviar essas informações de forma dinâmica para a camada, conforme necessário.

As variáveis podem ser enviadas de forma dinâmica para a camada de dados com o objetivo de coletar informações, como os valores inseridos ou selecionados em um formulário, os metadados associados a um vídeo reproduzido pelo visitante, a cor de um produto (por exemplo, um carro) personalizada pelo usuário, os URLs de destino dos links clicados etc.

Assim como nos eventos, esse recurso é acessado chamando a API push() para adicionar ou substituir as variáveis na camada de dados. Veja a seguir a sintaxe básica para a definição de variáveis dinâmicas na camada de dados:

dataLayer.push({'variable_name': 'variable_value'});

Em que a string variable_name indica o nome da variável da camada de dados a ser definida e variable_value indica o valor da variável a ser definida ou substituída.

Por exemplo, para adicionar uma preferência de cor a uma variável da camada de dados quando o visitante interage com um widget de personalização de carros, envie a seguinte variável dinâmica:

dataLayer.push({'color': 'red'});

Envio de diversas variáveis

Em vez de usar dataLayer.push() para cada variável e evento, você pode enviar vários eventos e variáveis de uma vez só. Veja como fazer isso a seguir:

dataLayer.push({
  'color': 'red',
  'conversionValue': 50,
  'event': 'customizeCar'
});

Você pode usar a mesma técnica em um manipulador de eventos de link:

<a href="#"
   name="color"
   onclick="dataLayer.push({
     'color': 'red',
     'conversionValue': 50,
     'event': 'customizeCar'});">Customize Color</a>

Enviar à camada de dados uma variável com o mesmo nome de outra existente fará com que o valor atual seja substituído por um novo valor. Por exemplo, se você clicasse no link acima e houvesse uma variável chamada color com um valor blue declarado na camada de dados, esse valor seria sobrescrito por red.

Como funciona a sintaxe assíncrona

O Gerenciador de tags do Google é uma tag assíncrona, ou seja, quando executado, ele não bloqueia a renderização de outros elementos na página. Ele também faz com que as outras tags implantadas pelo Gerenciador sejam implementadas de forma assíncrona. Dessa forma, uma tag de carregamento lento não bloqueará outras tags de acompanhamento.

O objeto da dataLayer possibilita a sintaxe assíncrona. Ele age como uma fila, ou seja, uma estrutura de dados "primeiro a chegar, primeiro a sair" que coleta chamadas de API para que as tags sejam disparadas de acordo com essas chamadas. Para adicionar um elemento à fila, use o método dataLayer.push. O método dataLayer.push pode ser usado para transmitir metadados extras ao Gerenciador de tags do Google por meio de variáveis e para especificar eventos.

A criação do objeto da dataLayer pode ser especificada antes do snippet do Gerenciador de tags do Google ou, então, ele será criado pelo Gerenciador se esse objeto ainda não tiver sido definido.

Para mais informações sobre a sintaxe assíncrona, leia a referência de acompanhamento para o método dataLayer.push.

Como evitar as armadilhas comuns

Ao implementar o Gerenciador de tags do Google, lembre-se do seguinte:

Não sobrescreva sua dataLayer

Quando você usa a atribuição para adicionar valores ao dataLayer, por exemplo, dataLayer = [{'item': 'value'}], ela sobrescreve os valores existentes. É recomendável declarar sua dataLayer na posição mais alta possível do código-fonte, acima do snippet de contêiner ou do snippet de ocultação de página do Optimize. Depois que você informar a dataLayer, poderá usar dataLayer.push({'item': 'value'}) para adicionar outros valores a ela nos seus scripts.

O nome do objeto da dataLayer diferencia maiúsculas e minúsculas

Se você tentar transmitir uma variável ou um evento com a capitalização incorreta, o processo não funcionará. Por exemplo:

datalayer.push({'pageTitle': 'Home'});    // Won't work
dataLayer.push({'pageTitle': 'Home'});    // Better

Os nomes das variáveis precisam ser colocados entre aspas

Embora as aspas não sejam obrigatórias para os nomes de variáveis que contêm apenas letras, números e sublinhados e que não são palavras reservadas (por exemplo, função, exportação, nativo etc.), é recomendável que todos eles sejam incluídos entre aspas para evitar problemas. Por exemplo:

dataLayer.push({new-variable: 'value'});      // Won't work
dataLayer.push({'new-variable': 'value'});    // Better

Os nomes das variáveis precisam ser consistentes entre as páginas

Se você usar nomes diferentes para as mesmas variáveis em páginas distintas, o GTM não poderá disparar tags de maneira consistente em todos os locais esperados. Por exemplo:

Não funcionará
// Homepage:
dataLayer.push({'visitorType': 'low-value'});

// Checkout Page:
dataLayer.push({'visitor_type': 'high-value'});
Funcionará
// Homepage:
dataLayer.push({'visitorType': 'low-value'});

// Checkout Page:
dataLayer.push({'visitorType': 'high-value'});

Qualquer informação necessária para disparar tags em um carregamento de página precisa ser declarada na camada de dados acima do snippet de contêiner

Para disparar tags em um carregamento de página correspondente a uma condição (por exemplo, em páginas com pageCategory sports), a pageCategory precisa ser definida na camada de dados acima do snippet de contêiner (por exemplo, 'pageCategory': 'sports'). As variáveis transmitidas para a camada de dados (isto é, usando dataLayer.push()) depois do snippet de contêiner não dispararão tags em carregamentos de página com uma condição correspondente.

As tags implantadas com o Gerenciador de tags do Google não podem ser codificadas nem implantadas por outra ferramenta

Todas as tags disparadas pelo Gerenciador precisam ser migradas, não apenas duplicadas. Para mais informações, consulte Como migrar tags para o Gerenciador de tags do Google. Implantar tags usando o Gerenciador de tags do Google e outros sistemas ou por meio de codificação no seu site pode resultar na inflação de dados e em outros problemas de integridade. Por exemplo, se você migrar seu código de acompanhamento do Google Analytics para fazer disparos a partir do Gerenciador de tags do Google, o código do Google Analytics codificado precisará ser removido do site.

Como renomear a camada de dados

Por padrão, a camada de dados iniciada e referenciada pelo Gerenciador de tags do Google será chamada de dataLayer. Se você quiser usar um nome diferente, substitua o valor de parâmetro da camada (destacado abaixo) no snippet de contêiner pelo nome de sua escolha.

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','myNewName','GTM-XXXX');</script>
<!-- End Google Tag Manager -->

Depois, todas as referências à sua camada de dados (ou seja, ao declará-la acima do snippet e enviar eventos ou variáveis dinâmicas a ela com a API push()) também precisam ser ajustadas para refletir o nome personalizado:

<script>
  myNewName = [{
    // ...
  }];
  myNewName.push({'variable_name': 'variable_value'});
</script>

Como migrar tags para o Gerenciador de tags do Google

Para aproveitar ao máximo o Gerenciador de tags do Google, recomendamos que você migre a maioria das tags existentes para o Gerenciador (as tags incompatíveis não podem ser migradas). Nesta seção, descrevemos as práticas recomendadas do fluxo de trabalho de migração. O processo tem cinco etapas principais:

  1. Mapear seu site (opcional)

    Para começar sua migração, pense em quais tags estão implantadas no seu site e quais dados você quer coletar. No caso da coleta de dados, reflita sobre quais ações você quer acompanhar (eventos) e quais outros dados da página precisará coletar (variáveis). Crie um mapa com as tags, os dados a serem coletados e quais eventos ou páginas você quer associar a elas.

  2. Implementar o snippet padrão do Gerenciador de tags do Google

    Depois de mapear seu site, você precisará apenas instalar o snippet exclusivo do Gerenciador de tags do Google no seu site (vazio) e implantá-lo. Veja o Guia de início rápido para mais informações.

  3. Adicionar eventos e variáveis

    Personalize sua instalação do Gerenciador de tags do Google usando os métodos descritos na seção Adicionar eventos e variáveis.

  4. Adicionar tags com os acionadores associados na interface de gerenciamento do Gerenciador de tags do Google

    Depois de concluir a configuração do site com as APIs de coleta de snippets e dados do Gerenciador de tags do Google, adicione as tags do site à interface do usuário. NÃO as publique ainda. Basta adicionar e configurar as tags do seu site na interface de gerenciamento do Gerenciador de tags do Google usando os modelos apropriados e configurar os acionadores da forma adequada. Veja mais informações sobre como fazer isso no artigo da Central de Ajuda sobre acionadores.

  5. Realizar a troca final da migração

    A última etapa inclui trocar as tags antigas e publicar as novas no Gerenciador de tags do Google. Você precisará realizar os procedimentos a seguir quase de maneira simultânea:

    • Remova as tags do seu site em um único push de código.
    • Após o push ser concluído, pressione o botão "Publicar" na sua versão do contêiner.

    Esse método pode gerar uma pequena lacuna nos dados, que desaparecerá quando a troca inicial ocorrer. Como alternativa, é possível alterar a ordem do processo e publicar as tags pouco antes de as alterações do site serem aplicadas. Isso pode causar uma única duplicação de dados, em vez de uma pequena lacuna.

Depois que você concluir a migração inicial para o Gerenciador de tags do Google, será possível realizar aplicações posteriores de tags na interface do Gerenciador, sem precisar alterar o código do site.

Vários domínios

Embora você possa usar o mesmo contêiner para vários sites, é recomendável que cada propriedade da Web gerenciada seja implantada no próprio contêiner dela. Isso impedirá que as alterações específicas de um site tenham efeitos indesejados em outros sites que usam o mesmo contêiner. No entanto, em casos em que vários domínios ou subdomínios de nível mais alto são considerados membros do mesmo site, talvez seja útil gerenciar as tags deles por meio do mesmo contêiner do Gerenciador de tags do Google.

Se quiser usar um único contêiner em vários domínios, configure com cuidado suas tags e seus acionadores no Gerenciador de tags do Google. Usar o acionador padrão "Todas as páginas" no Gerenciador (ou seja, $url matches RegEx .*) disparará as tags em todas as páginas de todos os domínios em que o snippet de contêiner foi implantado. Como algumas tags têm configurações ou finalidades específicas ao domínio em que foram implantadas, talvez seja necessário criar acionadores personalizados (ou até mesmo remover o acionador "Todas as páginas") para dispará-las em todas as páginas individualmente em cada domínio.

Por exemplo, você pode implantar seu código de acompanhamento do Google Analytics em vários domínios ou subdomínios por meio do GTM usando configurações compatíveis com o acompanhamento do GA.

Imagem mostrando vários domínios

Nesse caso, você adicionaria uma linha ao seu código de acompanhamento do GA para definir de forma manual o domínio primário em que os cookies do GA serão incluídos. Por exemplo, no caso de www.example-petstore.com e dogs.example-petstore.com, você pode definir os cookies no domínio comum, .example-petstore.com. No entanto, no site secundário www.my-example-blogsite.com, os cookies poderão ser incluídos em .my-example-blogsite.com. Assim, é recomendável que uma das tags do código de acompanhamento do GA (uma definida como .example-petstore.com e a outra como .my-example-blogsite.com) seja disparada nos dois domínios. Se os dois domínios compartilhassem um contêiner comum do GTM, usar o acionador padrão "Todas as páginas" no Gerenciador de tags do Google faria com que cada tag fosse disparada em todas as páginas de ambos os domínios.

Vários contêineres em uma página

Para melhorar o desempenho de uma página, reduza o número de contêineres do Gerenciador de tags do Google na página.

Se você usar mais de um contêiner em uma página, implemente os snippets de contêiner com um objeto de camada de dados comum. Por exemplo, você pode implementar dois snippets de contêiner da seguinte maneira:

  1. Copie o seguinte JavaScript e cole-o na página o mais próximo possível da tag <head> de abertura:
    <!-- Google Tag Manager -->
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','GTM-XXXX');</script>
    
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','GTM-YYYY');</script>
    <!-- End Google Tag Manager -->
    
    
  2. Copie o snippet a seguir e cole-o na página imediatamente após a tag <body> de abertura:
    <!-- Google Tag Manager (noscript) -->
    <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXX"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    
    <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-YYYY"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <!-- End Google Tag Manager (noscript) -->
    
    

Só é possível usar uma única camada de dados comum para todos os contêineres do Gerenciador de tags do Google em uma página, já que utilizar mais de uma impede o funcionamento de alguns acionadores e pode ter outras implicações. Portanto, não renomeie a camada de dados de um subconjunto de contêineres na página. Se necessário, faça isso para todos os contêineres.

Evite implementar um contêiner do Gerenciador de tags do Google em outro contêiner usando uma tag HTML personalizada, porque isso adicionaria latência às tags do contêiner secundário e poderia ter outras implicações.

Flash / ActionScript

Para que o Gerenciador de tags do Google dispare tags com base no conteúdo ou nas interações de um filme em Flash, é possível utilizar o método ExternalInterface do ActionScript para enviar eventos e variáveis dinâmicas da camada de dados à camada da página do contêiner a partir do filme em SWF. Se você quiser usar esse recurso, o snippet de contêiner do Gerenciador de tags do Google precisará ser implementado no HTML da página principal do SWF, conforme descrito no Guia de início rápido.

As variáveis dinâmicas da camada de dados e os eventos podem ser enviados a partir do componente Flash para o Gerenciador de tags do Google ao chamar o método push usando a ExternalInterface. Por exemplo, para acionar um evento após o clique em um botão mybutton_btn com o ActionScript 3, você poderia implementar o seguinte código no seu SWF:

import flash.display.*;
import flash.events.*;
import flash.external.*;
mybutton_btn.addEventListener(MouseEvent.MOUSE_UP, onButtonClick);
function onButtonClick( Event:MouseEvent ):void {
  var name:String= "FLASH_EVENT";
  if (ExternalInterface.available) {
    ExternalInterface.call('dataLayer.push',{'event': name});
  }
}

Para que o método ExternalInterface funcione corretamente, o atributo allowscriptaccess precisará estar definido como always quando você incorporar o SWF:

<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'
        width='300' height='300' id='player1' name='player1'>
  <param name='movie' value='file.swf'>
  <param name='allowfullscreen' value='true'>
  <param name='allowscriptaccess' value='always'>
  <param name='flashvars' value='file=playlist.xml'>
  <embed id='player1' name='player1'
         src='file.swf'
         width='300' height='300'
         allowscriptaccess='always'
         allowfullscreen='true'
         flashvars="file=playlist.xml"/>
</object>

Como adicionar variáveis da camada de dados para dispositivos não compatíveis com JavaScript

Para atender aos visitantes cujo JavaScript está desativado ou que acessam em dispositivos incompatíveis com ele, o Gerenciador de tags do Google inclui um snippet <noscript> para implantar tags dependentes de outra linguagem que não JavaScript, mesmo quando o JavaScript principal do GTM não pode ser carregado.

No entanto, a camada de dados (que contém as variáveis declaradas no carregamento de página) e quaisquer variáveis dinâmicas e eventos enviados a ela dependem de JavaScript para funcionar. Portanto, se um dos acionadores que disparam tags dependentes de outra linguagem que não JavaScript (ou seja, aquelas que precisam ser disparadas mesmo quando o JavaScript não é carregado) depender das variáveis de camada de dados, transmita essas variáveis para o iframe <noscript> como parâmetros de consulta. Por exemplo, para disparar uma tag quando a pageCategory for sports e o visitorType for returning, modifique o snippet de contêiner na página especificada da seguinte forma:

<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXX&pageCategory=sports&visitorType=returning" height="0"
                  width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->

Em que cada variável da camada de dados é anexada ao final do URL de origem do iframe como parâmetros de consulta de texto simples e separada por "e" comercial.

Segurança

O Gerenciador de tags do Google incorpora uma série de recursos para garantir a segurança dos seus sites e aplicativos. Além dos seguintes recursos de segurança no nível do código, conheça os controles de acesso, a verificação em duas etapas e a detecção de malware do Gerenciador de tags.

Como restringir a implantação de tags

Embora não seja recomendado restringir os tipos de tags implantadas com o Gerenciador de tags do Google por vários motivos, talvez seja necessário fazer isso para as tags implantadas em um site. Por exemplo, para os fins de estabilidade do código ou coleta de dados, talvez alguns proprietários de sites não queiram que os usuários do Gerenciador de tags do Google adicionem determinadas tags às páginas. Assim, adicionamos um recurso de lista negra ao Gerenciador de tags do Google que pode ser controlado durante a instalação de snippets.

Para controlar quais tags, variáveis e acionadores são permitidos em uma página, use as chaves gtm.whitelist e/ou gtm.blacklist na sua camada de dados, que modificarão todas as configurações no contêiner. Quando colocados na lista negra da forma correta, os acionadores, as tags e as variáveis não serão acionados, mesmo que a configuração na IU do Gerenciador de tags do Google solicite o disparo deles.

Veja no exemplo a seguir como inicializar uma camada de dados que tenha uma lista de permissões e uma lista negra. Ambas as listas são opcionais, e você pode usá-las separadamente ou ao mesmo tempo, conforme mostrado. As duas precisam ser do tipo Array, e os valores delas, do tipo String:

dataLayer = [{
  ...
  'gtm.whitelist': ['<ID>', '<ID>', ...]
  'gtm.blacklist': ['<ID>', '<ID>', '<ID>', ...]
}];

Cada ID na lista corresponde a um tipo específico de tag, acionador ou variável ou a uma classe de tipos. As classes representam grupos de tags, acionadores e variáveis que têm os mesmos recursos. Por exemplo, todas as tags que podem enviar pixels para domínios fora do Google terão a classe nonGooglePixels. As classes são úteis para bloquear recursos em tags, acionadores e variáveis atuais e futuros.

É importante entender as regras que regem as listas de permissões e as listas negras:

  1. Listas de permissões
    Quando uma lista de permissões estiver definida, as tags, as variáveis e os acionadores só serão executados se estiverem na lista de permissões, seja de forma explícita (por código de tipo) ou implícita (com todas as classes deles inclusas na lista).
  2. Listas negras
    Quando uma lista negra estiver definida, as tags, as variáveis e os acionadores só serão executados se não estiverem na lista negra, seja de forma explícita (por código de tipo) ou implícita (com quaisquer classes deles inclusas na lista).
  3. Listas negras modificam listas de permissões
    Quando ambas estiverem definidas, as listas negras têm precedência. Você pode colocar uma classe de tags na lista de permissões e colocar uma tag dessa classe na lista negra. No entanto, não é possível colocar uma classe de tags na lista negra e colocar uma tag específica dessa classe na lista de permissões.
  4. Classes têm relacionamentos
    Algumas classes têm relacionamentos com outras classes. Por exemplo, as tags que executam scripts que não são do Google podem, por definição, enviar pixels que não são do Google. Assim, bloquear os nonGooglePixels também bloqueia os nonGoogleScripts de forma automática. Todos os acionadores, as tags e as variáveis que pertencem a um dos grupos serão bloqueados.

Veja na tabela a seguir uma lista das tags, das variáveis e dos acionadores disponíveis, e os tipos e as classes aos quais pertencem:

Tag ID Classes
Tag genérica da AB TASTY abtGeneric nonGoogleScripts
Tag da AdAdvisor ta nonGoogleScripts
Tag da Adometry adm google
Tag de pixel inteligente da AdRoll asp nonGoogleScripts
Tag de acompanhamento de conversões do Google Ads awct google
Tag de remarketing do Google Ads sp google
Tag de conversão da Affiliate Window awc nonGoogleScripts
Tag de caminho da Affiliate Window awj nonGoogleScripts
Acompanhamento universal de eventos do Bing Ads baut nonGoogleScripts
Bizrate Insights Buyer Survey Solution bb nonGoogleScripts
Bizrate Insights Site Abandonment Survey Solution bsa nonGoogleScripts
Tag de acompanhamento padrão da ClickTale cts nonGoogleScripts
Tag comScore Unified Digital Measurement csm nonGoogleScripts
Conversant Mediaplex – tag MCT de IFRAME mpm nonGoogleIframes
Conversant Mediaplex – tag padrão ROI de IMG mpr nonGooglePixels
Tag Crazy Egg cegg nonGoogleScripts
Criteo OneTag crto nonGoogleScripts
Tag HTML personalizada html customScripts
Tag de imagem personalizada img customPixels
Tag da DistroScale dstag nonGoogleScripts
Tag de contador do Floodlight flc  
Tag de vendas do Floodlight fls  
Tag de pixel da Dstillery Universal m6d nonGooglePixels
Tag da Eulerian Analytics ela customScripts
Tag do Google Analytics ga google
Satisfação com o site do Pesquisa de opinião Google gcs google
Google Optimize opt google
Tag do Google Trusted Stores ts  
Código de acompanhamento da Hotjar hjtc nonGoogleScripts
Infinity Call Tracking Tag infinity nonGoogleScripts
Intent Media - Search Compare Ads sca nonGoogleScripts
K50 tracking tag k50Init nonGoogleScripts
LeadLab ll nonGoogleScripts
Tag do LinkedIn bzi nonGoogleScripts
Tag JavaScript da Lytics ljs nonGoogleScripts
Tag da Marin Software ms nonGoogleScripts
Mediaplex – tag MCT de IFRAME mpm nonGoogleIframes
Mediaplex – tag padrão ROI de IMG mpr nonGooglePixels
Message Mate messagemate nonGoogleScripts
Tag da Mouseflow mf nonGoogleScripts
Pixel da Neustar ta nonGoogleScripts
Tag estática Lite de DCR da Nielsen ndcr nonGoogleScripts
Tag de análise de conteúdo da Nudge nudge nonGoogleScripts
Código de acompanhamento da Oktopost okt nonGoogleScripts
Tag de conversão do Optimise omc nonGoogleScripts
Message Mate da OwnerListens messagemate nonGoogleScripts
Pixel da Perfect Audience pa nonGoogleScripts
Personali Canvas pc nonGoogleScripts
Placed placedPixel nonGoogleScripts
Pulse Insights Voice of Customer Platform pijs nonGoogleScripts
Avaliação de público-alvo da Quantcast qcm nonGoogleScripts
FoxMetrics da Rawsoft fxm nonGoogleScripts
Tag JavaScript da SaleCycle scjs customScripts
Tag de pixel da SaleCycle scp customPixels
Acompanhamento JavaScript do SearchForce para a página de conversão sfc nonGoogleScripts
Acompanhamento JavaScript do SearchForce para a página de destino sfl nonGoogleScripts
Tag de acompanhamento de redirecionamento do SearchForce sfr nonGooglePixels
Shareaholic shareaholic nonGoogleScripts
Widget da Survicate svw nonGoogleScripts
Tag de conversão de lead da Tradedoubler tdlc nonGooglePixels
Tag de conversão de venda da Tradedoubler tdsc nonGooglePixels
Tag de acompanhamento de conversões da Turn tc nonGoogleScripts
Tag de coleta de dados da Turn tdc nonGoogleScripts
Tag de site universal do Twitter twitter_website_tag nonGoogleScripts
Tag do Universal Analytics ua google
Tag global de rodapé da Upsellit uslt customScripts
Tag de confirmação do Upsellit uspt customScripts
Tag de JavaScript interativo da Ve vei nonGoogleScripts
Pixel interativo da Ve veip nonGooglePixels
Tag de conversão da VisualDNA vdc nonGoogleScripts
Xtremepush xpsh nonGoogleScripts
Yieldify yieldify nonGoogleScripts
Acionador ID Classes
Acionador/listener de visibilidade do elemento evl google
Acionador/listener de cliques cl google
Acionador/listener de envios de formulário fsl  
Acionador/listener de histórias hl google
Acionador/listener de erros de JavaScript jel google
Acionador/listener de cliques em links lcl  
Acionador/listener de profundidade de rolagem sdl google
Acionador/listener de timer tl google
Acionador/listener de vídeos do YouTube ytl google
Variável ID Classes
Cookie primário k google
Variável de evento automático v google
Constante c google
Número da versão do contêiner ctv google
Evento personalizado e google
Variável personalizada de JavaScript jsm customScripts
Variável de camada de dados v google
Modo de depuração dbg google
Elemento DOM d google
Visibilidade do elemento vis google
Referenciador de HTTP f google
Variável JavaScript j google
Tabela de consulta smm google
Número aleatório r google
Tabela RegEx remm google
URL u google

Veja na tabela a seguir uma lista das classes disponíveis e os relacionamentos delas com outras classes. A coluna Colocada na lista de permissões automaticamente mostra as classes que serão colocadas na lista de permissões de forma implícita quando a classe dessa linha estiver na lista de permissões. Da mesma forma, a coluna Colocada na lista negra automaticamente mostra as classes que serão colocadas na lista negra de forma implícita quando a classe dessa linha estiver na lista negra.

Classe Descrição Colocada na lista de permissões automaticamente Colocada na lista negra automaticamente
customPixels Envia os pixels para os URLs definidos pelo usuário. nonGooglePixels customScripts
html
customScripts Executa o código JavaScript fornecido pelo usuário. html
customPixels
nonGooglePixels
nonGoogleScripts
nonGoogleIframes
html
google Executa somente os scripts hospedados pelo Google e envia os pixels a ele.    
html Alias para customScripts. Observe que ele também é o ID da tag HTML personalizada. Isso garante que os usuários herdados também recebam os benefícios da classe customScripts. customScripts
customPixels
nonGooglePixels
nonGoogleScripts
nonGoogleIframes
customScripts
nonGooglePixels Envia pixels para domínios que não são do Google.   customPixels
customScripts
html
nonGoogleScripts
nonGoogleIframes
nonGoogleScripts Executa scripts não fornecidos pelo Google. nonGooglePixels
customScripts
html
nonGoogleIframes Inclui iframes de domínios que não são do Google. nonGooglePixels
customScripts
html
nonGoogleScripts

Como usar um URL relativo a protocolo

Por padrão, o snippet de contêiner do Gerenciador de tags do Google sempre usa https para carregar os contêineres (por exemplo, https://www.googletagmanager.com). Isso ajuda a proteger seu contêiner contra usuários mal-intencionados e espionagem e, em muitos casos, também melhora o desempenho.

Se você preferir carregar seus contêineres do Gerenciador de tags do Google de maneira relativa a protocolo, defina o protocolo de URL de origem (destacado abaixo) no snippet de contêiner como //, em vez de https://.

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXX');</script>
<!-- End Google Tag Manager -->
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->

Ao usar um URL relativo a protocolo, o contêiner seria carregado usando http nas páginas com URL http:// e usando https nas páginas com URL https://.

As versões mais antigas do snippet de contêiner do Gerenciador de tags do Google sempre usavam um URL relativo a protocolo para carregar contêineres (ou seja, //www.googletagmanager.com). Essas versões continuarão funcionando sem precisar de atualização.

Embora a maioria dos modelos de tags no Gerenciador de tags do Google sejam relativos a protocolo, ao definir as tags personalizadas para serem disparadas em páginas seguras, lembre-se de que elas também serão seguras ou relativas a protocolo.