Como ligar os Webhooks padrão ao Shopify Flow

Como ligar os Webhooks padrão ao Shopify Flow

Copiar página

Conecte Webhooks padrão ao Shopify Flow com verificação HMAC, para acionar fluxos de trabalho só com eventos fiáveis.

O Standard Webhooks é uma especificação aberta para a assinatura de webhooks, utilizada pela OpenAI, pelos Supabase Auth Hooks e por uma lista crescente de serviços. Uma predefinição abrange todos eles. O «Workflow Webhooks» transforma essa chamada num gatilho «Shopify Flow», para que a sua loja possa reagir a ela: marcar um cliente, adicionar uma nota ao pedido, enviar um e-mail interno, atualizar um metacampo - tudo o que o Shopify Flow pode fazer.

Este guia define todo o processo - o Standard Webhooks envia, o Workflow Webhooks recebe e verifica, e o Shopify Flow executa - com a assinatura HMAC do Standard Webhooks verificada em cada pedido, de modo a que apenas o Standard Webhooks possa iniciar o seu fluxo de trabalho.

O que pode construir

  • Receba um webhook da OpenAI - um trabalho em lote concluído ou uma resposta finalizada - e faça com que o Shopify Flow execute as ações necessárias com base no resultado na sua loja.
  • Reaja a um «hook» de autenticação do Supabase, para que um registo na sua própria aplicação associe o cliente correspondente no Shopify.
  • Receba notificações de qualquer serviço que siga a especificação do standardwebhooks.com sem ter de configurar uma assinatura personalizada.

Eventos típicos a enviar: qualquer evento definido pelo serviço de envio.

A mesma predefinição verifica também os webhooks da OpenAI e os Supabase Auth Hooks.

Antes de começar

  • Workflow Webhooks instalado na sua loja Shopify.
  • Shopify Flow instalada, que está disponível gratuitamente na App Store da Shopify.
  • Uma conta no Standard Webhooks com permissão para criar webhooks.

Passo 1 - Crie o webhook em Workflow Webhooks

  1. Aceda a Workflow Webhooks -> Webhooks -> Criar webhook e atribua-lhe um nome que consiga reconhecer no Shopify Flow, como, por exemplo, Standard Webhooks events.
  2. Na secção «Autenticação», selecione HMAC.
  3. Na secção «Fornecedor de assinatura», selecione «Webhooks padrão». A aplicação preenche automaticamente o cabeçalho, o algoritmo, o payload assinado e a janela de repetição - não há mais nada a configurar.
  4. Por enquanto, deixe o campo «segredo» em branco e clique em «Guardar». Copie o URL do webhook apresentado na página.

Consulte Autenticação para conhecer os outros modos de autenticação e Mapeamento da carga útil e variáveis de fluxo para saber como escolher quais os campos que são enviados para o Shopify Flow.

Passo 2 - Adicione o ponto de extremidade nos Webhooks Padrão

Adicione o URL como ponto final no serviço de envio e, em seguida, copie o segredo de assinatura que lhe é apresentado (começa por whsec_).

Como encontrar o seu segredo de assinatura dos Webhooks Padrão

O segredo de assinatura que começa por whsec_. Cole-o na íntegra; se for apresentado como v1,whsec_... (Supabase), omita o «v1,» inicial.

A própria documentação da Standard Webhooks sobre assinaturas de webhooks, disponível em, contém o texto exato e as capturas de ecrã relativas à sua conta.

Cole essa chave secreta no campo «Secret» do webhook em Workflow Webhooks e guarde. A partir desse momento, todas as entregas do Standard Webhooks serão verificadas antes de chegarem ao Shopify Flow.

O que isto verifica

O quê Valor
Cabeçalho da assinatura webhook-signature
Onde se encontra a assinatura O valor do cabeçalho, após o prefixo v1,
O que foi assinado {header:webhook-id}.{timestamp}.{body}
Assinatura HMAC-SHA256, codificado em base64
Data e hora O cabeçalho webhook-timestamp, em segundos Unix
Proteção contra a reprodução Os pedidos cujo carimbo temporal assinado se situe a mais de 5 minutos do momento atual são rejeitados
O segredo Decodificado em Base64 antes da utilização. O prefixo whsec_ é removido antes da decodificação. Cole-o exatamente como o remetente o apresenta

Na payload assinada, {body} corresponde ao corpo da solicitação em formato bruto, byte a byte; {timestamp} corresponde ao carimbo temporal acima; e {header:webhook-id} corresponde ao cabeçalho da solicitação webhook-id.

Um pedido que não cumpra qualquer um destes requisitos é rejeitado com o erro 401, é registado em Histórico e resolução de problemas e nunca dá início a um fluxo de trabalho.

Passo 3 - Criar o fluxo de trabalho Shopify Flow

  1. No «Shopify Flow», crie um fluxo de trabalho e selecione o gatilho «Workflow Webhooks».
  2. Clique em «Registar eventos» e, em seguida, envie um evento de teste a partir dos Webhooks Padrão (ou utilize a opção «Enviar teste» em Workflow Webhooks) para que o Shopify Flow aprenda a estrutura dos seus dados.
  3. Cada webhook de que dispõe aciona o mesmo gatilho do Shopify Flow; por isso, adicione uma primeira condição com base no ID do webhook para limitar este fluxo de trabalho apenas aos Webhooks Padrão. O ID é apresentado na página do webhook.
  4. Adicione as suas ações - identifique um cliente, adicione uma nota, envie um e-mail interno, atualize um metacampo.
Shopify Flow
Em Shopify Flow, selecione «Selecionar um gatilho», aceda a Workflow Webhooks e escolha «Gatilho de Webhook».
Condição do Shopify Flow: o ID do webhook é igual ao ID de um webhook
O primeiro passo de qualquer fluxo de trabalho: uma condição relativa ao ID do webhook, para que o fluxo de trabalho só seja executado para este webhook.
O fluxo de trabalho final: Gatilho do webhook, uma condição relativa ao ID do webhook e, em seguida, o envio de um e-mail interno no ramo «Verdadeiro»
O fluxo de trabalho final: gatilho, condição com base no ID do webhook e, em seguida, a sua ação no ramo «True».

Passo 4 - Teste-o de ponta a ponta

Gatilho para um evento real nos Webhooks Padrão. Em Workflow Webhooks -> Histórico, deverá ver a invocação com o estado «Sucesso». Se a assinatura estiver incorreta, será apresentada uma entrada com o estado «Falha» e o motivo correspondente; em Verificação de webhooks assinados, é explicada a ferramenta de verificação de assinaturas, que lhe mostra exatamente em que etapa ocorreu a falha.

Uma invocação foi aberta no History com os seus cabeçalhos de pedido, payload, estado, duração e identificadores
Um evento «Entregue» em «Histórico»: o estado «Sucesso» significa que Shopify Flow o aceitou.
A assinatura não corresponde

Por este pedido: o segredo (a causa mais comum - um espaço a mais ou uma chave do ambiente errado), se o remetente está a utilizar o segredo de um ponto de extremidade diferente e se algo entre os Webhooks Padrão e a aplicação reescreve o corpo. As assinaturas abrangem os bytes brutos, pelo que um proxy que reformata o JSON as invalida. O verificador de assinaturas na página do webhook mostra o texto exato que foi assinado.

Recebo um erro 401 em todas as solicitações

Verifique se a autenticação do webhook está definida como HMAC, com o fornecedor «Standard Webhooks» selecionado, se o segredo está preenchido e se o «Standard Webhooks» está a enviar dados para o URL exatamente como o aplicativo o apresenta, incluindo o código no final.

Não aparece nada no Histórico

O pedido nunca chegou. Verifique novamente o URL nos Webhooks Padrão e consulte o registo de entrega dos próprios Webhooks Padrão para ver a resposta que receberam. Um erro 404 significa que o webhook está incorreto ou foi eliminado; um erro 429 significa que ultrapassou o limite de invocações do seu plano - consulte Planos e utilização.

O fluxo de trabalho é executado para os eventos errados

Cada webhook da sua loja aciona o mesmo gatilho do Shopify Flow. Adicione uma condição com base no ID do webhook como primeiro passo do fluxo de trabalho ou restrinja os eventos que envia a partir dos Webhooks Padrão.

Os pedidos falham com a mensagem «carimbo temporal fora da tolerância»

O Standard Webhook assina um carimbo temporal e a aplicação rejeita qualquer evento com mais de 5 minutos. Normalmente, trata-se de um problema de relógio do lado do remetente ou de uma entrega que o Standard Webhook voltou a tentar muito mais tarde com o carimbo temporal original. As novas tentativas da mesma solicitação original não podem ser aceites; solicite ao Standard Webhook que envie um evento novo.

Relacionado