Faça uma solicitação HTTP a partir de Shopify Flow
Por que utilizar isso para solicitações HTTP
Shopify Flow inclui uma ação integrada para enviar solicitações HTTP, mas ela está disponível apenas em determinados planos do Shopify. Se sua loja estiver no plano Básico, você ainda poderá chamar APIs externas utilizando Workflow Transactional Email.
Você cria a solicitação uma vez no aplicativo e, em seguida, a seleciona dentro do seu fluxo de trabalho usando a ação “Solicitação HTTP”. Manter a solicitação no aplicativo, em vez de no fluxo de trabalho, também significa que as credenciais nunca ficam armazenadas na configuração do Shopify Flow, e você obtém registro completo das solicitações e respostas sem custo adicional.
O que o(a) senhor(a) irá desenvolver
Um fluxo de trabalho que é executado a cada 10 minutos, identifica produtos que ainda não estão no Airtable e os envia para lá.
Isso utiliza:
- Segredos para armazenar o token e o ID da base do Airtable
- Solicitações HTTP para definir o modelo de solicitação
- A ação “Solicitação HTTP” disponível em Shopify Flow para executá-la
- Histórico para verificar o resultado
Guia em vídeo
Todo o processo: criação dos segredos, da solicitação HTTP e do fluxo de trabalho. O vídeo não tem som.
Antes de começar
- Workflow Transactional Email está instalado.
- O senhor tem acesso ao site Shopify Flow.
- O senhor possui um ID de base do Airtable e uma tabela pronta para receber dados de produtos.
- O(a) senhor(a) possui um token de acesso do Airtable do tipo com as permissões adequadas.
Etapa 1: Armazene as credenciais como segredos
Em vez de digitar as credenciais na solicitação, salve-as uma vez como segredos e faça referência a elas como {{ secrets.yourKeyName }}. Elas ficam criptografadas quando não estão em uso, podem ser reutilizadas em várias solicitações e são ocultadas do seu histórico.
Acesse “Segredos abertos” e clique em “Criar segredo”.

Insira a chave, o valor e uma descrição e, em seguida, salve.

Este exemplo armazena dois segredos: o token de acesso pessoal e o ID da base do Airtable.
Etapa 2: Criar a solicitação
Este exemplo utiliza o endpoint “create-records” do Airtable, disponível em .
Abra “Solicitações HTTP” e clique em “Criar solicitação”.

Dê a ele um nome claro, como “Criar registro de produto no Airtable” - é por esse nome que você irá procurá-lo posteriormente no site Shopify Flow.
Defina o método. Para criar registros no Airtable, utilize o método POST.
Insira o endpoint no campo URL. O prefixo https:// é fixo; portanto, digite o restante:
api.airtable.com/v0/{{ secrets.airTableProductsBaseId }}/Products
Esta imagem mostra como o endpoint do Airtable se mapeia à sua base, para que o senhor possa ajustá-lo de acordo com suas necessidades:

Adicione os cabeçalhos exigidos pelo Airtable:
Authorization: Bearer {{ secrets.airtableAccessToken }}
Content-Type: application/json
No corpo da solicitação, utilize uma variável para os registros, para que o Shopify Flow possa fornecê-los:
{
"records": {{ variables.records }}
}
O Airtable espera que essa variável resulte em um array com a seguinte estrutura:
"records": [
{
"fields": {
"Title": "Classic White T-Shirt",
"Handle": "classic-white-tshirt",
"Product ID": 1001
}
},
{
"fields": {
"Title": "Eco-Friendly Water Bottle",
"Handle": "eco-water-bottle",
"Product ID": 1002
}
}
]
Criaremos esse array no fluxo de trabalho na próxima etapa.
A solicitação final fica assim:



Salve a solicitação. Agora ela está disponível para seleção na ação “Solicitação HTTP” em Shopify Flow.
Etapa 3: Criar o fluxo de trabalho
Acesse Shopify Flow e crie um novo fluxo de trabalho.
Escolha um gatilho baseado em programação. Neste exemplo, a execução ocorre a cada 10 minutos para fins de demonstração - escolha um intervalo adequado para o ambiente de produção.

Recupere os produtos que ainda não estão no Airtable. Os produtos já enviados recebem a tag added-to-airtable na etapa final; portanto, essa consulta os exclui. Consulte a referência de argumentos de consulta do Shopify em.

Agora, formate os dados. O corpo da solicitação espera uma variável do tipo records; portanto, utilize a ação “Executar código” do Shopify Flow para organizar os produtos obtidos nessa matriz.

Configure a etapa da seguinte forma:

A consulta:
query {
getProductData {
id
handle
title
}
}
O código:
export default function main(input) {
const records = input.getProductData.map((data) => {
const numericId = parseInt(data.id.replace("gid://shopify/Product/", ""));
return {
fields: {
"Product ID": numericId,
"Title": data.title,
"Handle": data.handle
}
};
});
return {
records: JSON.stringify(records)
};
}
O esquema de saída:
"The output of Run Code"
type Output {
"The message returned by the script"
records: String
}
O senhor pode visualizar o resultado à direita:

Adicione a ação “Solicitação HTTP” fornecida por este aplicativo.

Quando solicitado, selecione a solicitação que você salvou - Criar registro de produto no Airtable - e, em seguida, salve e retorne ao fluxo de trabalho.

No campo “variáveis” da ação, insira os registros que você acabou de formatar:
{
"records": "{{runCode.records}}"
}

Por fim, percorra os produtos recuperados e marque-os com a tag added-to-airtable, para que a próxima execução não os selecione novamente.

Salve e ative o fluxo de trabalho.
Etapa 4: Confirme se funcionou
No Histórico, é possível verificar se a solicitação foi bem-sucedida e qual foi a resposta enviada pelo Airtable.

Abra o registro para verificar os dados da solicitação, os dados da resposta e o tempo de resposta.

Na página de edição da solicitação, o botão “Histórico da solicitação” leva diretamente ao histórico filtrado para essa solicitação específica.
Para quem o aplicativo não permite que o senhor ligue
As solicitações configuradas pelo lojista passam por um mecanismo de segurança. As solicitações para endereços de rede interna ou privada são recusadas, incluindo localhost, pontos de extremidade de metadados na nuvem e qualquer endereço que resolva para um intervalo privado - mesmo por meio de um redirecionamento. Caso você observe um erro mencionando SSRF blocked, o destino está nessa lista. As solicitações também seguem, no máximo, 5 redirecionamentos e têm um limite de resposta de 10 MB.
Shopify Flow O próprio sistema limita o tamanho de uma resposta de ação a 50 KB. Se uma resposta de teste for maior do que isso, o aplicativo bloqueia o salvamento, em vez de permitir que a etapa falhe dentro de um fluxo de trabalho ativo.
Melhores práticas
- Utilize nomes de solicitações claros para que sejam fáceis de localizar em Shopify Flow.
- Armazene os tokens da API como segredos, em vez de digitá-los nos cabeçalhos.
- Mantenha o corpo focado nos campos de que o destino realmente precisa.
- Verifique o histórico após qualquer alteração, para confirmar se a solicitação ainda é bem-sucedida.
- Adicione uma condição antes da solicitação para que ela não seja executada em ciclos vazios.
Relacionado
- Segredos - armazenamento de credenciais.
- Variáveis e Líquido - a referência à variável, incluindo a substituição no corpo do código.
- Histórico e solução de problemas - leitura de uma solicitação com falha.

