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 explica 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. Com uma atribuição simples, o que carregasse em segundo lugar sobrescreveria 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 setter 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 aninhamento | 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 da Skomi.
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 obteres a taxa de conversão dele.
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.