SHOPIFY PRODUCT DELETE - Deletar Produto do Shopify
O que é este Node?
O SHOPIFY PRODUCT DELETE é o node responsável por remover permanentemente produtos da loja Shopify.
Por que este Node existe?
Remover produtos obsoletos é necessário para manter catálogo limpo. O SHOPIFY PRODUCT DELETE existe para:
- Limpeza de catálogo: Remover produtos descontinuados ou obsoletos
- Gerenciamento de estoque: Deletar produtos que não serão mais vendidos
- Automação de remoção: Remover produtos temporários após campanhas
- Integração: Sincronizar deleções entre sistemas
Como funciona internamente?
Quando o SHOPIFY PRODUCT DELETE é executado, o sistema:
- Valida credenciais e productId
- Envia requisição DELETE para
/admin/api/{version}/products/{productId}.json - Remove produto permanentemente do Shopify
- Retorna confirmação com ID do produto deletado
- Salva resultado na variável especificada
- Continua flow para próximo node
Código interno (shopify.executor.ts:46-50):
case 'delete': {
const productId = this.replaceVariables(node.data.productId, context.variables);
await axios.delete(`${baseUrl}/products/${productId}.json`, { headers });
result = { success: true, productId };
break;
}
Quando você DEVE usar este Node?
Use SHOPIFY PRODUCT DELETE quando precisar remover produtos permanentemente:
Casos de uso:
- Produtos descontinuados: "Remover produtos que não fabricamos mais"
- Limpeza de testes: "Deletar produtos criados durante testes"
- Campanhas temporárias: "Remover produtos de Black Friday após evento"
- Erro de cadastro: "Deletar produtos duplicados ou com erro"
Quando NÃO usar:
- Desativar temporariamente: Use SHOPIFY PRODUCT UPDATE com
status: "draft" - Sem estoque: Use UPDATE para arquivar, não delete (histórico de vendas)
- Produto vendido: NUNCA delete produtos com histórico de vendas
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 a deletar |
| responseVariable | string | Não | Nome da variável (padrão: shopifyResult) |
Exemplo 1: Deletar Produto com Confirmação
Objetivo: Deletar produto com confirmação do usuário para evitar exclusões acidentais.
JSON para Importar
{
"name": "Shopify - Deletar com Confirmação",
"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 a deletar:",
"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": "input_2",
"type": "input",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "⚠️ ATENÇÃO: Você está prestes a DELETAR permanentemente:\n\nProduto: {{product.product.title}}\nID: {{productId}}\nPreço: R$ {{product.product.variants[0].price}}\n\nDigite 'DELETAR' para confirmar:",
"variable": "confirmation"
}
}
},
{
"id": "condition_1",
"type": "condition",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Confirmou?",
"parameters": {
"conditions": [
{
"variable": "confirmation",
"operator": "==",
"value": "DELETAR"
}
],
"operator": "AND"
}
}
},
{
"id": "shopify_2",
"type": "shopify",
"position": { "x": 1100, "y": 50 },
"data": {
"label": "Deletar Produto",
"operation": "delete",
"resource": "products",
"config": {
"shopName": "minhaloja",
"accessToken": "shpat_xxxxxxxxxxxxx",
"apiVersion": "2025-01"
},
"productId": "{{productId}}",
"responseVariable": "deleteResult"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 1300, "y": 50 },
"data": {
"label": "Deletado",
"parameters": {
"message": "✅ Produto deletado com sucesso!\n\nProduto: {{product.product.title}}\nID: {{productId}}\n\nO produto foi removido permanentemente da sua loja."
}
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 1100, "y": 150 },
"data": {
"label": "Cancelado",
"parameters": {
"message": "❌ Operação cancelada!\n\nO produto NÃO foi deletado.\nVocê digitou: '{{confirmation}}'\nEsperado: 'DELETAR'"
}
}
},
{
"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": "input_2" },
{ "source": "input_2", "target": "condition_1" },
{ "source": "condition_1", "target": "shopify_2", "label": "true" },
{ "source": "condition_1", "target": "message_2", "label": "false" },
{ "source": "shopify_2", "target": "message_1" },
{ "source": "message_1", "target": "end_1" },
{ "source": "message_2", "target": "end_1" }
]
}
Saída esperada (confirmado):
Sistema: Digite o ID do produto a deletar:
Usuário: 8234567890123
Sistema: ⚠️ ATENÇÃO: Você está prestes a DELETAR permanentemente:
Produto: Camiseta Teste
ID: 8234567890123
Preço: R$ 49.90
Digite 'DELETAR' para confirmar:
Usuário: DELETAR
Sistema: ✅ Produto deletado com sucesso!
Produto: Camiseta Teste
ID: 8234567890123
O produto foi removido permanentemente da sua loja.
Saída esperada (cancelado):
Sistema: Digite o ID do produto a deletar:
Usuário: 8234567890123
Sistema: ⚠️ ATENÇÃO: Você está prestes a DELETAR permanentemente:
Produto: Camiseta Teste
ID: 8234567890123
Preço: R$ 49.90
Digite 'DELETAR' para confirmar:
Usuário: não
Sistema: ❌ Operação cancelada!
O produto NÃO foi deletado.
Você digitou: 'não'
Esperado: 'DELETAR'
Exemplo 2: Deletar Produtos de Teste em Massa
Objetivo: Limpar produtos de teste após desenvolvimento.
JSON para Importar
{
"name": "Shopify - Deletar Produtos Teste",
"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": "IDs para Deletar",
"parameters": {
"assignments": [
{ "variable": "testProductIds", "value": "[8234567890123, 8234567890456, 8234567890789]" }
]
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Iniciando",
"parameters": {
"message": "Iniciando limpeza de produtos de teste...\n\nTotal a deletar: 3 produtos"
}
}
},
{
"id": "shopify_1",
"type": "shopify",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Deletar Produto 1",
"operation": "delete",
"resource": "products",
"config": {
"shopName": "minhaloja",
"accessToken": "shpat_xxxxxxxxxxxxx",
"apiVersion": "2025-01"
},
"productId": "8234567890123",
"responseVariable": "delete1"
}
},
{
"id": "delay_1",
"type": "delay",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Aguardar",
"parameters": {
"duration": 1,
"unit": "seconds"
}
}
},
{
"id": "shopify_2",
"type": "shopify",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Deletar Produto 2",
"operation": "delete",
"resource": "products",
"config": {
"shopName": "minhaloja",
"accessToken": "shpat_xxxxxxxxxxxxx",
"apiVersion": "2025-01"
},
"productId": "8234567890456",
"responseVariable": "delete2"
}
},
{
"id": "delay_2",
"type": "delay",
"position": { "x": 1300, "y": 100 },
"data": {
"label": "Aguardar",
"parameters": {
"duration": 1,
"unit": "seconds"
}
}
},
{
"id": "shopify_3",
"type": "shopify",
"position": { "x": 1500, "y": 100 },
"data": {
"label": "Deletar Produto 3",
"operation": "delete",
"resource": "products",
"config": {
"shopName": "minhaloja",
"accessToken": "shpat_xxxxxxxxxxxxx",
"apiVersion": "2025-01"
},
"productId": "8234567890789",
"responseVariable": "delete3"
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 1700, "y": 100 },
"data": {
"label": "Concluído",
"parameters": {
"message": "✅ Limpeza concluída!\n\n3 produtos de teste foram deletados com sucesso."
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "message_1" },
{ "source": "message_1", "target": "shopify_1" },
{ "source": "shopify_1", "target": "delay_1" },
{ "source": "delay_1", "target": "shopify_2" },
{ "source": "shopify_2", "target": "delay_2" },
{ "source": "delay_2", "target": "shopify_3" },
{ "source": "shopify_3", "target": "message_2" },
{ "source": "message_2", "target": "end_1" }
]
}
Saída esperada:
Sistema: Iniciando limpeza de produtos de teste...
Total a deletar: 3 produtos
Sistema: ✅ Limpeza concluída!
3 produtos de teste foram deletados com sucesso.
Resposta do Node
{
"success": true,
"productId": "8234567890123"
}
Boas Práticas
SIM: - Sempre busque o produto antes para confirmar que existe - Implemente confirmação dupla para evitar exclusões acidentais - Verifique se produto NÃO tem histórico de vendas antes de deletar - Use delays entre múltiplas deleções (rate limiting) - Registre log de produtos deletados para auditoria
NÃO: - NUNCA delete produtos com vendas registradas (use archive) - Não delete sem confirmação do usuário - Não delete produtos em massa sem rate limiting - Não delete produtos ativos sem avisar equipe - Não ignore erros de deleção
Dicas
Dica 1 - Irreversível: Deleção é PERMANENTE - não há como recuperar. Use status: "archived" se quiser manter histórico.
Dica 2 - Histórico de Vendas: Produtos com pedidos associados devem ser arquivados, não deletados, para preservar relatórios.
Dica 3 - Confirmação: Sempre implemente confirmação explícita antes de deletar produtos.
Dica 4 - Rate Limiting: Shopify limita requisições - use delays entre múltiplas deleções (1-2 segundos).
Dica 5 - Teste: Teste em loja de desenvolvimento antes de implementar em produção.
Dica 6 - Alternativa: Considere usar status: "archived" ao invés de delete para manter registros.
Próximo Node
→ SHOPIFY PRODUCT UPDATE - Arquivar produto (alternativa segura) → SHOPIFY PRODUCT GET - Buscar produto antes de deletar → SHOPIFY PRODUCT LIST - Listar produtos para limpeza