Como conectar Webhooks padrão ao Shopify Flow

Como conectar Webhooks padrão ao Shopify Flow

Copiar página

Conecte Webhooks padrão (OpenAI, Supabase) ao Shopify Flow, com verificação HMAC para acionar fluxos apenas com eventos confiáveis.

O Standard Webhooks é uma especificação aberta para a assinatura de webhooks, utilizada pela OpenAI, pelo Supabase Auth Hooks e por uma lista cada vez maior de serviços. Uma configuração pré-definida abrange todos eles. O “Workflow Webhooks” transforma essa chamada em um gatilho “Shopify Flow”, para que 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 fluxo - 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 solicitação, de modo que somente o Standard Webhooks possa iniciar seu fluxo de trabalho.

O que o senhor 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 uma ação com base no resultado em sua loja.
  • Reaja a um hook de autenticação do Supabase, de modo que um cadastro em seu próprio aplicativo associe o cliente correspondente no Shopify.
  • Receba notificações de qualquer serviço que siga a especificação do standardwebhooks.com sem precisar configurar uma assinatura personalizada.

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

Essa mesma configuração pré-definida também verifica os webhooks da OpenAI e do Supabase Auth Hooks.

Antes de começar

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

Etapa 1 - Crie o webhook em Workflow Webhooks

  1. Acesse Workflow Webhooks -> Webhooks -> Criar webhook e atribua a ele um nome que você reconheça no Shopify Flow, como Standard Webhooks events.
  2. Na seção “Autenticação”, selecione HMAC.
  3. Em “Provedor de assinatura”, selecione “Webhooks padrão”. O aplicativo preenche automaticamente o cabeçalho, o algoritmo, o payload assinado e a janela de repetição para você - não há mais nada a configurar.
  4. Deixe o campo “segredo” em branco por enquanto e clique em “Salvar”. Copie a URL da webhook exibida na página.

Consulte Autenticação para conhecer os outros modos de autenticação e Mapeamento de payload e variáveis de fluxo para escolher quais campos serão enviados para Shopify Flow.

Etapa 2 - Adicione o endpoint em “Webhooks padrão”

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

Como localizar seu segredo de assinatura do Standard Webhook

O segredo de assinatura que começa com whsec_. Cole-o na íntegra; se ele for exibido como v1,whsec_... (Supabase), omita o “v1,” inicial.

A própria documentação do Standard Webhooks sobre assinaturas de webhooks, disponível em, contém o texto exato e as capturas de tela específicas para a sua conta.

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

O que isso verifica

O que Valor
Cabeçalho de assinatura webhook-signature
Onde fica 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 do Unix
Proteção contra reprodução As solicitações cujo carimbo de data e hora assinado esteja a mais de 5 minutos do momento atual são rejeitadas
O segredo Decodificado em Base64 antes do uso. O whsec_ inicial é removido antes da decodificação. Cole exatamente como o remetente o apresenta

Na payload assinada, {body} corresponde ao corpo bruto da solicitação, byte por byte; {timestamp} corresponde ao carimbo de data/hora mencionado acima; e {header:webhook-id} corresponde ao cabeçalho da solicitação webhook-id.

Uma solicitação que não atenda a qualquer um desses requisitos é rejeitada com o código de erro 401, é registrada em Histórico e solução de problemas e nunca inicia um fluxo de trabalho.

Etapa 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 “Registrar 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 o formato dos seus dados.
  3. Cada webhook de que o senhor dispõe aciona o mesmo gatilho do Shopify Flow; portanto, adicione uma primeira condição com base no ID do webhook para restringir esse fluxo de trabalho apenas aos Webhooks Padrão. O ID é exibido na página do webhook.
  4. Adicione suas ações - marque um cliente, adicione uma nota, envie um e-mail interno, atualize um metacampo.
Shopify Flow
Em Shopify Flow, selecione “Selecionar um gatilho”, acesse 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 todo fluxo de trabalho: uma condição baseada no ID do webhook, para que o fluxo de trabalho seja executado apenas para esse webhook.
O fluxo de trabalho finalizado: Gatilho de webhook, uma condição baseada no ID do webhook e, em seguida, o envio de um e-mail interno no ramo “Verdadeiro”
O fluxo de trabalho finalizado: gatilho, condição baseada no ID do webhook e, em seguida, sua ação no ramo “Verdadeiro”.

Etapa 4 - Teste de ponta a ponta

Gatilho de evento real nos Webhooks Padrão. Em Workflow Webhooks -> Histórico, vocês deverão ver a invocação com o status “Sucesso”. Caso a assinatura esteja incorreta, será exibida uma entrada com status de falha e o motivo correspondente; além disso, Verificação de webhooks assinados explica como funciona o verificador de assinaturas, que mostra exatamente qual etapa falhou.

Uma invocação foi aberta no History com seus cabeçalhos de solicitação, payload, status, duração e identificadores
Um evento registrado no History: o status “Sucesso” significa que Shopify Flow o aceitou.
A assinatura não corresponde

Nesta ordem: o segredo (a causa mais comum - um espaço a mais ou uma chave do ambiente errado), se o remetente está utilizando o segredo de um endpoint diferente e se algo entre os Webhooks Padrão e o aplicativo reescreve o corpo da mensagem. As assinaturas abrangem os bytes brutos; portanto, 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á configurada como HMAC com o provedor “Standard Webhooks” selecionado, se o segredo está preenchido e se o “Standard Webhooks” está enviando a solicitação para a URL exatamente como o aplicativo a exibe, incluindo o código no final.

Não há nada no Histórico

A solicitação nunca foi recebida. Verifique novamente a URL no Standard Webhooks e consulte o próprio registro de entrega do Standard Webhooks para verificar a resposta recebida. Um código de erro 404 indica um webhook incorreto ou excluído; um código de erro 429 significa que você ultrapassou o limite de invocações do seu plano - consulte Planos e uso.

O fluxo de trabalho é executado para os eventos incorretos

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

As solicitações falham com a mensagem “carimbo de data/hora fora da tolerância”

O Standard Webhooks assina um carimbo de data e hora, e o aplicativo rejeita qualquer evento com mais de 5 minutos. Normalmente, isso se deve a um problema de relógio no lado do remetente ou a uma entrega que o Standard Webhooks tentou novamente muito tempo depois, mantendo o carimbo de data e hora original. Novas tentativas decorrentes da mesma solicitação original não são permitidas; solicite ao Standard Webhooks que envie um novo evento.

Relacionado