{
  "name": "PLUMA - Alertas de saldo das contas de ads",
  "nodes": [
    {
      "parameters": {},
      "id": "8f5bf8bc-c24a-4a64-a0bb-9f9dcf6007f5",
      "name": "Rodar manualmente para teste",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -900,
        -180
      ]
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 6
            }
          ]
        }
      },
      "id": "9c43ad6d-69c4-428f-98c7-fc7968e21212",
      "name": "Checagem a cada 6 horas",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        -900,
        40
      ]
    },
    {
      "parameters": {
        "jsCode": "// Substitua por Google Sheets, Airtable ou API de billing/ads em produção.\n// Cada item representa uma conta de anúncios monitorada.\nreturn [\n  {\n    json: {\n      cliente: 'Cliente Exemplo 01',\n      conta_ads: 'Meta Ads | Conta A',\n      responsavel_email: 'gestor@exemplo.com',\n      saldo_atual: 86.40,\n      limite_alerta: 120.00,\n      moeda: 'BRL',\n      prioridade: 'alta'\n    }\n  },\n  {\n    json: {\n      cliente: 'Cliente Exemplo 02',\n      conta_ads: 'Google Ads | Conta B',\n      responsavel_email: 'gestor@exemplo.com',\n      saldo_atual: 540.00,\n      limite_alerta: 150.00,\n      moeda: 'BRL',\n      prioridade: 'normal'\n    }\n  }\n];"
      },
      "id": "56da0621-a438-48ae-90b8-cff652d12044",
      "name": "Buscar contas monitoradas",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -640,
        -70
      ]
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "id": "saldo-baixo",
              "leftValue": "={{ $json.saldo_atual }}",
              "rightValue": "={{ $json.limite_alerta }}",
              "operator": {
                "type": "number",
                "operation": "lte"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "bfd33807-8488-4ef8-ac1c-0cca9edd7122",
      "name": "Saldo abaixo do limite?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        -360,
        -70
      ]
    },
    {
      "parameters": {
        "jsCode": "function brl(value) {\n  return Number(value || 0).toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' });\n}\n\nreturn items.map((item) => {\n  const d = item.json;\n  const mensagem = `\nAlerta de saldo baixo\n\nCliente: ${d.cliente}\nConta: ${d.conta_ads}\nSaldo atual: ${brl(d.saldo_atual)}\nLimite de alerta: ${brl(d.limite_alerta)}\nPrioridade: ${d.prioridade}\n\nAção sugerida:\nSolicitar recarga ou revisar forma de pagamento para evitar pausa nas campanhas.\n`;\n\n  return {\n    json: {\n      ...d,\n      assunto: `Alerta de saldo baixo | ${d.cliente}`,\n      mensagem_alerta: mensagem.trim(),\n      alerta_gerado_em: new Date().toISOString()\n    }\n  };\n});"
      },
      "id": "c603642d-5b18-4121-b99d-d6926e5e4753",
      "name": "Gerar mensagem de alerta",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -80,
        -160
      ]
    },
    {
      "parameters": {
        "sendTo": "={{ $json.responsavel_email }}",
        "subject": "={{ $json.assunto }}",
        "message": "={{ $json.mensagem_alerta }}",
        "options": {}
      },
      "id": "448662d4-83bf-42d0-a808-96f64ce224bf",
      "name": "Enviar alerta por Gmail",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        200,
        -160
      ],
      "webhookId": "pluma-balance-alert-gmail"
    },
    {
      "parameters": {
        "jsCode": "return items.map((item) => ({\n  json: {\n    cliente: item.json.cliente,\n    conta_ads: item.json.conta_ads,\n    status: 'alerta_enviado',\n    saldo_atual: item.json.saldo_atual,\n    limite_alerta: item.json.limite_alerta,\n    enviado_em: new Date().toISOString()\n  }\n}));"
      },
      "id": "ca22c92d-66b7-4d15-ab3c-328a777881d7",
      "name": "Registrar alerta enviado",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        480,
        -160
      ]
    },
    {
      "parameters": {
        "jsCode": "return items.map((item) => ({\n  json: {\n    cliente: item.json.cliente,\n    conta_ads: item.json.conta_ads,\n    status: 'saldo_ok',\n    saldo_atual: item.json.saldo_atual,\n    limite_alerta: item.json.limite_alerta,\n    verificado_em: new Date().toISOString()\n  }\n}));"
      },
      "id": "cccf0002-b482-4e42-9652-e707ead54bce",
      "name": "Registrar saldo ok",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -80,
        60
      ]
    }
  ],
  "connections": {
    "Rodar manualmente para teste": {
      "main": [
        [
          {
            "node": "Buscar contas monitoradas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Checagem a cada 6 horas": {
      "main": [
        [
          {
            "node": "Buscar contas monitoradas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Buscar contas monitoradas": {
      "main": [
        [
          {
            "node": "Saldo abaixo do limite?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Saldo abaixo do limite?": {
      "main": [
        [
          {
            "node": "Gerar mensagem de alerta",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Registrar saldo ok",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gerar mensagem de alerta": {
      "main": [
        [
          {
            "node": "Enviar alerta por Gmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enviar alerta por Gmail": {
      "main": [
        [
          {
            "node": "Registrar alerta enviado",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1",
    "timezone": "America/Sao_Paulo"
  },
  "staticData": null,
  "tags": [
    {
      "name": "Pluma"
    },
    {
      "name": "Ads"
    }
  ],
  "meta": {
    "templateCredsSetupCompleted": false,
    "description": "Workflow funcional para teste com dados exemplo. Para produção, conectar base real de contas e credencial Gmail/WhatsApp."
  }
}