Voltar ao blog
Novidades 27 de fevereiro de 2026 3 min de leitura

AI Web Push e Google Tag Manager

Este post mostra, de forma direta e prática, como usar os eventos do AI Web Push no Google Tag Manager (GTM), como ativar o debug e como criar métricas e conversões com base nesses eventos. Não precisa de SDK extra: tudo chega ao GTM via dataLayer.push.

Atualizado para a versão 1.9.3 do plugin. A versão 1.9.3 traz dois eventos novos, ai_web_push_permission_timeout e ai_web_push_subscription_skipped, e duas origens novas no push_source. O que mudou com o Chrome 155 está no post O aviso de notificação do Chrome mudou no Android.

Visão geral

Os eventos de push são enviados ao GTM via dataLayer com prefixo ai_web_push_... e provider ai_web_push.

O campo push_source indica a origem:

  • custom_modal: fluxo via modal personalizado.
  • native_prompt: fluxo direto no prompt do navegador.
  • site_controls indica que o visitante liberou a notificação depois, pelos controles do site no navegador. Aparece nos eventos de inscrição, a partir da versão 1.9.3.
  • permission_preexisting indica que o visitante já tinha dado a permissão no navegador, mas ainda não estava cadastrado no AI Web Push, e o plugin cadastra na visita seguinte. Aparece nos eventos de inscrição, a partir da versão 1.9.3.

A partir da versão 1.7.5, o plugin detecta automaticamente se o navegador suporta notificações push. Caso não suporte (WebViews do Instagram, Facebook, TikTok, iOS Safari fora de PWA, contextos sem HTTPS), o evento ai_web_push_browser_not_supported é disparado e o fluxo encerra sem erros.

Debug opcional: localStorage['ai-web-push-debug'] = 'true' para ver todos os eventos no console.

Eventos disponíveis

EventoQuando disparaCampos no dataLayer
ai_web_push_browser_not_supportedNavegador não suporta a API de notificações (WebViews, iOS Safari, contextos inseguros)push_provider: ai_web_push, push_source: native_prompt
ai_web_push_modal_shownModal personalizado foi exibidopush_provider: ai_web_push, push_source: custom_modal
ai_web_push_modal_acceptedUsuário clicou “Aceitar” no modal personalizadopush_provider: ai_web_push, push_source: custom_modal
ai_web_push_modal_dismissedUsuário clicou “Cancelar” no modal personalizado. Também sai depois de ai_web_push_permission_denied. A partir da versão 1.9.3, não sai mais quando o pedido do navegador expira ou é fechado sem resposta.push_provider: ai_web_push, push_source: custom_modal
ai_web_push_prompt_shownNotification.requestPermission() foi chamadopush_provider: ai_web_push, push_source: custom_modal ou native_prompt
ai_web_push_permission_grantedUsuário aceitou no prompt nativopush_provider: ai_web_push, push_source: custom_modal ou native_prompt
ai_web_push_permission_deniedUsuário negou o prompt nativo. Na versão 1.9.3 do plugin ou mais nova, o pedido que expira ou é fechado sem resposta não entra aqui, e vai para o ai_web_push_permission_timeout.push_provider: ai_web_push, push_source: custom_modal ou native_prompt
ai_web_push_permission_timeoutO pedido terminou sem resposta, porque expirou ou foi fechado. Não é recusa, e o leitor ainda pode aceitar depois. Disponível a partir da versão 1.9.3 do plugin.push_provider: ai_web_push, push_source: custom_modal ou native_prompt
ai_web_push_subscription_successToken FCM obtido e cadastro enviado ao servidor. O evento sai no envio e não confirma que o servidor salvou o inscrito.push_provider: ai_web_push, push_source: custom_modal, native_prompt, site_controls ou permission_preexisting
ai_web_push_subscription_skippedO navegador já estava cadastrado com o mesmo token, e o plugin não envia um cadastro novo. Disponível a partir da versão 1.9.3 do plugin.push_provider: ai_web_push, push_source: custom_modal, native_prompt, site_controls ou permission_preexisting
ai_web_push_subscription_errorErro ao obter token FCMpush_provider: ai_web_push, push_source: custom_modal, native_prompt, site_controls ou permission_preexisting

Formato do push no GTM

Cada evento gera um dataLayer.push neste formato:

{
  "event": "ai_web_push_<nome_do_evento>",
  "push_provider": "ai_web_push",
  "push_source": "custom_modal | native_prompt | site_controls | permission_preexisting"
}

Como ativar o debug (sem recarregar)

No console do navegador:

localStorage.setItem('ai-web-push-debug', 'true');
// para desativar:
// localStorage.removeItem('ai-web-push-debug');

Com o debug ativo, cada evento mostra no console:

  • Nome do evento (ai_web_push_*)
  • push_source e detalhes
  • Preview do objeto enviado ao dataLayer
  • Timestamp

Como testar os cenários

Navegador sem suporte (WebView, iOS Safari): Esperado: browser_not_supported. O fluxo encerra imediatamente, sem erros no console.

Modal personalizado, usuário aceita: Esperado: modal_shown → modal_accepted → prompt_shown → permission_granted → subscription_success.

Modal personalizado, usuário cancela: Esperado: modal_shown → modal_dismissed.

Modal personalizado, usuário aceita o modal mas nega o prompt: Esperado: modal_shown → modal_accepted → prompt_shown → permission_denied → modal_dismissed.

Prompt nativo direto (Chrome), usuário aceita: Esperado: prompt_shown → permission_granted → subscription_success.

Prompt nativo direto (Chrome), usuário nega: Esperado: prompt_shown → permission_denied → modal_dismissed.

Prompt nativo direto no Chrome 155 do Android, o visitante ignora e o aviso expira, ou fecha sem responder. Esperado a partir da versão 1.9.3, prompt_shown → permission_timeout, sem permission_denied. O pedido só volta depois do Intervalo de reexibição, em outra página.

O visitante deixou o pedido expirar e depois liberou a notificação pelos controles do site. Esperado a partir da versão 1.9.3, sem recarregar a página, subscription_success com push_source igual a site_controls. Se o mesmo navegador já estava cadastrado com o mesmo token, sai subscription_skipped.

Como criar tags no GTM

Trigger: Evento personalizado = ai_web_push_subscription_success

Variáveis úteis:

  • push_source para segmentar modal vs prompt.
  • push_provider (sempre ai_web_push — bom se houver outros provedores).

Tags recomendadas:

  • GA4: conversão de inscrição push.
  • Google Ads: conversão de lead/inscrição.
  • Facebook Pixel: evento customizado de inscrição.
  • Hotjar/Clarity: eventos de funil.

Tag adicional recomendada: Crie um trigger para ai_web_push_browser_not_supported e envie como evento ao GA4. Isso permite monitorar quantos visitantes acessam o site em navegadores sem suporte a push, ajudando a dimensionar o impacto real e ajustar a estratégia.

Gatilhos novos a partir da versão 1.9.3. Crie um gatilho de Evento personalizado para ai_web_push_permission_timeout e envie ao GA4 como evento, para separar quem não decidiu de quem negou. Não use o ai_web_push_subscription_skipped como conversão, porque ele indica um navegador que já estava cadastrado. Se você usa um gatilho único com a expressão regular ^ai_web_push_.*, como no tutorial Como criar relatórios de Web Push no GA4 via GTM, os eventos novos já entram nele sem mudança.

Captura manual (sem GTM)

Você pode ouvir os eventos no navegador:

aiWebPushFront.on('subscription_success', (detail) => {
  console.log('Nova inscrição via', detail.source);
});

// Detectar navegadores sem suporte:
aiWebPushFront.on('browser_not_supported', (detail) => {
  console.log('Navegador não suporta push notifications');
  // Exemplo: esconder botão de push, exibir mensagem alternativa
});

Eventos disponíveis: browser_not_supported, modal_shown, modal_accepted, modal_dismissed, prompt_shown, permission_granted, permission_denied, permission_timeout, subscription_success, subscription_skipped, subscription_error.

Melhores práticas

  • Use push_source para comparar modal vs prompt nativo e otimizar a jornada.
  • Monitore subscription_error como alerta no GTM (quedas de conversão).
  • Monitore browser_not_supported para entender qual porcentagem de visitantes usa navegadores incompatíveis e ajustar a estratégia de engajamento.
  • Para medir recusa de verdade, use permission_denied. Quem não decidiu aparece em permission_timeout e ainda pode aceitar depois. Para comparar com o período antes da versão 1.9.3, some os dois.
  • subscription_success marca o envio do cadastro, não a confirmação do servidor.
  • Deixe o debug desligado em produção; ative apenas para troubleshooting.

Referências rápidas

  • Prefixo de evento: ai_web_push_...
  • Provider: ai_web_push
  • Debug: localStorage['ai-web-push-debug']='true'
  • Total de eventos da tabela, 11 a partir da versão 1.9.3, fora os de saída do WebView (veja a tabela em “Eventos disponíveis”)

Coloque em prática com o AI Web Push.

Notificações push 100% automáticas com IA: mais tráfego recorrente para o seu site.