SHOPIFY PRODUCT GET - Buscar Produto do Shopify
O que é este Node?
O SHOPIFY PRODUCT GET é o node responsável por buscar dados de um produto específico no Shopify usando seu ID, retornando informações completas como título, preço, estoque, variantes e imagens.
Por que este Node existe?
Buscar informações de produtos é essencial para automações. O SHOPIFY PRODUCT GET existe para:
- Consultar estoque: Verificar quantidade disponível antes de vender
- Validar produto: Confirmar se produto existe antes de operações
- Exibir detalhes: Mostrar informações do produto ao cliente
- Sincronização: Manter dados atualizados entre sistemas
Como funciona internamente?
Quando o SHOPIFY PRODUCT GET é executado, o sistema:
- Valida credenciais (shopName e accessToken)
- Extrai productId do parâmetro ou variável
- Envia requisição GET para
/admin/api/{version}/products/{productId}.json - Recebe dados completos do produto
- Salva resultado na variável especificada
- Continua flow para próximo node
Código interno (shopify.executor.ts:33-37):
case 'get': {
const productId = this.replaceVariables(node.data.productId, context.variables);
const response = await axios.get(`${baseUrl}/products/${productId}.json`, { headers });
result = response.data;
break;
}
Quando você DEVE usar este Node?
Use SHOPIFY PRODUCT GET quando precisar consultar dados de produto:
Casos de uso:
- Verificar estoque: "Consultar se produto tem estoque antes de vender"
- Exibir detalhes: "Mostrar preço e descrição ao cliente via WhatsApp"
- Validação: "Confirmar se produto existe antes de atualizar"
- Comparação de preços: "Verificar preço atual antes de aplicar desconto"
- Status do produto: "Checar se produto está ativo ou arquivado"
Quando NÃO usar:
- Criar produto: Use SHOPIFY PRODUCT CREATE
- Atualizar produto: Use SHOPIFY PRODUCT UPDATE
- Listar múltiplos produtos: Use SHOPIFY PRODUCT LIST
- Buscar por nome: Use SHOPIFY PRODUCT LIST com filtros
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) |
| productId | string/number | Sim | ID do produto no Shopify |
| responseVariable | string | Não | Nome da variável (padrão: shopifyResult) |
Exemplo 1: Consultar Estoque de Produto
Objetivo: Verificar se produto tem estoque disponível antes de permitir compra.
JSON para Importar
{
"name": "Shopify - Consultar Estoque",
"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": "ID do Produto",
"parameters": {
"message": "Digite o ID do produto:",
"variable": "productId"
}
}
},
{
"id": "shopify_1",
"type": "shopify",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Buscar Produto",
"operation": "get",
"resource": "products",
"config": {
"shopName": "minhaloja",
"accessToken": "shpat_xxxxxxxxxxxxx",
"apiVersion": "2025-01"
},
"productId": "{{productId}}",
"responseVariable": "product"
}
},
{
"id": "condition_1",
"type": "condition",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Tem Estoque?",
"parameters": {
"conditions": [
{
"variable": "product.product.variants[0].inventory_quantity",
"operator": ">",
"value": "0"
}
],
"operator": "AND"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 900, "y": 50 },
"data": {
"label": "Disponível",
"parameters": {
"message": "Produto disponível!\n\nNome: {{product.product.title}}\nPreço: R$ {{product.product.variants[0].price}}\nEstoque: {{product.product.variants[0].inventory_quantity}} unidades"
}
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 900, "y": 150 },
"data": {
"label": "Sem Estoque",
"parameters": {
"message": "Produto sem estoque!\n\nNome: {{product.product.title}}\nEstoque: ESGOTADO"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_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 (com estoque):
Sistema: Digite o ID do produto:
Usuário: 8234567890123
Sistema: Produto disponível!
Nome: Camiseta Básica Preta
Preço: R$ 49.90
Estoque: 50 unidades
Saída esperada (sem estoque):
Sistema: Digite o ID do produto:
Usuário: 8234567890456
Sistema: Produto sem estoque!
Nome: Tênis Nike Air
Estoque: ESGOTADO
Exemplo 2: Exibir Detalhes Completos do Produto
Objetivo: Mostrar informações detalhadas do produto ao cliente.
JSON para Importar
{
"name": "Shopify - Exibir Detalhes do Produto",
"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 Fixo",
"parameters": {
"assignments": [
{ "variable": "productId", "value": "8234567890123" }
]
}
}
},
{
"id": "shopify_1",
"type": "shopify",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Buscar Produto",
"operation": "get",
"resource": "products",
"config": {
"shopName": "minhaloja",
"accessToken": "shpat_xxxxxxxxxxxxx",
"apiVersion": "2025-01"
},
"productId": "{{productId}}",
"responseVariable": "productData"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Detalhes",
"parameters": {
"message": "📦 DETALHES DO PRODUTO\n\n🏷️ Nome: {{productData.product.title}}\n💰 Preço: R$ {{productData.product.variants[0].price}}\n📊 Estoque: {{productData.product.variants[0].inventory_quantity}} unidades\n🏢 Marca: {{productData.product.vendor}}\n📁 Categoria: {{productData.product.product_type}}\n✅ Status: {{productData.product.status}}\n\n📝 Descrição:\n{{productData.product.body_html}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "shopify_1" },
{ "source": "shopify_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: 📦 DETALHES DO PRODUTO
🏷️ Nome: Camiseta Básica Preta
💰 Preço: R$ 49.90
📊 Estoque: 50 unidades
🏢 Marca: Minha Marca
📁 Categoria: Roupas
✅ Status: active
📝 Descrição:
<p>Camiseta 100% algodão, confortável e durável.</p>
Exemplo 3: Validar Produto Antes de Atualizar
Objetivo: Verificar se produto existe antes de tentar atualizar.
JSON para Importar
{
"name": "Shopify - Validar Produto",
"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": "ID do Produto",
"parameters": {
"message": "Digite o ID do produto para atualizar:",
"variable": "updateProductId"
}
}
},
{
"id": "shopify_1",
"type": "shopify",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Buscar Produto",
"operation": "get",
"resource": "products",
"config": {
"shopName": "minhaloja",
"accessToken": "shpat_xxxxxxxxxxxxx",
"apiVersion": "2025-01"
},
"productId": "{{updateProductId}}",
"responseVariable": "existingProduct"
}
},
{
"id": "condition_1",
"type": "condition",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Produto Existe?",
"parameters": {
"conditions": [
{
"variable": "existingProduct.product.id",
"operator": "!=",
"value": ""
}
],
"operator": "AND"
}
}
},
{
"id": "number_1",
"type": "number",
"position": { "x": 900, "y": 50 },
"data": {
"label": "Novo Preço",
"parameters": {
"message": "Produto encontrado: {{existingProduct.product.title}}\n\nDigite o novo preço:",
"variable": "newPrice",
"min": 0.01,
"decimals": 2
}
}
},
{
"id": "shopify_2",
"type": "shopify",
"position": { "x": 1100, "y": 50 },
"data": {
"label": "Atualizar Preço",
"operation": "update",
"resource": "products",
"config": {
"shopName": "minhaloja",
"accessToken": "shpat_xxxxxxxxxxxxx",
"apiVersion": "2025-01"
},
"productId": "{{updateProductId}}",
"product": {
"variants": [
{
"id": "{{existingProduct.product.variants[0].id}}",
"price": "{{newPrice}}"
}
]
},
"responseVariable": "updatedProduct"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 1300, "y": 50 },
"data": {
"label": "Sucesso",
"parameters": {
"message": "Preço atualizado com sucesso!\n\nProduto: {{existingProduct.product.title}}\nPreço anterior: R$ {{existingProduct.product.variants[0].price}}\nNovo preço: R$ {{newPrice}}"
}
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 900, "y": 150 },
"data": {
"label": "Erro",
"parameters": {
"message": "Produto não encontrado com o ID: {{updateProductId}}\n\nVerifique se o ID está correto."
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1500, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "shopify_1" },
{ "source": "shopify_1", "target": "condition_1" },
{ "source": "condition_1", "target": "number_1", "label": "true" },
{ "source": "condition_1", "target": "message_2", "label": "false" },
{ "source": "number_1", "target": "shopify_2" },
{ "source": "shopify_2", "target": "message_1" },
{ "source": "message_1", "target": "end_1" },
{ "source": "message_2", "target": "end_1" }
]
}
Saída esperada (produto encontrado):
Sistema: Digite o ID do produto para atualizar:
Usuário: 8234567890123
Sistema: Produto encontrado: Camiseta Básica Preta
Digite o novo preço:
Usuário: 59.90
Sistema: Preço atualizado com sucesso!
Produto: Camiseta Básica Preta
Preço anterior: R$ 49.90
Novo preço: R$ 59.90
Saída esperada (produto não encontrado):
Sistema: Digite o ID do produto para atualizar:
Usuário: 99999999
Sistema: Produto não encontrado com o ID: 99999999
Verifique se o ID está correto.
Resposta do Node
{
"product": {
"id": 8234567890123,
"title": "Camiseta Básica Preta",
"body_html": "<p>Camiseta 100% algodão, confortável e durável.</p>",
"vendor": "Minha Marca",
"product_type": "Roupas",
"created_at": "2025-01-15T10:30:00-03:00",
"updated_at": "2025-01-15T10:30:00-03:00",
"published_at": "2025-01-15T10:30:00-03:00",
"status": "active",
"tags": "camiseta, algodão, básica",
"variants": [
{
"id": 44567890123456,
"product_id": 8234567890123,
"title": "Default Title",
"price": "49.90",
"sku": "CAM-BASIC-P",
"position": 1,
"inventory_quantity": 50,
"inventory_management": "shopify",
"created_at": "2025-01-15T10:30:00-03:00",
"updated_at": "2025-01-15T10:30:00-03:00"
}
],
"options": [
{
"id": 10234567890,
"product_id": 8234567890123,
"name": "Title",
"position": 1,
"values": ["Default Title"]
}
],
"images": [
{
"id": 29012345678,
"product_id": 8234567890123,
"position": 1,
"src": "https://cdn.shopify.com/s/files/1/0123/4567/products/camiseta.jpg",
"width": 1200,
"height": 1200
}
]
}
}
Boas Práticas
SIM: - Sempre valide se o produto existe antes de operações - Armazene o resultado em variável para uso posterior - Trate erros quando produto não for encontrado - Use IDs de produtos corretos (números grandes) - Verifique estoque antes de permitir compras
NÃO: - Não assuma que produto sempre existirá - Não ignore erros de busca - Não faça buscas desnecessárias (cache quando possível) - Não exponha dados sensíveis em logs
Dicas
Dica 1 - Validação: Sempre verifique se product.product.id existe na resposta antes de acessar outros campos.
Dica 2 - Variantes: Para produtos com variantes, acesse via product.product.variants[0] para a primeira variante.
Dica 3 - Imagens: As imagens estão em product.product.images como array de objetos com campo src.
Dica 4 - Estoque: O estoque de cada variante está em variants[X].inventory_quantity.
Dica 5 - Cache: Em flows com múltiplas consultas ao mesmo produto, salve o resultado em variável global.
Dica 6 - Erro 404: Se produto não existir, a API retorna erro 404 - trate isso com try/catch ou condition.
Próximo Node
→ SHOPIFY PRODUCT CREATE - Criar novo produto → SHOPIFY PRODUCT UPDATE - Atualizar produto existente → SHOPIFY PRODUCT LIST - Listar todos os produtos