AutomationFlowsEmail & Gmail › Jarvis — Leitor De Respostas (comercial)

Jarvis — Leitor De Respostas (comercial)

JARVIS — Leitor de Respostas (Comercial). Uses emailReadImap, httpRequest. Manual trigger; 6 nodes.

Manual trigger★★★★☆ complexity6 nodesEmail Read ImapHTTP Request
Email & Gmail Trigger: Manual Nodes: 6 Complexity: ★★★★☆ Added:

This workflow follows the Emailreadimap → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "JARVIS \u2014 Leitor de Respostas (Comercial)",
  "nodes": [
    {
      "parameters": {},
      "id": "a1000000-0000-4000-8000-000000000001",
      "name": "Nova resposta na caixa",
      "type": "n8n-nodes-base.emailReadImap",
      "typeVersion": 2,
      "position": [
        -320,
        0
      ],
      "notes": "Dispara a cada e-mail N\u00c3O LIDO que chega em comercial@gruposervcamp.com.br. Credencial IMAP: host email-ssl.com.br, porta 993, SSL ligado.",
      "credentials": {}
    },
    {
      "parameters": {
        "jsCode": "// Extrai s\u00f3 o endere\u00e7o de e-mail do remetente.\n// Ex.: \"Maria Silva <maria@cliente.com.br>\" -> maria@cliente.com.br\nconst out = [];\nfor (const item of $input.all()) {\n  const from = item.json.from || item.json.From || '';\n  const m = String(from).match(/[\\w.+-]+@[\\w-]+\\.[\\w.-]+/);\n  if (!m) continue;\n  out.push({\n    json: {\n      remetente: m[0].toLowerCase(),\n      assunto: item.json.subject || '',\n      recebido_em: item.json.date || new Date().toISOString()\n    }\n  });\n}\nreturn out;"
      },
      "id": "a1000000-0000-4000-8000-000000000002",
      "name": "Extrai o remetente",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -100,
        0
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "=https://SEU_PROJETO.supabase.co/rest/v1/com_propostas",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "select",
              "value": "id,nome,email,status,respondido_em"
            },
            {
              "name": "email",
              "value": "=eq.{{ $json.remetente }}"
            },
            {
              "name": "respondido_em",
              "value": "is.null"
            },
            {
              "name": "status",
              "value": "not.in.(FECHADO,PERDIDO)"
            }
          ]
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "apikey",
              "value": "=SUA_SERVICE_ROLE_KEY"
            },
            {
              "name": "Authorization",
              "value": "=Bearer SUA_SERVICE_ROLE_KEY"
            }
          ]
        },
        "options": {}
      },
      "id": "a1000000-0000-4000-8000-000000000003",
      "name": "Procura proposta pelo e-mail",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        140,
        0
      ],
      "notes": "Troque SEU_PROJETO e SUA_SERVICE_ROLE_KEY. Busca proposta aberta cujo email == remetente."
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": false,
            "version": 2
          },
          "conditions": [
            {
              "leftValue": "={{ $json.id }}",
              "rightValue": "",
              "operator": {
                "type": "number",
                "operation": "exists",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "a1000000-0000-4000-8000-000000000004",
      "name": "\u00c9 um cliente da base?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        380,
        0
      ],
      "notes": "Se o remetente n\u00e3o bate com nenhuma proposta aberta, o fluxo para aqui (e-mail comum)."
    },
    {
      "parameters": {
        "method": "PATCH",
        "url": "=https://SEU_PROJETO.supabase.co/rest/v1/com_propostas",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "id",
              "value": "=eq.{{ $json.id }}"
            }
          ]
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "apikey",
              "value": "=SUA_SERVICE_ROLE_KEY"
            },
            {
              "name": "Authorization",
              "value": "=Bearer SUA_SERVICE_ROLE_KEY"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Prefer",
              "value": "return=minimal"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ respondido_em: new Date().toISOString(), status: $json.status === 'PROPOSTA' ? 'NEGOCIA\u00c7\u00c3O' : $json.status, atualizado_em: new Date().toISOString() }) }}",
        "options": {}
      },
      "id": "a1000000-0000-4000-8000-000000000005",
      "name": "Marca respondido \u2192 PARA a cad\u00eancia",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        620,
        -80
      ],
      "notes": "Preenche respondido_em: a cad\u00eancia de e-mail nunca mais envia para este cliente. Se estava em PROPOSTA, promove para NEGOCIA\u00c7\u00c3O."
    },
    {
      "parameters": {
        "method": "POST",
        "url": "=https://SEU_PROJETO.supabase.co/rest/v1/com_cadencia_log",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "apikey",
              "value": "=SUA_SERVICE_ROLE_KEY"
            },
            {
              "name": "Authorization",
              "value": "=Bearer SUA_SERVICE_ROLE_KEY"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Prefer",
              "value": "return=minimal"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ proposta_id: $('Procura proposta pelo e-mail').item.json.id, etapa: 0, canal: 'EMAIL', destinatario: $('Extrai o remetente').item.json.remetente, status: 'evento', detalhe: 'Cliente respondeu por e-mail \u2014 cad\u00eancia interrompida automaticamente (n8n)' }) }}",
        "options": {}
      },
      "id": "a1000000-0000-4000-8000-000000000006",
      "name": "Registra na timeline",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        860,
        -80
      ],
      "notes": "O evento aparece na Timeline 360\u00ba da proposta dentro do JARVIS."
    }
  ],
  "connections": {
    "Nova resposta na caixa": {
      "main": [
        [
          {
            "node": "Extrai o remetente",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extrai o remetente": {
      "main": [
        [
          {
            "node": "Procura proposta pelo e-mail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Procura proposta pelo e-mail": {
      "main": [
        [
          {
            "node": "\u00c9 um cliente da base?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u00c9 um cliente da base?": {
      "main": [
        [
          {
            "node": "Marca respondido \u2192 PARA a cad\u00eancia",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Marca respondido \u2192 PARA a cad\u00eancia": {
      "main": [
        [
          {
            "node": "Registra na timeline",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

JARVIS — Leitor de Respostas (Comercial). Uses emailReadImap, httpRequest. Manual trigger; 6 nodes.

Source: https://github.com/Joaoygor660/jarvis3/blob/8f4ef16af5b7ceb28a2e576106dc3546bb8ec62b/n8n/fluxo-leitor-respostas.json — original creator credit. Request a take-down →

More Email & Gmail workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Email & Gmail

This workflow automates URL reporting to Spamhaus based on incoming spam/phishing sample emails. It watches one or more IMAP folders, extracts URLs from each email body, removes duplicates and common

Email Read Imap, HTTP Request
Email & Gmail

This n8n workflow helps users easily discover nearby residential construction projects by automatically scraping and analyzing property listings from 99acres and other real estate platforms. Users can

Email Read Imap, HTTP Request, Email Send
Email & Gmail

Email Order ID Extractor (Body + Attachments + OCR). Uses httpRequest, emailReadImap. Manual trigger; 11 nodes.

HTTP Request, Email Read Imap
Email & Gmail

AI HRD Screening Automation. Uses emailReadImap, httpRequest, emailSend, googleSheets. Manual trigger; 9 nodes.

Email Read Imap, HTTP Request, Email Send +1
Email & Gmail

AI Urgent Email Detector (Lite). Uses emailReadImap, httpRequest, emailSend. Manual trigger; 9 nodes.

Email Read Imap, HTTP Request, Email Send