This workflow corresponds to n8n.io template #5892 — we link there as the canonical source.
This workflow follows the Google Sheets → 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "f6a8a3c9-b1c7-4143-95b9-f21a7e6ee7c1",
"name": "Cal.com Trigger1",
"type": "n8n-nodes-base.calTrigger",
"position": [
-6540,
1540
],
"parameters": {
"events": [
"BOOKING_CREATED"
],
"options": {}
},
"credentials": {
"calApi": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "ac8e37e7-0e6d-48ea-af24-d145f64dd5cf",
"name": "Create URL",
"type": "n8n-nodes-base.code",
"position": [
-5660,
1440
],
"parameters": {
"jsCode": "// Retrieve the input data from node \"JSON\".\nlet inputData = $node[\"Generate Query\"].json;\n\n// If the output from the \"JSON\" node is an array, take the first element; otherwise, use it as is.\nif (Array.isArray(inputData)) {\n inputData = inputData[0];\n}\n\n// Access the \"query\" property, expecting it to be an array and taking its first element.\nconst paramsData = inputData.query[0];\n\n// Base URL for Apollo\nconst baseURL = 'https://app.apollo.io/#/people';\n\n// Array to hold each part of the query string\nconst queryParts = [];\n\n// Helper function to process and add array parameters to queryParts.\n// - Spaces in values will be encoded as %20.\n// - Parameter names like 'paramName[]' will have their brackets encoded as 'paramName%5B%5D'.\nconst addArrayParams = (paramName, values) => {\n values.forEach(val => {\n // Decode any existing '+' in input string to spaces, then URI encode the whole value.\n const decodedValue = String(val).replace(/\\+/g, ' ');\n const encodedValue = encodeURIComponent(decodedValue); // Ensures spaces become %20\n queryParts.push(`${paramName}%5B%5D=${encodedValue}`); // Appends paramName%5B%5D=encodedValue\n });\n};\n\n// === Construct the query string in the DESIRED ORDER ===\n\n// 1. page=1 (Static)\nqueryParts.push('page=1');\n\n// 2. Process locations (personLocations[])\n// Example: personLocations%5B%5D=London\nif (paramsData.location && Array.isArray(paramsData.location) && paramsData.location.length > 0) {\n addArrayParams('personLocations', paramsData.location);\n}\n\n// 3. Process organization keyword tags (qOrganizationKeywordTags[])\n// Used for searching by company NAME.\n// Example: qOrganizationKeywordTags%5B%5D=Paddle\nif (paramsData.business && Array.isArray(paramsData.business) && paramsData.business.length > 0) {\n addArrayParams('qOrganizationKeywordTags', paramsData.business);\n}\n\n// 4. Static parameters: includedOrganizationKeywordFields[]\n// Example: includedOrganizationKeywordFields%5B%5D=tags & includedOrganizationKeywordFields%5B%5D=name\n// Using addArrayParams to ensure consistent encoding.\naddArrayParams('includedOrganizationKeywordFields', ['tags', 'name']);\n\n// 5. Static parameter: sortByField (value is pre-encoded)\n// Example: sortByField=%5Bnone%5D\nqueryParts.push('sortByField=%5Bnone%5D');\n\n// 6. Static parameter: sortAscending\n// Example: sortAscending=false\nqueryParts.push('sortAscending=false');\n\n// 7. Process qKeywords (person's name/keyword search)\n// Example: qKeywords=Rob%20Fletcher (spaces as %20)\nif (paramsData.keyword && Array.isArray(paramsData.keyword) && paramsData.keyword.length > 0) {\n // Decode any existing '+' in input string to spaces\n const keywordVal = String(paramsData.keyword[0]).replace(/\\+/g, ' ');\n const encodedKeyword = encodeURIComponent(keywordVal); // Ensures spaces become %20\n queryParts.push(`qKeywords=${encodedKeyword}`);\n}\n\n// Optional: Process job_title (personTitles[]) if needed in the future.\n// Ensure 'personTitles' is the correct Apollo parameter name and uncomment if required.\n/*\nif (paramsData.job_title && Array.isArray(paramsData.job_title) && paramsData.job_title.length > 0) {\n addArrayParams('personTitles', paramsData.job_title); // This will also use %5B%5D encoding for brackets\n}\n*/\n\n// Combine all query parts with '&' to form the full query string\nconst queryString = queryParts.join('&');\n\n// Build the final URL\nconst finalURL = `${baseURL}?${queryString}`;\n\n// Return the output as an array of objects, with the finalURL nested under a json key.\nreturn [{ json: { finalURL } }];"
},
"typeVersion": 2
},
{
"id": "83bc2e49-06d9-4752-a816-c88328afd24b",
"name": "Calendly Trigger",
"type": "n8n-nodes-base.calendlyTrigger",
"position": [
-6540,
1340
],
"parameters": {
"events": [
"invitee.created"
]
},
"credentials": {
"calendlyApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "abb4448c-9c1d-4d56-b2e4-f19ec0631a3f",
"name": "Google Sheets1",
"type": "n8n-nodes-base.googleSheets",
"position": [
-4980,
1320
],
"parameters": {
"columns": {
"value": {
"Email": "={{ $('Log entry').first().json.Email }}",
"Name ": "={{ $('Log entry').first().json['Name '] }}",
"Notes": "={{ $('Log entry').first().json.Notes }}",
"Phone": "={{ $('Scrape Apollo').first().json.contactPhoneNumbers[0].sanitizedNumber }}",
"Status": "Enriched ",
"Company": "={{ $('Scrape Apollo').first().json.companyName }}",
"Country": "={{ $('Scrape Apollo').first().json.countryName }}",
"Socials": "=1. LinkedIn\nPerson: {{ $('Scrape Apollo').first().json.linkedInProfileUrl }}\nCompany: {{ $json.company.linkedInProfileUrl }}\n2. Twitter\nPerson:{{ $json.twitterProfileUrl }}\nCompany:{{ $json.company.twitterProfileUrl }}\n3. Facebook\nPerson: {{ $json.facebookProfileUrl }}\nCompany: {{ $json.company.facebookProfileUrl }}\n4. Github\nPerson: {{ $json.githubProfileUrl }}\n",
"Industry": "={{ $('Scrape Apollo').first().json.company.businessIndustry }}",
"Location": "={{ $('Scrape Apollo').first().json.cityName }}",
"Created At": "={{ $('Log entry').first().json['Created At'] }}",
"Job Title ": "={{ $('Scrape Apollo').first().json.positionHistory[0].jobTitle }}",
"Website URL": "={{ $('Scrape Apollo').first().json.company.websiteUrl }}",
"Company Size": "=Employee Count: {{ $('Scrape Apollo').first().json.company.employeeEstimate }}\nESTD: {{ $('Scrape Apollo').first().json.company.yearFounded }}\nStock Exchange: {{ $('Scrape Apollo').first().json.company.stockExchange }}\nStock Symbol: {{ $('Scrape Apollo').first().json.company.stockSymbol }}\n"
},
"schema": [
{
"id": "Created At",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Created At",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Name ",
"type": "string",
"display": true,
"required": false,
"displayName": "Name ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Country",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Socials",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Socials",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company",
"type": "string",
"display": true,
"required": false,
"displayName": "Company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Industry",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Title ",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Job Title ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Website URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Size",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Company Size",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Notes",
"type": "string",
"display": true,
"required": false,
"displayName": "Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Created At"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xQ66nuVVjws8sEXhiWPtYZfg6hv-Q2az9OKTrhUIABY/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1xQ66nuVVjws8sEXhiWPtYZfg6hv-Q2az9OKTrhUIABY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xQ66nuVVjws8sEXhiWPtYZfg6hv-Q2az9OKTrhUIABY/edit?usp=drivesdk",
"cachedResultName": "Meeting Prep"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "0581ea56-4e36-4d8a-81b7-9ef57ba41183",
"name": "Google Sheets2",
"type": "n8n-nodes-base.googleSheets",
"position": [
-4960,
1520
],
"parameters": {
"columns": {
"value": {
"Status": "Info Not Available",
"Created At": "={{ $('Log entry').first().json['Created At'] }}"
},
"schema": [
{
"id": "Created At",
"type": "string",
"display": true,
"required": false,
"displayName": "Created At",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Name ",
"type": "string",
"display": true,
"required": false,
"displayName": "Name ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone",
"type": "string",
"display": true,
"required": false,
"displayName": "Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Country",
"type": "string",
"display": true,
"required": false,
"displayName": "Country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"required": false,
"displayName": "Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Socials",
"type": "string",
"display": true,
"required": false,
"displayName": "Socials",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company",
"type": "string",
"display": true,
"required": false,
"displayName": "Company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Industry",
"type": "string",
"display": true,
"required": false,
"displayName": "Industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Title ",
"type": "string",
"display": true,
"required": false,
"displayName": "Job Title ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website URL",
"type": "string",
"display": true,
"required": false,
"displayName": "Website URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Size",
"type": "string",
"display": true,
"required": false,
"displayName": "Company Size",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Notes",
"type": "string",
"display": true,
"required": false,
"displayName": "Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xQ66nuVVjws8sEXhiWPtYZfg6hv-Q2az9OKTrhUIABY/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1xQ66nuVVjws8sEXhiWPtYZfg6hv-Q2az9OKTrhUIABY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xQ66nuVVjws8sEXhiWPtYZfg6hv-Q2az9OKTrhUIABY/edit?usp=drivesdk",
"cachedResultName": "Meeting Prep"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "5fd126bb-f58c-4894-97e9-3b0da6959bf1",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-6630,
1240
],
"parameters": {
"width": 1840,
"height": 520,
"content": "# Enrich Meeting Attendees"
},
"typeVersion": 1
},
{
"id": "60254652-adc6-4614-aac0-f5b269d8e3b7",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-7060,
1240
],
"parameters": {
"width": 420,
"height": 520,
"content": "## 1. Resources \n### Get your API keys by clicking on the links below.\n- ### [Calendly](https://calendly.com/integrations/api_webhooks)\n- ### [Cal.com](https://app.cal.com/settings/developer/api-keys)\n- ### [Apify](https://console.apify.com/settings/integrations)\n### Copy this Google Sheet Template\n- ### [Template](https://docs.google.com/spreadsheets/d/1TAFZwx7vo9FmzZVXB8S5qWjVUt7T4Lzvje1VVxP_LPY/edit?usp=sharing)\n## 2. Setup Guide\n- ### Connect Calendly and Cal using API keys.\n- ### Setup the Google Sheet and select it in the workflow\n- ### Replace the <APIKEY> placeholder with your Apify token.\n- ### Read This [Detailed Setup Guide](https://drive.google.com/file/d/1W9mLL2Ddr4vjW2VCs5Wg-Qm1291roH5D/view?usp=sharing) if need help\n- ### Reach out to us via [Email](mailto:info.gainflow@gmail.com) if need help\n- ### Find more real world use workflows by clicking [HERE](https://docs.google.com/document/d/1RACo90h-QwKA4hEZSlOQZsyw4iB5-43JM2l0s4lpuoY/edit?usp=sharing)"
},
"typeVersion": 1
},
{
"id": "491cbbcd-851c-49f3-9139-9bc010b44e24",
"name": "Extract Data",
"type": "n8n-nodes-base.set",
"position": [
-6340,
1340
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "75c90c99-eefa-4bcf-94f1-0600dd2e17ac",
"name": "Name",
"type": "string",
"value": "={{ $json.payload.name }}"
},
{
"id": "dea8cbbd-b4d3-47f4-8a5d-8898002a5bd6",
"name": "Email",
"type": "string",
"value": "={{ $json.payload.email }}"
},
{
"id": "f6e07fc3-3196-441b-8398-0d4c2358bd53",
"name": "Company ",
"type": "string",
"value": "={{ $json.payload.questions_and_answers[0].answer }}"
},
{
"id": "1195b3c9-ce35-4b7c-8922-52192f80eddb",
"name": "Notes",
"type": "string",
"value": "={{ $json.payload.questions_and_answers[1].answer }}"
},
{
"id": "680c22c0-0518-44b0-94fb-11f245c1c74e",
"name": "Created at",
"type": "string",
"value": "={{ $json.created_at.toDateTime() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d0ee5e40-5c57-4b51-a6f5-d6184f907772",
"name": "Extract data",
"type": "n8n-nodes-base.set",
"position": [
-6340,
1540
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "75c90c99-eefa-4bcf-94f1-0600dd2e17ac",
"name": "Name",
"type": "string",
"value": "={{ $json.responses.name.value }}"
},
{
"id": "dea8cbbd-b4d3-47f4-8a5d-8898002a5bd6",
"name": "Email",
"type": "string",
"value": "={{ $json.responses.email.value }}"
},
{
"id": "f6e07fc3-3196-441b-8398-0d4c2358bd53",
"name": "Company ",
"type": "string",
"value": "={{ $json.responses.title.value }}"
},
{
"id": "1195b3c9-ce35-4b7c-8922-52192f80eddb",
"name": "Notes",
"type": "string",
"value": "={{ $json.responses.notes.value }}"
},
{
"id": "6871b932-5193-4a6c-ab90-442a063f7365",
"name": "Created at",
"type": "string",
"value": "={{ $json.createdAt.toDateTime() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8555fefe-a522-4a5b-aaa5-a502f55ce57b",
"name": "Log entry",
"type": "n8n-nodes-base.googleSheets",
"position": [
-6100,
1440
],
"parameters": {
"columns": {
"value": {
"Email": "={{ $json.Email }}",
"Name ": "={{ $json.Name }}",
"Notes": "={{ $json.Notes }}",
"Company": "={{ $json['Company '] }}",
"Created At": "={{ $json['Created at'] }}"
},
"schema": [
{
"id": "Created At",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Created At",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Name ",
"type": "string",
"display": true,
"required": false,
"displayName": "Name ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Country",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Socials",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Socials",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company",
"type": "string",
"display": true,
"required": false,
"displayName": "Company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Industry",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Title ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Job Title ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website URL",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Website URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Size",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Company Size",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Notes",
"type": "string",
"display": true,
"required": false,
"displayName": "Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Created At"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xQ66nuVVjws8sEXhiWPtYZfg6hv-Q2az9OKTrhUIABY/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1xQ66nuVVjws8sEXhiWPtYZfg6hv-Q2az9OKTrhUIABY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xQ66nuVVjws8sEXhiWPtYZfg6hv-Q2az9OKTrhUIABY/edit?usp=drivesdk",
"cachedResultName": "Meeting Prep"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "f3f0d32e-8b44-49f5-aa61-a5dccbb19f17",
"name": "Generate Query",
"type": "n8n-nodes-base.set",
"position": [
-5880,
1440
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "=={\n \"query\": [\n {\n \"keyword\": [\"{{ $json['Name '] }}\"],\n \"business\": [\"{{ $json.Company }}\"]\n }\n ]\n}"
},
"typeVersion": 3.4
},
{
"id": "8f54f69c-2d51-4c90-8a6d-d6cd48527043",
"name": "Scrape Apollo",
"type": "n8n-nodes-base.httpRequest",
"position": [
-5440,
1440
],
"parameters": {
"url": "https://api.apify.com/v2/acts/supreme_coder~apollo-scraper/run-sync-get-dataset-items?token=<YOURAPIKEY>",
"method": "POST",
"options": {},
"jsonBody": "={\n \"count\": 25,\n \"excludeGuessedEmails\": false,\n \"excludeNoEmails\": false,\n \"getEmails\": true,\n \"searchUrl\": \"{{ $json.finalURL }}\"\n}",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2,
"alwaysOutputData": true
},
{
"id": "c98b7806-6f2a-4a1d-869b-1a2aec0fde18",
"name": "If Data available?",
"type": "n8n-nodes-base.if",
"position": [
-5220,
1440
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6869b0dd-f1b3-4431-a0d5-d02b0acdb6e8",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $('Scrape Apollo').all().toJsonString() }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
}
],
"connections": {
"Log entry": {
"main": [
[
{
"node": "Generate Query",
"type": "main",
"index": 0
}
]
]
},
"Create URL": {
"main": [
[
{
"node": "Scrape Apollo",
"type": "main",
"index": 0
}
]
]
},
"Extract Data": {
"main": [
[
{
"node": "Log entry",
"type": "main",
"index": 0
}
]
]
},
"Extract data": {
"main": [
[
{
"node": "Log entry",
"type": "main",
"index": 0
}
]
]
},
"Scrape Apollo": {
"main": [
[
{
"node": "If Data available?",
"type": "main",
"index": 0
}
]
]
},
"Generate Query": {
"main": [
[
{
"node": "Create URL",
"type": "main",
"index": 0
}
]
]
},
"Cal.com Trigger1": {
"main": [
[
{
"node": "Extract data",
"type": "main",
"index": 0
}
]
]
},
"Calendly Trigger": {
"main": [
[
{
"node": "Extract Data",
"type": "main",
"index": 0
}
]
]
},
"If Data available?": {
"main": [
[
{
"node": "Google Sheets1",
"type": "main",
"index": 0
}
],
[
{
"node": "Google Sheets2",
"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.
calApicalendlyApigoogleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates the process of gathering critical information about your meeting attendees right after they book a meeting. Whether they book through Calendly or Cal.com, this workflow extracts key details, uses Apollo.io to enrich their profiles with company and contact…
Source: https://n8n.io/workflows/5892/ — 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 template is ideal for solo store owners, eCommerce marketers, automation beginners, or anyone using Shopify and Gmail who wants to recover lost revenue without coding.
PCN. Uses googleSheets, httpRequest, @n-octo-n/n8n-nodes-json-database, itemLists. Event-driven trigger; 60 nodes.
The workflow automates the process of gathering extensive keyword data for a "Main Keyword." It starts by reading initial parameters from a Google Sheets template, creates a new dedicated Google Sheet
🔥 March Sale – n8n Community Members Get ideoGener8r for Just $27! (Reg. $47) Use Coupon Code: (Valid until 3/31/2025 for n8n community members)
📄 Documentation: Notion Guide