SHOPIFY ORDER GET - Buscar Pedido do Shopify
O que é este Node?
O SHOPIFY ORDER GET é o node responsável por buscar dados de um pedido específico no Shopify usando seu ID, retornando informações completas como itens, cliente, status de pagamento e entrega.
Por que este Node existe?
Consultar pedidos é essencial para atendimento e logística. O SHOPIFY ORDER GET existe para:
- Rastreamento: Verificar status de pedido para informar cliente
- Atendimento: Buscar detalhes do pedido durante suporte
- Validação: Confirmar pagamento antes de processar
- Integração: Sincronizar pedidos com sistemas de logística/ERP
- Relatórios: Analisar dados de vendas específicas
Como funciona internamente?
Quando o SHOPIFY ORDER GET é executado, o sistema:
- Valida credenciais (shopName e accessToken)
- Extrai orderId do parâmetro ou variável
- Envia requisição GET para
/admin/api/{version}/orders/{orderId}.json - Recebe dados completos do pedido
- Salva resultado na variável especificada
- Continua flow para próximo node
Código interno (shopify.executor.ts:60-64):
case 'get': {
const orderId = this.replaceVariables(node.data.orderId, context.variables);
const response = await axios.get(`${baseUrl}/orders/${orderId}.json`, { headers });
result = response.data;
break;
}
Quando você DEVE usar este Node?
Use SHOPIFY ORDER GET quando precisar consultar dados de pedido:
Casos de uso:
- Rastreamento: "Cliente pergunta: 'Onde está meu pedido #1234?'"
- Confirmação: "Verificar se pagamento foi confirmado"
- Status: "Checar se pedido foi enviado/entregue"
- Detalhes: "Ver itens comprados em pedido específico"
- Suporte: "Buscar informações para resolver problema do cliente"
Quando NÃO usar:
- Listar pedidos: Use SHOPIFY ORDER LIST
- Cancelar pedido: Use SHOPIFY ORDER CANCEL
- Marcar como enviado: Use SHOPIFY ORDER FULFILL
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| config.shopName | string | Sim | Nome da loja (sem .myshopify.com) |
| config.accessToken | string | Sim | Token de acesso da API |
| config.apiVersion | string | Não | Versão da API (padrão: 2025-01) |
| orderId | string/number | Sim | ID do pedido no Shopify |
| responseVariable | string | Não | Nome da variável (padrão: shopifyResult) |
Exemplo 1: Rastreamento de Pedido via WhatsApp
Objetivo: Cliente informa número do pedido e recebe status de entrega.
JSON para Importar
{
"name": "Shopify - Rastreamento de Pedido",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "message_1",
"type": "message",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Boas-vindas",
"parameters": {
"message": "Olá! Vou consultar o status do seu pedido."
}
}
},
{
"id": "input_1",
"type": "input",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Número do Pedido",
"parameters": {
"message": "Digite o número do pedido:",
"variable": "orderId"
}
}
},
{
"id": "shopify_1",
"type": "shopify",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Buscar Pedido",
"operation": "get",
"resource": "orders",
"config": {
"shopName": "minhaloja",
"accessToken": "shpat_xxxxxxxxxxxxx",
"apiVersion": "2025-01"
},
"orderId": "{{orderId}}",
"responseVariable": "order"
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Status",
"parameters": {
"message": "📦 STATUS DO PEDIDO #{{order.order.order_number}}\n\n🛍️ Itens: {{order.order.line_items.length}} produto(s)\n💰 Total: R$ {{order.order.total_price}}\n💳 Pagamento: {{order.order.financial_status}}\n📮 Envio: {{order.order.fulfillment_status}}\n📅 Data: {{order.order.created_at}}\n\n✉️ Cliente: {{order.order.customer.first_name}} {{order.order.customer.last_name}}\n📧 Email: {{order.order.email}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "message_1" },
{ "source": "message_1", "target": "input_1" },
{ "source": "input_1", "target": "shopify_1" },
{ "source": "shopify_1", "target": "message_2" },
{ "source": "message_2", "target": "end_1" }
]
}
Saída esperada:
Sistema: Olá! Vou consultar o status do seu pedido.
Sistema: Digite o número do pedido:
Usuário: 5234567890123
Sistema: 📦 STATUS DO PEDIDO #1234
🛍️ Itens: 2 produto(s)
💰 Total: R$ 349.80
💳 Pagamento: paid
📮 Envio: fulfilled
📅 Data: 2025-01-10T14:30:00-03:00
✉️ Cliente: João Silva
📧 Email: joao@example.com
Exemplo 2: Verificar Pagamento Antes de Processar
Objetivo: Confirmar que pagamento foi aprovado antes de enviar pedido.
JSON para Importar
{
"name": "Shopify - Verificar Pagamento",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 300, "y": 100 },
"data": {
"label": "ID do Pedido",
"parameters": {
"assignments": [
{ "variable": "orderId", "value": "5234567890123" }
]
}
}
},
{
"id": "shopify_1",
"type": "shopify",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Buscar Pedido",
"operation": "get",
"resource": "orders",
"config": {
"shopName": "minhaloja",
"accessToken": "shpat_xxxxxxxxxxxxx",
"apiVersion": "2025-01"
},
"orderId": "{{orderId}}",
"responseVariable": "orderData"
}
},
{
"id": "condition_1",
"type": "condition",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Pagamento OK?",
"parameters": {
"conditions": [
{
"variable": "orderData.order.financial_status",
"operator": "==",
"value": "paid"
}
],
"operator": "AND"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 900, "y": 50 },
"data": {
"label": "Pagamento Aprovado",
"parameters": {
"message": "✅ PAGAMENTO CONFIRMADO\n\nPedido #{{orderData.order.order_number}}\nCliente: {{orderData.order.customer.first_name}}\nValor: R$ {{orderData.order.total_price}}\n\nPedido pode ser processado!"
}
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 900, "y": 150 },
"data": {
"label": "Pagamento Pendente",
"parameters": {
"message": "⚠️ PAGAMENTO PENDENTE\n\nPedido #{{orderData.order.order_number}}\nStatus: {{orderData.order.financial_status}}\n\nAguardar confirmação do pagamento antes de processar."
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "shopify_1" },
{ "source": "shopify_1", "target": "condition_1" },
{ "source": "condition_1", "target": "message_1", "label": "true" },
{ "source": "condition_1", "target": "message_2", "label": "false" },
{ "source": "message_1", "target": "end_1" },
{ "source": "message_2", "target": "end_1" }
]
}
Saída esperada (pago):
Sistema: ✅ PAGAMENTO CONFIRMADO
Pedido #1234
Cliente: João
Valor: R$ 349.80
Pedido pode ser processado!
Saída esperada (pendente):
Sistema: ⚠️ PAGAMENTO PENDENTE
Pedido #1234
Status: pending
Aguardar confirmação do pagamento antes de processar.
Exemplo 3: Exibir Itens do Pedido
Objetivo: Mostrar lista detalhada de produtos comprados no pedido.
JSON para Importar
{
"name": "Shopify - Itens do Pedido",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Número",
"parameters": {
"message": "Digite o número do pedido:",
"variable": "orderId"
}
}
},
{
"id": "shopify_1",
"type": "shopify",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Buscar",
"operation": "get",
"resource": "orders",
"config": {
"shopName": "minhaloja",
"accessToken": "shpat_xxxxxxxxxxxxx",
"apiVersion": "2025-01"
},
"orderId": "{{orderId}}",
"responseVariable": "order"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Cabeçalho",
"parameters": {
"message": "📦 PEDIDO #{{order.order.order_number}}\n\nCliente: {{order.order.customer.first_name}} {{order.order.customer.last_name}}\nData: {{order.order.created_at}}\n\n🛍️ ITENS COMPRADOS:"
}
}
},
{
"id": "loop_1",
"type": "loop",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Loop Itens",
"parameters": {
"items": "{{order.order.line_items}}",
"itemVariable": "item",
"indexVariable": "i"
}
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Item",
"parameters": {
"message": "{{i + 1}}. {{item.title}}\n Qtd: {{item.quantity}}x\n Preço: R$ {{item.price}}\n Subtotal: R$ {{item.quantity * item.price}}"
}
}
},
{
"id": "merge_1",
"type": "merge",
"position": { "x": 1300, "y": 100 },
"data": { "label": "Próximo" }
},
{
"id": "message_3",
"type": "message",
"position": { "x": 1500, "y": 100 },
"data": {
"label": "Total",
"parameters": {
"message": "━━━━━━━━━━━━━━━\n💰 TOTAL: R$ {{order.order.total_price}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "shopify_1" },
{ "source": "shopify_1", "target": "message_1" },
{ "source": "message_1", "target": "loop_1" },
{ "source": "loop_1", "target": "message_2" },
{ "source": "message_2", "target": "merge_1" },
{ "source": "merge_1", "target": "loop_1", "label": "next" },
{ "source": "loop_1", "target": "message_3", "label": "done" },
{ "source": "message_3", "target": "end_1" }
]
}
Saída esperada:
Sistema: Digite o número do pedido:
Usuário: 5234567890123
Sistema: 📦 PEDIDO #1234
Cliente: João Silva
Data: 2025-01-10T14:30:00-03:00
🛍️ ITENS COMPRADOS:
Sistema: 1. Camiseta Básica Preta
Qtd: 2x
Preço: R$ 49.90
Subtotal: R$ 99.80
Sistema: 2. Tênis Nike Air
Qtd: 1x
Preço: R$ 299.90
Subtotal: R$ 299.90
Sistema: ━━━━━━━━━━━━━━━
💰 TOTAL: R$ 399.70
Resposta do Node
{
"order": {
"id": 5234567890123,
"order_number": 1234,
"email": "joao@example.com",
"created_at": "2025-01-10T14:30:00-03:00",
"updated_at": "2025-01-10T15:00:00-03:00",
"total_price": "349.80",
"subtotal_price": "319.80",
"total_tax": "0.00",
"currency": "BRL",
"financial_status": "paid",
"fulfillment_status": "fulfilled",
"customer": {
"id": 6234567890,
"email": "joao@example.com",
"first_name": "João",
"last_name": "Silva",
"phone": "+5511999999999"
},
"billing_address": {
"first_name": "João",
"last_name": "Silva",
"address1": "Rua Exemplo, 123",
"city": "São Paulo",
"province": "SP",
"country": "Brazil",
"zip": "01234-567"
},
"shipping_address": {
"first_name": "João",
"last_name": "Silva",
"address1": "Rua Exemplo, 123",
"city": "São Paulo",
"province": "SP",
"country": "Brazil",
"zip": "01234-567"
},
"line_items": [
{
"id": 12345678901234,
"title": "Camiseta Básica Preta",
"quantity": 2,
"price": "49.90",
"sku": "CAM-BASIC-P",
"product_id": 8234567890123,
"variant_id": 44567890123456
},
{
"id": 12345678901235,
"title": "Tênis Nike Air",
"quantity": 1,
"price": "299.90",
"sku": "TEN-NIKE-42",
"product_id": 8234567890456,
"variant_id": 44567890456789
}
],
"shipping_lines": [
{
"title": "Correios PAC",
"price": "30.00",
"code": "PAC"
}
]
}
}
Boas Práticas
SIM: - Sempre valide se pedido existe antes de acessar dados - Verifique financial_status antes de processar envio - Use order_number (legível) ao invés de id nas mensagens - Trate casos onde fulfillment_status é null (ainda não enviado) - Armazene dados importantes em variáveis para uso posterior
NÃO: - Não assuma que pedido sempre terá fulfillment_status - Não exponha dados sensíveis do cliente sem autorização - Não ignore erros 404 (pedido não encontrado) - Não acesse line_items[0] sem verificar se array existe
Dicas
Dica 1 - Status de Pagamento: Valores possíveis: pending, authorized, paid, partially_refunded, refunded, voided.
Dica 2 - Status de Envio: Valores possíveis: null (não enviado), partial, fulfilled.
Dica 3 - Order Number: Use order_number (1234) ao invés de id (5234567890123) para exibir ao cliente.
Dica 4 - Endereços: Pedidos têm billing_address (cobrança) e shipping_address (entrega) separados.
Dica 5 - Line Items: Itens do pedido estão em array line_items - use loop para processar todos.
Dica 6 - Moeda: Campo currency indica a moeda (BRL, USD, EUR, etc.).
Próximo Node
→ SHOPIFY ORDER LIST - Listar múltiplos pedidos → SHOPIFY ORDER CANCEL - Cancelar pedido → SHOPIFY ORDER FULFILL - Marcar como enviado