Pular para conteúdo

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:

  1. Limpeza de catálogo: Remover produtos descontinuados ou obsoletos
  2. Gerenciamento de estoque: Deletar produtos que não serão mais vendidos
  3. Automação de remoção: Remover produtos temporários após campanhas
  4. Integração: Sincronizar deleções entre sistemas

Como funciona internamente?

Quando o SHOPIFY PRODUCT DELETE é executado, o sistema:

  1. Valida credenciais e productId
  2. Envia requisição DELETE para /admin/api/{version}/products/{productId}.json
  3. Remove produto permanentemente do Shopify
  4. Retorna confirmação com ID do produto deletado
  5. Salva resultado na variável especificada
  6. 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:

  1. Produtos descontinuados: "Remover produtos que não fabricamos mais"
  2. Limpeza de testes: "Deletar produtos criados durante testes"
  3. Campanhas temporárias: "Remover produtos de Black Friday após evento"
  4. 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