{
  "id": "010G8vMju7kUHf0z",
  "name": "Automated Lead-Gen \u2014 Google Maps \u2192 Enriched Emails \u2192 Sheet",
  "tags": [],
  "nodes": [
    {
      "id": "5f6e0c54-1b4a-4b97-a81c-a784f8ac3ad6",
      "name": "When you click Test",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -512,
        240
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "ef05ba67-6aec-496c-b304-d3b2863fa404",
      "name": "Run Google Maps Lead Finder",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -128,
        240
      ],
      "parameters": {
        "url": "https://api.apify.com/v2/acts/santhej~google-maps-lead-finder/run-sync-get-dataset-items",
        "method": "POST",
        "options": {
          "timeout": 300000
        },
        "jsonBody": "{\n  \"queries\": [\"dentists in Austin TX\"],\n  \"resultsDepth\": 10,\n  \"enrichEmails\": true,\n  \"maxEmailsPerDomain\": 2,\n  \"locationCode\": \"2840\"\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "retryOnFail": true,
      "typeVersion": 4.4
    },
    {
      "id": "6da9b038-c6cb-4b85-b1ad-970976723427",
      "name": "Keep leads with a verified email",
      "type": "n8n-nodes-base.filter",
      "position": [
        240,
        240
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c1",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.primary_email }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "f6b6edc1-8683-4bde-8d8d-eb1db26fd832",
      "name": "Append lead to Google Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1632,
        224
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "business",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "business",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "category",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "address",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phone",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "website",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "domain",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "primary_email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "primary_email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "primary_email_status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "primary_email_status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "primary_email_confidence",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "primary_email_confidence",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email_count",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "email_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "rating",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "rating",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "reviews_count",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "reviews_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "query",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "query",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "price_level",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "price_level",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "work_hours",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "work_hours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "emails",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "emails",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "decision_makers",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "decision_makers",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "TaskifyLabs Leads"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1HikW0JmOSaVCVYMi164UpuL4x_nbo8bqW0mfsmmvYgE/edit"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "4f77c6b4-44fd-40c0-8f33-72da3c502ed9",
      "name": "\ud83d\udcd8 Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -544,
        -160
      ],
      "parameters": {
        "color": 4,
        "width": 1460,
        "height": 260,
        "content": "# \ud83d\uddfa\ufe0f Automated Local Lead-Gen \u2014 Google Maps \u2192 VERIFIED Emails \u2192 Sheet\n## Scrapes local businesses \u2192 **live-SMTP verifies every email so nothing bounces** \u2192 writes only safe-to-send leads to your Sheet.\n### Flow:  \u2460 Trigger \u2192 \u2461 Scrape + enrich \u2192 \u2462 Has email? \u2192 \u2463 Verify (SMTP) \u2192 \u2464 Merge \u2192 \u2465 Keep safe-to-send \u2192 \u2466 Sheet\n### _Free workflow by Santhej Kallada \u00b7 n8n Automation_"
      },
      "typeVersion": 1
    },
    {
      "id": "dc9918b9-1d09-4050-a6da-25ef2cf1d5ad",
      "name": "\u2461 Apify \u2014 scrape + enrich",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -544,
        416
      ],
      "parameters": {
        "color": 7,
        "width": 626,
        "height": 364,
        "content": "## \u2461 Scrape + enrich (Apify)\n### One HTTP request runs the **Google Maps B2B Lead Finder**.\n### \ud83d\udd11 Credential: Apify **Header Auth** \u2014 see the \ud83d\udd11 Setup box below\n### Edit the JSON body:\n### \u2022 `queries` \u2192 niche + city\n### \u2022 `resultsDepth` \u2192 10\u2013100\n### \u2022 `enrichEmails` \u2192 `true`\n### \ud83d\udcb2 ~1\u00a2 / lead \u00b7 Apify gives **$5 free** (~first 400 free)\n**\ud83d\udd17 apify.com/santhej/google-maps-lead-finder?fpr=p2qvcj**"
      },
      "typeVersion": 1
    },
    {
      "id": "ede0e1de-8238-47f6-98fb-c99f53f1f11f",
      "name": "\u2462 Filter note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        112,
        416
      ],
      "parameters": {
        "color": 7,
        "width": 412,
        "height": 332,
        "content": "## \u2462 Has an email?\n### Quick pre-check \u2014 only pass leads that **actually have a `primary_email`**, so we don't waste a verification on blanks."
      },
      "typeVersion": 1
    },
    {
      "id": "74266366-fb76-4748-a54a-0a86ec09a254",
      "name": "\u2463 Sheet note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1728,
        416
      ],
      "parameters": {
        "color": 7,
        "width": 430,
        "height": 304,
        "content": "## \u2466 Append to your Google Sheet\n### Only clean, **verified** leads land here \u2014 business, phone, website, email + **status & score**.\n### \ud83d\udd11 Credential: **Google Sheets OAuth2** \u2192 Sign in with Google\n### \ud83d\udc49 Open this node, pick **your own** spreadsheet + tab.\n### \u23f0 Swap Manual Trigger \u2192 Schedule for daily auto-runs."
      },
      "typeVersion": 1
    },
    {
      "id": "af40ee07-bf9a-49ff-ad1b-aab3d25cffb8",
      "name": "\ud83d\ude80 Hire me \u2014 TaskifyLabs",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        1200
      ],
      "parameters": {
        "color": 3,
        "width": 960,
        "height": 300,
        "content": "# \ud83d\ude80 Don't want to build it? I'll set it up for you.\n## I build custom **n8n + Apify** automations for agencies & local businesses \u2014 lead-gen, cold outreach, reporting. Done-for-you.\n### **Who buys this:** real-estate agents \u00b7 marketing agencies \u00b7 B2B sales teams \u00b7 local service businesses\n### **Typical pricing:** setup **$500\u20131,500** \u00b7 managed lead lists **$300\u2013800/mo**\n## \ud83d\udc49 Hire me: taskifylabs.com/services/sales-automation\n### \ud83d\udce7 santhej@taskifylabs.com    \u25b6 YouTube: Santhej Kallada \u00b7 n8n Automation"
      },
      "typeVersion": 1
    },
    {
      "id": "489e1c0c-5f72-4fe8-a561-f92208eb943b",
      "name": "Verify Emails",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        608,
        128
      ],
      "parameters": {
        "url": "https://api.apify.com/v2/acts/santhej~email-verifier/run-sync-get-dataset-items",
        "method": "POST",
        "options": {
          "timeout": 120000
        },
        "jsonBody": "={\n  \"emails\": [\"{{ $json.primary_email }}\"],\n  \"mode\": \"power\",\n  \"deduplicate\": false\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "retryOnFail": true,
      "typeVersion": 4.4
    },
    {
      "id": "c3da5151-dee0-4499-aeec-cde8fdc47766",
      "name": "Merge lead + verification",
      "type": "n8n-nodes-base.merge",
      "position": [
        992,
        224
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    },
    {
      "id": "abf513f4-e9c8-4e99-bb9a-ebabb2a1fb0a",
      "name": "Keep only safe-to-send",
      "type": "n8n-nodes-base.filter",
      "position": [
        1312,
        224
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "safe1",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.is_safe_to_send }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "780bef22-a59f-438b-9bbd-93f0391773e0",
      "name": "\u2463 Verify note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        416
      ],
      "parameters": {
        "color": 7,
        "width": 396,
        "height": 328,
        "content": "## \u2463 Verify every email (Email Verifier)\n### Google Maps emails are scraped and **often bounce**.\n### Runs a **live SMTP check** \u2014 deliverable? catch-all? disposable? role? spam-trap?\n### Returns `is_safe_to_send`, `status`, `score`.\n### \ud83d\udd11 Uses the **same Apify Header Auth** credential as \u2461\n### \ud83d\udcb2 ~$0.0018 / email (power mode)\n**\ud83d\udd17 apify.com/santhej/email-verifier?fpr=p2qvcj**"
      },
      "typeVersion": 1
    },
    {
      "id": "54c4f871-5941-484b-b9ca-91e4962881d3",
      "name": "\u2464 Merge note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        992,
        416
      ],
      "parameters": {
        "color": 7,
        "width": 330,
        "height": 300,
        "content": "## \u2464 Merge\n### Stitches each verification result back onto its lead (business, phone, website\u2026) **by position**."
      },
      "typeVersion": 1
    },
    {
      "id": "562f228a-511c-46d1-96f9-d9ff0a5e51fe",
      "name": "\u2465 Safe-to-send note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1344,
        416
      ],
      "parameters": {
        "color": 3,
        "width": 350,
        "height": 300,
        "content": "## \u2465 Keep only safe-to-send \u2705\n### **This is what stops bounces.**\n### Drops anything not `is_safe_to_send` \u2014 undeliverable, catch-all, disposable.\n### Stricter? Also drop `is_role_account`, or keep only `status = valid`."
      },
      "typeVersion": 1
    },
    {
      "id": "0ff8a020-7324-4fc9-85d6-8728145707ac",
      "name": "\ud83d\udd11 Setup credentials",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        864
      ],
      "parameters": {
        "color": 2,
        "width": 960,
        "height": 300,
        "content": "# \ud83d\udd11 Setup \u2014 add these 2 credentials BEFORE you run\n## 1\ufe0f\u20e3 Apify (Header Auth) \u2014 used by BOTH \u2461 Scrape and \u2463 Verify\n### \u2022 Apify \u2192 Settings \u2192 API & Integrations \u2192 copy your **Personal API token**\n### \u2022 On the HTTP node \u2192 Credential \u2192 **Create New \u2192 \u201cHeader Auth\u201d**\n### \u2022 Name: `Authorization`   \u00b7   Value: `Bearer YOUR_APIFY_TOKEN`   \u2192  Save, then select it on **both** \u2461 and \u2463\n## 2\ufe0f\u20e3 Google Sheets (OAuth2) \u2014 used by \u2466 Append to Google Sheet\n### \u2022 On the Sheets node \u2192 Credential \u2192 **Create New \u2192 \u201cGoogle Sheets OAuth2\u201d** \u2192 **Sign in with Google** \u2192 allow access \u2192 pick your sheet"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "executionOrder": "v1"
  },
  "versionId": "dca92d12-1054-4b46-a4ae-483521533580",
  "connections": {
    "Verify Emails": {
      "main": [
        [
          {
            "node": "Merge lead + verification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When you click Test": {
      "main": [
        [
          {
            "node": "Run Google Maps Lead Finder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Keep only safe-to-send": {
      "main": [
        [
          {
            "node": "Append lead to Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge lead + verification": {
      "main": [
        [
          {
            "node": "Keep only safe-to-send",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run Google Maps Lead Finder": {
      "main": [
        [
          {
            "node": "Keep leads with a verified email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Keep leads with a verified email": {
      "main": [
        [
          {
            "node": "Verify Emails",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge lead + verification",
            "type": "main",
            "index": 1
          }
        ]
      ]
    }
  }
}