Análise gratuita Sobre o Velo Suporte Contato
Começar com o Velo

Já tem uma conta? Entrar

Posso mover um script para o Google Tag Manager para que ele dependa do consentimento?

Consent Mode 29 de agosto de 2026· 7 min de leitura
O mascote do Velo coloca um script solto dentro de um contêiner organizado enquanto um fantasma observa

Todos os artigos

Sim, para a maioria dos scripts de fornecedores, e o Google Tag Manager oferece um bloqueio de verdade: a tag só roda quando o gatilho dispara e as configurações de consentimento permitem. A exceção é qualquer script que precise agir antes de a página renderizar ou ver a primeiríssima requisição, porque um contêiner não consegue dispará-lo cedo o bastante.

Comece com uma análise.

A análise gratuita lê o HTML da sua página inicial e o seu contêiner público do Tag Manager e lista as tags de rastreamento que encontra.

Grátis · Sem cadastro · Verificação de HTML e GTM público

O que muda quando você move um script para o Google Tag Manager?

Um script fixo no código do head roda no momento em que o parser chega a ele. Não há nenhum bloqueio na frente dele, e é por isso que um trecho de código de fornecedor no head é o motivo mais comum de um site gravar cookies antes de o visitante ter concordado com qualquer coisa.

Mova-o para um contêiner e ele deixa de ser marcação e vira uma tag. Agora ele roda quando um gatilho o dispara e quando as configurações de consentimento permitem que prossiga. É exatamente o que você queria. É também a parte que as pessoas subestimam: você não só acrescentou um bloqueio, você mudou o momento em que o script roda. Para a maioria dos fornecedores isso é inofensivo. Para alguns, é o problema inteiro.

Quais scripts não podem ir para o contêiner?

Três tipos de script não sobrevivem à mudança, e falham pelo mesmo motivo de fundo. Um contêiner carrega e é avaliado depois que a página já começou, e esses scripts precisam agir antes disso.

  • Qualquer coisa que tenha de rodar antes da renderização. Scripts de personalização e de testes A/B reescrevem a página antes de o visitante vê-la. Atrás de um gatilho, eles chegam depois da primeira renderização, então o visitante vê o conteúdo original aparecer e depois mudar. Essa cintilação é exatamente o que o script existia para evitar, então movê-lo não o bloqueia, e sim o quebra.
  • Qualquer coisa que precise ver a primeira requisição. Algumas ferramentas contra bots e fraude são feitas para observar o primeiro instante de uma visita. Disparadas a partir de um contêiner, elas veem uma página que já está aberta há algum tempo, e a resposta delas muda de acordo.
  • A própria camada de consentimento. Você não pode colocar atrás do consentimento aquilo que coleta o consentimento. O banner precisa poder rodar antes de existir qualquer decisão, e é por isso que ele fica no head, e por isso que ele é um dos poucos scripts que são de fato estritamente necessários.

Quando um script não pode ser movido, a resposta honesta é deixá-lo onde está e bloqueá-lo ali: a sua ferramenta de consentimento o bloqueia na página, por categoria, em vez de um contêiner retê-lo. Mesmo resultado, mecanismo diferente, e a questão da categoria é tratada em em que categoria de consentimento um script deve entrar.

O teste é o momento, não a categoria.

FicaNo head
  • Precisam rodar antes da renderização: personalização, testes A/B
  • Precisam ver a primeira requisição: algumas ferramentas contra bots e fraude
  • A própria camada de consentimento
VaiPara o contêiner
  • Análise
  • Pixels de publicidade e retargeting
  • Gravação de sessões
  • Widgets de chat e suporte
  • Players incorporados e widgets sociais

Um contêiner não consegue disparar nada cedo o bastante para chegar antes da primeira renderização.

A questão não é o que o script faz, e sim quando ele precisa agir. Qualquer coisa que tenha de rodar antes de a página renderizar fica no head e é bloqueada ali.

Como mover um script sem deixar uma cópia para trás?

  1. Primeiro, remova-o do head

    Não por último. Um script que existe nos dois lugares roda duas vezes, e a cópia no head roda sem bloqueio, então a tag de contêiner que você acabou de criar não prova nada. Essa é a forma mais comum de uma migração parecer concluída sem mudar nada.

  2. Recrie-o como uma tag

    Uma tag de HTML personalizado com o trecho de código do fornecedor, ou o template do próprio fornecedor, se a galeria tiver um. Prefira o template: ele expõe os parâmetros do fornecedor como campos de verdade e costuma vir com as configurações de consentimento já declaradas.

  3. Defina as configurações de consentimento na tag, não só no gatilho

    Em uma tag web, essas opções ficam em Advanced Settings e depois Consent Settings. Ali você exige consentimento adicional para a tag disparar e indica os tipos de consentimento de que ela depende. O Google documenta esse painel na sua visão geral de consentimento do Tag Manager. O gatilho é o outro controle. Você quer os dois, pelo motivo da próxima seção.

  4. Publique e depois teste na página no ar

    O modo de preview roda com a ligação de depuração do contêiner e, muitas vezes, com um estado de consentimento que você mesmo clicou um minuto antes. Ele é bom para confirmar que uma tag existe. Não é prova do que um visitante real recebe.

  5. Verifique os dois caminhos na página, não no contêiner

    No caminho da recusa, o fornecedor deve estar ausente do DOM e ausente do resource timing, ou seja, nada foi injetado e nada foi buscado. No caminho da aceitação, ele deve aparecer nos dois. O resource timing é o que importa: se o host do fornecedor foi buscado, ele foi buscado, não importa o que o contêiner tenha informado.

Uma exceção ao terceiro passo, e ela importa: tudo acima é orientação para scripts de fornecedores terceiros. As tags do próprio Google trazem verificações de consentimento integradas, então uma verificação de Additional Consent em uma tag do GA4 ou do Google Ads a bloqueia por completo em vez de ajustar o comportamento dela. Se você deve bloquear as tags do próprio Google até alguém consentir explica o porquê e como ler o que o seu contêiner está de fato fazendo.

Se o fornecedor ainda aparece no caminho da recusa depois de tudo isso, o script que você moveu provavelmente não é o que está disparando. Outra coisa na página o está carregando, o que é uma falha diferente, com diagnóstico próprio em por que o pixel do Facebook ainda carrega quando as suas tags estão bloqueadas.

Uma verificação de consentimento na tag é o mesmo que um gatilho que espera?

Essa é a distinção que decide se o bloqueio de fato se sustenta. Um gatilho controla quando uma tag é avaliada. As configurações de consentimento controlam se ela pode rodar depois de avaliada.

Bloqueie só com um gatilho e você terá coberto o primeiro carregamento da página e nada mais. Uma tag cujo gatilho é um evento posterior, um clique, um envio de formulário, uma mudança de rota em uma aplicação de página única, é avaliada de novo no momento em que esse evento acontece. Sem requisito de consentimento na tag, ela roda nessa hora, seja qual for a escolha do visitante.

Coloque o requisito também na tag e ele vale por qualquer caminho que leve até a tag. O gatilho diz quando considerar o disparo; as configurações de consentimento dizem se o disparo é permitido. Juntos, eles fazem do bloqueio uma propriedade da tag, e não de um único caminho até ela.

Um script que você chama de estritamente necessário pode pular o bloqueio?

A última restrição não é técnica. Às vezes se argumenta que um fornecedor é estritamente necessário para que ele possa rodar antes do consentimento, e de vez em quando o argumento procede. O que importa é que o aviso de consentimento e a tabela de cookies do próprio site digam a mesma coisa, palavra por palavra.

Se o seu aviso lista um fornecedor em uma categoria que o visitante é convidado a recusar, a tag precisa respeitar essa recusa. Um script rodando sem bloqueio enquanto a página diz ao visitante que ele pode recusá-lo é uma contradição que um regulador lê direto no seu próprio site, e é bem mais fácil de encontrar do que um contêiner mal configurado.

O Velo bloqueia por categoria na página e passa a mesma decisão para o contêiner, então a escolha do visitante chega à página e ao contêiner ao mesmo tempo.

Perguntas frequentes

O que as pessoas perguntam sobre este assunto.

Posso mover um script para o Google Tag Manager para que ele dependa do consentimento?

Normalmente sim, e para a maioria dos scripts de fornecedores é o movimento certo. Quando o script passa a ser uma tag em vez de marcação no head, ele só roda quando um gatilho o dispara e as configurações de consentimento permitem. As exceções são os scripts que precisam agir antes de o contêiner conseguir alcançá-los: qualquer coisa que tenha de rodar antes de a página renderizar, como testes A/B e personalização, qualquer coisa feita para observar a primeiríssima requisição, e a própria camada de consentimento, que não pode ficar atrás da decisão que ela existe para coletar. Esses ficam no head e são bloqueados ali, por categoria.

Quais scripts devem ficar no head do site?

Aqueles cujo trabalho depende de rodar cedo. Scripts de personalização e de testes A/B reescrevem a página antes da primeira renderização, então dispará-los a partir de um contêiner produz exatamente a cintilação que eles foram instalados para evitar. Algumas ferramentas contra bots e fraude são construídas em torno de ver o primeiro instante de uma visita. E o próprio banner de consentimento precisa rodar antes de existir qualquer decisão. Todo o resto, incluindo análise, publicidade e pixels de retargeting, gravação de sessões, widgets de chat e players incorporados, vai para um contêiner sem perder nada.

Uma verificação de consentimento na tag é o mesmo que bloqueá-la com um gatilho?

Não, e a diferença decide se o bloqueio se sustenta. Um gatilho controla quando uma tag é avaliada; as configurações de consentimento controlam se ela pode rodar depois de avaliada. Se você bloqueia só com um gatilho, cobriu o primeiro carregamento da página, mas uma tag disparada por um clique posterior, um envio de formulário ou uma mudança de rota é avaliada de novo nesse momento e vai rodar independentemente do que o visitante escolheu. Definir também o requisito de consentimento na tag faz do bloqueio uma propriedade da tag, e não de um único caminho até ela.

Como verifico se um script está realmente bloqueado antes do consentimento?

Teste na página publicada e não no modo de preview, porque o preview roda com a ligação de depuração e muitas vezes com um estado de consentimento que você mesmo definiu momentos antes. No caminho da recusa, o fornecedor deve estar ausente do DOM da página e ausente do resource timing, o que junto mostra que nada foi injetado e nada foi buscado. No caminho da aceitação, os dois devem mostrá-lo. O resource timing é o decisivo: se o host do fornecedor foi requisitado, ele foi requisitado, não importa o que o contêiner tenha informado.