This workflow corresponds to n8n.io template #4606 β we link there as the canonical source.
This workflow follows the Emailsend β Google Sheets 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 β
{
"id": "OIDO7J5NqLAuLrKI",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "01 Scraping Site & Storing Records",
"tags": [
{
"id": "oKGIn6U0wpeHShTN",
"name": "working flow",
"createdAt": "2025-06-02T06:27:44.762Z",
"updatedAt": "2025-06-02T06:27:44.762Z"
}
],
"nodes": [
{
"id": "e6b6b5d8-ae51-42e6-8f14-fa94b3b9cc5a",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-360,
360
],
"parameters": {},
"typeVersion": 1
},
{
"id": "29628132-3a79-4512-b1dd-ed5574e69363",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-340,
-280
],
"parameters": {
"width": 580,
"height": 140,
"content": "## This is workflow of scrapping list of travel agents website...\n \n**use this for scrapping different sites that has information in standard format information information** "
},
"typeVersion": 1
},
{
"id": "a7575f0a-db6a-48e1-9fb8-01f8e543589b",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
240,
-100
],
"parameters": {
"options": {},
"fieldToSplitOut": "message.content[\"Travel Agents\"]"
},
"typeVersion": 1
},
{
"id": "3cb85d6b-b0e9-4ca9-a4a1-7b241909eccc",
"name": "Send Email",
"type": "n8n-nodes-base.emailSend",
"position": [
680,
360
],
"parameters": {
"text": "=Dear {{ $json['Agent Name'] }} team,\n{{ $json.Icebreaker }}\n\n{{ $json['AI Agent in Travel'] }}\n\n{{ $json['Call to Action'] }}\n\nBest Regards\nMohan Gopal\n\n{{ $json.PS }}\n\n",
"options": {
"ccEmail": "user@example.com"
},
"subject": "={{ $json.Subject }}",
"toEmail": "={{ $json['Email Address'] }}",
"fromEmail": "user@example.com",
"emailFormat": "text"
},
"credentials": {
"smtp": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "19d9b52b-5ca8-4027-98fe-d3e36fb9e229",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-360,
200
],
"parameters": {
"width": 580,
"height": 120,
"content": "## Read Scrapped and Stored Records in SpreadSheet and Send Survey Email \n** Simple Read and Compose Personalised email and send..."
},
"typeVersion": 1
},
{
"id": "57827b6b-5f62-4b17-99ce-d14b4d0c27bb",
"name": "Google Sheet - Data Store",
"type": "n8n-nodes-base.googleSheets",
"position": [
440,
-100
],
"parameters": {
"columns": {
"value": {
"City": "={{ $json.City }}",
"Status": "InProgress",
"Country": "={{ $json.Country }}",
"Summary": "={{ $json.Summary }}",
"Website": "={{ $json.Website }}",
"Mail Sent": "ToDo",
"Telephone": "={{ $json.Telephone }}",
"Agent Name": "={{ $json[\"Travel Agent Name\"] }}",
"Email Address": "={{ $json[\"Email Address\"] }}",
"Survey Received": "Pending",
"Response Received": "Pending"
},
"schema": [
{
"id": "Agent Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Agent Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"type": "string",
"display": true,
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Address",
"type": "string",
"display": true,
"required": false,
"displayName": "Email Address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Telephone",
"type": "string",
"display": true,
"required": false,
"displayName": "Telephone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website",
"type": "string",
"display": true,
"required": false,
"displayName": "Website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Country",
"type": "string",
"display": true,
"required": false,
"displayName": "Country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "City",
"type": "string",
"display": true,
"required": false,
"displayName": "City",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Mail Sent",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Mail Sent",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Response Received",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Response Received",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Survey Received",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Survey Received",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1598367286,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit#gid=1598367286",
"cachedResultName": "ScrapedList"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit?usp=drivesdk",
"cachedResultName": "Travel Agents List"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "eef292a7-b539-4b38-935e-27b7f6e1e871",
"name": "Google Sheet Data Store",
"type": "n8n-nodes-base.googleSheets",
"position": [
-120,
360
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1316921362,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit#gid=1316921362",
"cachedResultName": "TestTravelAgents"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit?usp=drivesdk",
"cachedResultName": "Travel Agents List"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "5428022b-1492-4ed0-8fa7-a13f1b6dd9be",
"name": "OpenAI1 Mail Composer",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
100,
360
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "=You are a helpful and intelligent writing assistant who understands Travel Domain and have experience in mailing Travel Agents about Surveys "
},
{
"content": "Your task is to personalize an email that will encourage the travel agent to complete the survey and submit. \n\nYou will do this by taking the Travel Agents details as input, and editing 5 sections of email: Subject line, ice-breaker, AI Agent in Travel Business, Call to action and a PS field. \n\nYour template as below: \n\nSubject line: \"Is your {companyname} prepared for AI Agent Revolution.\" \n\nIcebreaker: \n\"I understand you are in the travel business doing {uniquethingsaboutthemortheirUSP} and I've been following the impact on travel business for a while. The travel industry is evolving rapidly with AI-driven tools changing how business is conducted. This survey aims to gather insights from travel agents in Malaysia to assess their awareness, operational challenges, and interest in implementing AI Agents in daily workflows.\n\nYour responses will help us:\n\nUnderstand key pain points in your current operations.\nEvaluate awareness and readiness for AI integration.\nDesign a tailored AI Agent solution to improve productivity, efficiency, and profitability for travel businesses like yours.\n\nAll responses will be kept confidential and used only for aggregate analysis.\"\n\nAI Agent in Treavel Business: \n\"AI Agents are intelligent systems that can independently perform tasks traditionally done by humans. In the travel industry, these agents can:\n\nCompile and price custom tour packages.\nAutomatically follow up with suppliers.\nManage bookings, cancellations, and customer queries.\nHandle payment tracking and reconciliation.\n\nWith automation, AI Agents can reduce manual work, increase accuracy, and free up your team to focus on customer experience and business growth.\"\n\nCall to action: \n\"Your experience matters. We're conducting a brief survey to understand how AI Agents can help travel agencies like yours save time, reduce manual work, and boost efficiency.\n\n\ud83d\udccb Takes less than 5 minutes\n\ud83d\udd10 Your responses are confidential\n\ud83d\udcc8 Get a free insights report based on aggregated results\n\ud83c\udf81 Early access to our AI Agent pilot program\n\n\ud83d\udc49 Click Here to Take the Survey\n\nLet\u2019s build smarter travel solutions together.\nThank you for being part of this industry transformation.\"\n\nPS: \"Even if you ar not interested in survey, kindly respond 'NOT INTERESTED\" in the reply. \n\nGuidelines:\n1. Your tone of voice should be \"Semi-formal conversation\". No fancy language. \n2. Do not repeat sentences or data from the input, make it more natural and human like.\n3. Make sure the Subject line is non-capitalized, even if it is gramatically incorrect. Makes it look more human. \n4. Respond in JSON using the below format:\n{\"Subject line\":\"\",\"Icebreaker\":\"\",\"AI Agent in Treavel Business:\":\"\",\"Call to action\":\"\",\"PS\":\"\" }"
},
{
"content": "=Agent Name: {{ $json['Agent Name'] }}\nEmail Address: {{ $json['Email Address'] }}\nSummary: {{ $json.Summary }}\nWebsite: {{ $json.Website }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "13922526-19c5-495a-ba65-3cb0c77a1816",
"name": "OpenAI Standardise Data",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-120,
-100
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini-2025-04-14",
"cachedResultName": "GPT-4.1-MINI-2025-04-14"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "=Yor role is to extract the complete list of travel Agents information from the incoming data and standardise them in the below structured format for storing in spreadsheet. \n\nYour output has to be in a structured format that includes the \n - Agent name\n - Summary: summary from introduction section, \n - Email address, \n - Telephone number,\n - Website,\n- Country,\n- City\n\nYou will receive an input of <scrapped-website>\n\nRespond in JSON format:\n{\n \"Travel Agent Name\": \"\",\n \"Summary\": \"\",\n \"Email Address\": \"\",\n \"Telephone\": \"\",\n \"Website\": \"\"\n \"Country\":\"\"\n \"City\"\": \"\"\n}\ninput N/A where data is not available "
},
{
"role": "system",
"content": "=<scrapped-website>\n{{ $json.data.markdown }}\n</scrapped-website> "
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "f6fda879-81e2-4aa6-ada4-5fff6e645ba4",
"name": "Google Sheet Update Records",
"type": "n8n-nodes-base.googleSheets",
"position": [
460,
360
],
"parameters": {
"columns": {
"value": {
"PS": "={{ $json.message.content.PS }}",
"City": "={{ $('Google Sheet Data Store').item.json.City }}",
"Status": "In-Progress",
"Country": "={{ $('Google Sheet Data Store').item.json.Country }}",
"Subject": "={{ $json.message.content['Subject line'] }}",
"Summary": "={{ $('Google Sheet Data Store').item.json.Summary }}",
"Website": "={{ $('Google Sheet Data Store').item.json.Website }}",
"Mail Sent": "Sent",
"Telephone": "={{ $('Google Sheet Data Store').item.json.Telephone }}",
"Agent Name": "={{ $('Google Sheet Data Store').item.json['Agent Name'] }}",
"Icebreaker": "={{ $json.message.content.Icebreaker }}",
"Email Address": "={{ $('Google Sheet Data Store').item.json['Email Address'] }}",
"Call to Action": "={{ $json.message.content['Call to action'] }}",
"Survey Received": "Pending",
"Response Received": "Pending",
"AI Agent in Travel": "={{ $json.message.content['AI Agent in Treavel Business'] }}"
},
"schema": [
{
"id": "Agent Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Agent Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"type": "string",
"display": true,
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Address",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Email Address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Telephone",
"type": "string",
"display": true,
"required": false,
"displayName": "Telephone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website",
"type": "string",
"display": true,
"required": false,
"displayName": "Website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Country",
"type": "string",
"display": true,
"required": false,
"displayName": "Country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "City",
"type": "string",
"display": true,
"required": false,
"displayName": "City",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Mail Sent",
"type": "string",
"display": true,
"required": false,
"displayName": "Mail Sent",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Response Received",
"type": "string",
"display": true,
"required": false,
"displayName": "Response Received",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Survey Received",
"type": "string",
"display": true,
"required": false,
"displayName": "Survey Received",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Subject",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Subject",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Icebreaker",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Icebreaker",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "AI Agent in Travel",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "AI Agent in Travel",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Call to Action",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Call to Action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "PS",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "PS",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Email Address"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1316921362,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit#gid=1316921362",
"cachedResultName": "TestTravelAgents"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "=1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "c6ab2fe5-8876-4673-a5f3-6eacd4625a4c",
"name": "HTTP Scrape Website",
"type": "n8n-nodes-base.httpRequest",
"position": [
-340,
-100
],
"parameters": {
"url": "https://api.firecrawl.dev/v1/scrape",
"method": "POST",
"options": {},
"jsonBody": "{\n \"url\": \"https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/\",\n \"formats\": [\n \"markdown\"\n ]\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
}
],
"active": false,
"settings": {
"callerPolicy": "workflowsFromSameOwner",
"executionOrder": "v1"
},
"versionId": "fa1737d5-7f2f-44b3-a07d-ce85f26adf5e",
"connections": {
"Split Out": {
"main": [
[
{
"node": "Google Sheet - Data Store",
"type": "main",
"index": 0
}
]
]
},
"HTTP Scrape Website": {
"main": [
[
{
"node": "OpenAI Standardise Data",
"type": "main",
"index": 0
}
]
]
},
"OpenAI1 Mail Composer": {
"main": [
[
{
"node": "Google Sheet Update Records",
"type": "main",
"index": 0
}
]
]
},
"Google Sheet Data Store": {
"main": [
[
{
"node": "OpenAI1 Mail Composer",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Standardise Data": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Google Sheet Update Records": {
"main": [
[
{
"node": "Send Email",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Google Sheet Data Store",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
googleSheetsOAuth2ApihttpHeaderAuthopenAiApismtp
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
π§ Automated Workflow: Scrape Travel Agent Contacts and Send Personalized Survey Emails This workflow is designed to automate the process of scraping travel agent contact data, standardizing the information, storing it, and then sending out personalized survey emails using AI.β¦
Source: https://n8n.io/workflows/4606/ β original creator credit. Request a take-down β
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This n8n template automates targeted lead discovery, AI-driven data structuring, and personalized cold-email sending at controlled intervals. Itβs ideal for sales teams, founders, and agencies that wa
K&S-Media Downloadliste SQL. Uses httpRequest, agent, googleSheets, lmChatOpenAi. Event-driven trigger; 97 nodes.
π― Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes β all on autopilot.
Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.
This n8n workflow orchestrates a powerful suite of AI Agents and automations to manage and optimize various aspects of an e-commerce operation, particularly for platforms like Shopify. It leverages La