AutomationFlowsEmail & Gmail › Enviar Cotação Ao Cliente

Enviar Cotação Ao Cliente

Enviar Cotação ao Cliente. Uses googleSheets, googleDrive, gmail. Webhook trigger; 7 nodes.

Webhook trigger★★★★☆ complexity7 nodesGoogle SheetsGoogle DriveGmail
Email & Gmail Trigger: Webhook Nodes: 7 Complexity: ★★★★☆ Added:

This workflow follows the Gmail → Google Drive 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": "Enviar Cota\u00e7\u00e3o ao Cliente",
  "nodes": [
    {
      "parameters": {
        "resource": "spreadsheet",
        "title": "={{$json.quotation_name}} - {{$json.client_name}}",
        "options": {}
      },
      "id": "54f1101f-1856-4a6a-ad87-748d96045e36",
      "name": "Criar Planilha",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4,
      "position": [
        144,
        -112
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "={{$node[\"Criar Planilha\"].json[\"spreadsheetId\"]}}",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "P\u00e1gina1",
          "mode": "name"
        },
        "columns": {
          "mappingMode": "defineAcrossItems",
          "value": {},
          "matchingColumns": [],
          "schema": [
            {
              "id": "spreadsheetId",
              "displayName": "spreadsheetId",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "properties",
              "displayName": "properties",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "sheets",
              "displayName": "sheets",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "spreadsheetUrl",
              "displayName": "spreadsheetUrl",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "id": "6140ae78-72f3-4a4b-a410-33ea7bed4873",
      "name": "Gravar Itens",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4,
      "position": [
        352,
        -112
      ],
      "alwaysOutputData": true,
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "enviar-cotacao",
        "options": {}
      },
      "id": "e4d48e33-7608-4284-9311-c1565c037e27",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        -256,
        -112
      ]
    },
    {
      "parameters": {
        "jsCode": "const body = $node[\"Webhook\"].json[\"body\"];\nconst items = body[\"items\"];\n\nlet totalGeral = 0;\nconst tableRows = items.map(item => {\n  const itemTotal = (item.price || 0) * (item.quantity || 1);\n  totalGeral += itemTotal;\n  return {\n    \"Produto\": item.product,\n    \"Unid\": item.unit,\n    \"Qtd\": item.quantity,\n    \"Pre\u00e7o Unit\": item.price,\n    \"Total\": itemTotal,\n    \"Fornecedor\": item.store,\n    \"Link para Compra\": item.link\n  };\n});\n\nreturn [{\n  json: {\n    client_email: body.client_email,\n    client_name: body.client_name,\n    quotation_name: body.name,\n    internal_code: body.internal_code,\n    items_to_append: tableRows,\n    total_geral: totalGeral\n  }\n}];"
      },
      "id": "933b2bef-22de-4c41-9ae9-20a5c5c762b0",
      "name": "Normalizar Dados",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -48,
        -112
      ]
    },
    {
      "parameters": {
        "operation": "move",
        "fileId": {
          "__rl": true,
          "value": "={{$node[\"Criar Planilha\"].json[\"spreadsheetId\"]}}",
          "mode": "id"
        },
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "folderId": {
          "__rl": true,
          "value": "1WnooUiTQKIO_SVUsCeP133HRX2F8WIKJ",
          "mode": "id"
        }
      },
      "id": "3cb65dc8-a7cc-4c03-94ca-bd740da9ef19",
      "name": "Mover para Pasta",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        544,
        -112
      ],
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "share",
        "fileId": {
          "__rl": true,
          "value": "={{$node[\"Criar Planilha\"].json[\"spreadsheetId\"]}}",
          "mode": "id"
        },
        "permissionsUi": {
          "permissionsValues": {
            "role": "reader",
            "type": "anyone"
          }
        },
        "options": {}
      },
      "id": "3fd8d089-662c-4b1f-b2e3-7b96704012eb",
      "name": "Google Drive Share",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        752,
        -112
      ],
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sendTo": "={{$node[\"Normalizar Dados\"].json[\"client_email\"]}}",
        "subject": "=Sua Cota\u00e7\u00e3o est\u00e1 pronta: {{$node[\"Normalizar Dados\"].json[\"quotation_name\"]}}",
        "message": "=<html> <body style=\"font-family: Arial, sans-serif; line-height: 1.6; color: #333;\">   <div style=\"max-width: 600px; margin: 0 auto; padding: 20px; border: 1px solid #eee; border-radius: 10px;\">     <h2 style=\"color: #2D3748;\">Ol\u00e1, {{$node[\"Normalizar Dados\"].json[\"client_name\"]}}!</h2>          <p>Informamos que sua cota\u00e7\u00e3o <strong>{{$node[\"Normalizar Dados\"].json[\"internal_code\"]}}</strong> foi finalizada com sucesso.</p>          <p>O arquivo consolidado com os melhores pre\u00e7os e fornecedores encontrados est\u00e1 dispon\u00edvel no Google Drive:</p>          <div style=\"text-align: center; margin: 30px 0;\">       <a href=\"{{ $('Criar Planilha').item.json.spreadsheetUrl }}\"           style=\"display: inline-block; padding: 14px 28px; background-color: #2D3748; color: #ffffff; text-decoration: none; border-radius: 8px; font-weight: bold;\">          Acessar Planilha de Cota\u00e7\u00e3o       </a>     </div>      <div style=\"background-color: #f7fafc; padding: 15px; border-radius: 8px; margin-bottom: 20px;\">       <p style=\"margin: 0;\"><strong>Resumo da Cota\u00e7\u00e3o:</strong></p>       <ul style=\"margin-top: 5px;\">         <li><strong>Cota\u00e7\u00e3o:</strong> {{$node[\"Normalizar Dados\"].json[\"quotation_name\"]}}</li>         <li><strong>Valor Total Estimado:</strong> R$ {{$node[\"Normalizar Dados\"].json[\"total_geral\"].toFixed(2)}}</li>       </ul>     </div>      <p style=\"font-size: 14px; color: #718096;\">Este \u00e9 um e-mail autom\u00e1tico enviado pelo sistema BuscaPrecosWeb.</p>   </div> </body> </html>",
        "options": {}
      },
      "id": "8237bd05-4f91-4300-a0dc-83b2870c6b2d",
      "name": "Gmail",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2,
      "position": [
        944,
        -112
      ],
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Criar Planilha": {
      "main": [
        [
          {
            "node": "Gravar Itens",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gravar Itens": {
      "main": [
        [
          {
            "node": "Mover para Pasta",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "Normalizar Dados",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalizar Dados": {
      "main": [
        [
          {
            "node": "Criar Planilha",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mover para Pasta": {
      "main": [
        [
          {
            "node": "Google Drive Share",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive Share": {
      "main": [
        [
          {
            "node": "Gmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "256d6750-5473-433c-a423-f560fac15071",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "lJCDVNy4luo7dtop",
  "tags": []
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

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

About this workflow

Enviar Cotação ao Cliente. Uses googleSheets, googleDrive, gmail. Webhook trigger; 7 nodes.

Source: https://github.com/joabeoliveira/buscaPrecosWeb/blob/2613bb8c0bf48b84d47c781aa1549c7085adb834/n8n/flowV1.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

Streamline and standardize your entire client onboarding process with a single end-to-end automation. 🚀📋 This workflow captures detailed client intake data via webhook, automatically creates a fully s

Slack, Asana, HTTP Request +4
Email & Gmail

Invoice_Workflow. Uses googleSheets, googleDrive, googleDocs, gmail. Webhook trigger; 19 nodes.

Google Sheets, Google Drive, Google Docs +4
Email & Gmail

Creating and sending invoices manually is a major administrative bottleneck. It's not only slow but also prone to human error, such as creating duplicate invoice numbers or sending sensitive financial

Google Sheets, @Pdfgeneratorapi/N8N Nodes Pdf Generator Api, Google Drive +1
Email & Gmail

✨🔪 Advanced AI Powered Document Parsing & Text Extraction with Llama Parse. Uses gmail, gmailTrigger, limit, stickyNote. Webhook trigger; 54 nodes.

Gmail, Gmail Trigger, HTTP Request +6
Email & Gmail

Description

Google Sheets, OpenAI, Gmail +1