Gatilhos personalizados da loja virtual

Gatilhos personalizados da loja virtual

Copiar página

Crie gatilhos personalizados do Shopify Flow com uma linha de JavaScript, para eventos como abertura do carrinho ou lista de desejos.

Os gatilhos integrados da loja virtual abrangem os eventos relatados em Shopify. Um gatilho personalizado da loja virtual abrange tudo o resto que ocorre na sua loja virtual: basta publicar um evento a partir do seu tema com uma linha de JavaScript, e este torna-se um gatilho que pode utilizar em Shopify Flow.

O exemplo mais claro é a gaveta do carrinho. O evento «view» do carrinho de Shopify é acionado na página /cart, e a maioria dos temas modernos nunca navega até lá - em vez disso, abrem a gaveta através de um efeito deslizante. Shopify não regista nada, pelo que nenhuma aplicação consegue detetá-lo. Publicar o seu próprio evento quando a gaveta se abre colmata essa lacuna.

Outras finalidades para as quais as lojas o utilizam:

  • Uma adição à lista de desejos ou um clique na opção «Notificar-me», nenhuma das quais é registada pelo Shopify.
  • A consulta de um guia de tamanhos ou de uma política de devoluções, como indicação sobre um produto.
  • Uma alteração na variante do seletor, que não constitui uma nova visualização da página (consulte Acionadores da loja virtual).
  • Qualquer informação que o seu tema ou uma aplicação de terceiros já conheça e que Shopify não conheça.

Como funciona

  1. Crie o gatilho na aplicação e atribua-lhe um nome de evento, por exemplo, cart_drawer_opened. Tal como qualquer gatilho da loja virtual, este necessita do acesso ao «Comportamento da Loja Virtual», que é concedido uma única vez na página «Permissões».
  2. Copie o fragmento de código de uma linha que a aplicação lhe mostra e cole-o no seu tema, no local onde essa ação ocorre. Se não tiver a certeza do que deve colar ou onde, o site Gerar código de gatilho com IA gera o fragmento de código para o seu tema a partir de uma descrição em linguagem simples.
  3. Escreva uma transformação se pretender filtrar ou alterar o formato do que é enviado, ou deixe em branco para reencaminhar tudo.
  4. Ative-o e, em seguida, adicione o «Custom Storefront Trigger» no Shopify Flow e crie uma ramificação com base no nome do evento.

Este fragmento de código representa toda a integração do lado do tema:

O editor do «Gatilho personalizado da loja virtual», com o nome, o nome do evento e o fragmento de código a adicionar ao tema
Um gatilho personalizado da loja virtual: o nome do evento é o que o seu tema publica, e o editor fornece-lhe o fragmento de código para copiar.
Publish the event from your themejavascript
Shopify.analytics.publish("cart_drawer_opened", {
  // anything you want the Flow to receive
  itemCount: 3,
  total: "129.90"
});

Atribuição de um nome ao evento

O nome do evento é o que determina a ramificação do seu fluxo de trabalho no Shopify Flow; por isso, escolha algo legível e não o altere depois de os fluxos de trabalho o terem começado a utilizar.

Os nomes podem conter letras, números, sublinhados e hífens, têm de começar por uma letra ou um número e podem ter até 64 caracteres. A aplicação transforma o que digitar em um «slug», pelo que Cart drawer opened passa a ser cart_drawer_opened.

O nome está associado a um espaço de nomes interno, pelo que nunca poderá entrar em conflito com um evento Shopify ou com um gatilho personalizado de webhook com o mesmo nome.

Filtragem e remodelação

Os dados que passar como segundo argumento chegam ao Shopify Flow como o parâmetro output do gatilho. Se isso for tudo o que precisa, está tudo pronto.

Quando pretender disparar o evento apenas em determinados casos, ou enviar campos diferentes dos publicados pelo tema, crie uma transformação - o mesmo módulo JavaScript utilizado por Gatilhos personalizados. Devolva um objeto para disparar o evento; devolva null para ignorá-lo:

Only fire for drawers worth acting onjavascript
export async function transform(payload, topic, shop, ctx) {
  // Anything you published is on `payload`.
  if ((payload.itemCount || 0) < 2) return null;

  return {
    itemCount: payload.itemCount,
    total: payload.total,
    // Present only when the shopper is signed in.
    customerId: payload.customerId,
  };
}

Utilização no site Shopify Flow

Cada «Custom Storefront Trigger» surge no Shopify Flow com o mesmo nome: «Custom Storefront Trigger». Adicione-o a um fluxo de trabalho e, em seguida, adicione uma condição em que «eventName» seja igual ao nome que escolheu.

É isso que permite que um Shopify Flow acione todos os eventos da sua loja virtual. O gatilho inclui também o nome que lhe atribuiu na aplicação e o resultado da sua transformação.

Trata-se de uma funcionalidade deliberadamente distinta do «Gatilho personalizado», que está na base do Gatilhos personalizados baseado em webhooks. As duas diferem de uma forma que vale a pena conhecer: um «Gatilho personalizado» de webhook é executado nos nossos servidores e é fiável, enquanto um evento da loja virtual depende de o navegador do comprador chegar até nós e do seu consentimento para a análise de dados.

O que não deve enviar

O segundo argumento da função publish está inteiramente sob o seu controlo, o que significa que é da sua responsabilidade garantir que não contenha dados pessoais.

Envie identificadores e dados: IDs do produto e da variante, quantidades, preços e a descrição do que aconteceu. O ID do cliente que iniciou sessão é adicionado automaticamente, caso exista, pelo que nunca terá de o indicar manualmente.

Não envie nomes, endereços de e-mail, números de telefone ou endereços postais. O seu fluxo de trabalho pode obter qualquer uma dessas informações a partir do ID do cliente no Shopify Flow; por isso, não há qualquer vantagem em incluí-las num evento da loja virtual, e fazê-lo transforma um evento de análise num evento que envolve dados pessoais.

Isso consome a minha franquia do plano?

Sim. Todos os eventos que nos chegam contam, incluindo aqueles que a sua transformação ignora ao devolver null - a mesma regra que Gatilhos personalizados. Os eventos descartados no navegador por falta de consentimento nunca nos chegam e nunca contam.

Uma vez que é o senhor que decide onde o fragmento de código é inserido, controla diretamente o volume. Um evento de abertura de gaveta ocorre com muito menos frequência do que uma visualização de produto.

Posso publicar o mesmo evento a partir de mais do que um local?

Sim. O que importa é o nome, e não o local de onde é publicado. Incluir informação na Payload que indique a origem é uma boa ideia, caso pretenda que o fluxo de trabalho consiga distingui-los.

A abertura de duas gavetas conta como um único evento?

Não. Os eventos deliberados são mantidos separados, porque a publicação dupla significa, normalmente, que o evento ocorreu efetivamente duas vezes. Isto difere dos gatilhos integrados, que agrupam as repetições da mesma visualização de página.

Posso alterar o nome do evento mais tarde?

Pode fazê-lo, mas o seu fluxo de trabalho do Shopify Flow aplica um filtro com base nesse nome; por isso, alterar o nome interrompe a execução desse fluxo de trabalho até que atualize a condição - e terá de atualizar o fragmento de código no seu tema para que corresponda. Considere o nome como fixo assim que um fluxo de trabalho o utilizar.

Como posso testá-lo antes de o colocar em funcionamento na minha loja virtual?

A página do gatilho na aplicação inclui um teste que executa a sua transformação e aciona o seu fluxo de trabalho no Shopify Flow, para que possa observar o seu funcionamento de início a fim sem alterar o seu tema. Os testes não consomem a sua cota.

Assim que o snippet estiver incorporado no seu tema, a página «Histórico de eventos» apresenta os eventos em tempo real, à medida que estes vão ocorrendo.

Funciona nas páginas de checkout?

A publicação a partir do código do seu próprio tema abrange a página inicial da sua loja virtual. O processo de checkout é gerado pelo Shopify e não é possível adicionar código do tema a essa página; por isso, utilize, em vez disso, os gatilhos integrados «Erro no checkout apresentado» e «Código de desconto no checkout rejeitado».

Próximos passos