Se o teu sítio publica eventos de negócio no window.dataLayer (porque montaste o Google Tag Manager para o Google Analytics), esses eventos já chegam à Skomi. Não há nada para reescrever, nenhum adaptador para instalar, e nenhum segundo envio para acrescentar ao lado do primeiro.

Esta página é o que acontece, o que não acontece, e os limites que vale a pena conhecer antes de dependeres disto.

Nada para fazer

Instala o fragmento. A Skomi liga-se ao dataLayer e lê o que lá é enviado.

As duas formas funcionam:

// a forma de objeto
dataLayer.push({ event: 'purchase', value: 49.00, currency: 'EUR' });

// gtag, que envia os próprios argumentos em vez de um objeto
gtag('event', 'purchase', { value: 49.00, currency: 'EUR' });

Podes ficar com o GTM. Podes ficar com o Google Analytics a correr ao lado da Skomi enquanto os comparas; é essa a maneira sensata de migrar, e não há nada aqui que interfira com ela.

Porque funciona seja qual for o script que carregue primeiro

O GTM substitui o dataLayer.push pelo seu próprio invólucro quando o gtm.js acaba de carregar, e os dois scripts carregam de forma assíncrona. O que aterrasse em segundo lugar sobrescreveria pura e simplesmente o invólucro do outro e engoliria os eventos dele em silêncio.

A Skomi instala o push como um acessor, portanto a atribuição do GTM chega ao definidor e passa a ser a função para a qual a Skomi delega. O nosso fica à frente seja qual for o desfecho da corrida. Não tens de ordenar as tuas etiquetas.

O que é recolhido

O nome do evento: o event no objeto, ou o segundo argumento do gtag.

Todas as propriedades, achatadas em caminhos com pontos, porque as propriedades de um evento são guardadas como texto:

dataLayer.push({
  event: 'purchase',
  transaction_id: 'ORD-1234',
  value: 49.00,
  currency: 'EUR',
  ecommerce: { items: [{ item_name: 'Pro plan', price: 49.00 }] }
});

chega como transaction_id, value, currency, ecommerce.items.0.item_name, ecommerce.items.0.price.

O valor monetário, lido do value ou do ecommerce.value. O texto é aceite, porque os valores do dataLayer chegam muitas vezes de um modelo como texto.

A moeda, do currency ou do ecommerce.currency da mesma maneira. Um evento de comércio eletrónico do GA4 já traz o { value, currency } junto, portanto um sítio ligado ao Google está a enviar à Skomi uma compra completamente denominada sem dar por isso.

O número da encomenda. O servidor lê o transaction_id das propriedades, e uma repetição do mesmo número é deitada fora em vez de contada, o que importa mais do que parece. Uma página de confirmação dispara em todos os carregamentos: uma recarga, um botão de recuar, reabrir o email uma semana depois. Sem um número de encomenda, isso são três vendas.

O que não é recolhido

Os eventos de ciclo de vida do próprio GTM. Tudo o que esteja no espaço de nomes gtm., e as chaves que o GTM usa para controlar o seu próprio despacho: event, eventCallback, eventTimeout, eventModel, _clear. Não dizem nada sobre o teu negócio e ultrapassariam em número os eventos verdadeiros em várias vezes.

Tudo o que passe dos limites. São reais e vale a pena conhecê-los antes de dares com eles:

Limite Valor
Propriedades por evento 25
Profundidade de encaixe 3 níveis
Nome da propriedade 64 caracteres
Valor da propriedade 255 caracteres
Número da encomenda 128 caracteres

Um ecommerce.items grande não cabe. Cada item contribui com várias propriedades, portanto uma encomenda de dez linhas passa bem dos vinte e cinco e o resto é deitado fora em vez de cortado item a item. Se o detalhe por linha te importa, pertence aos relatórios da tua própria loja; a Skomi grava a encomenda, o valor dela e a moeda, não o conteúdo. Não há uma dimensão de produto em lado nenhum do produto.

As integrações do próprio Google. A sinalização do Consent Mode, a exportação de audiências, a ligação ao Google Ads. Isso é entre o GTM e o Google e a Skomi não faz parte disso.

Onde os eventos aparecem

Com os nomes deles, ao lado dos que a Skomi recolhe sozinha. Cada evento grava de onde veio: datalayer para estes, api para uma chamada skomi.track() escrita à mão, auto para as ligações para fora e os descarregamentos que a Skomi recolhe sem lhe pedirem, para que consigas distinguir um evento que pediste de um que apenas permitiste.

Transforma qualquer um deles num objetivo para teres uma taxa de conversão contra ele.

Se preferires chamá-lo diretamente

skomi.track('purchase', { plan: 'pro' }, 49.00, 'EUR', 'ORD-1234');

Nome, propriedades, valor, moeda, número da encomenda, os três últimos opcionais. Usa-o para eventos que não têm razão nenhuma para passar pelo GTM. Um sítio que não tem dataLayer nenhum não precisa de um.

Confirmar que resultou

Envia um evento de teste a partir da consola no domínio verdadeiro:

dataLayer.push({ event: 'test_event', value: 1, currency: 'EUR' });

Depois procura o test_event nos teus eventos. Se não estiver lá, percorre o que verificar quando o fragmento não funciona, e repara que o localhost não recolhe nada, porque não é o domínio que registaste.