{
  "name": "Google Maps Lead Generator v1",
  "nodes": [
    {
      "parameters": {
        "actorId": {
          "__rl": true,
          "value": "nwua9Gu5YrADL7ZDj",
          "mode": "list",
          "cachedResultName": "Google Maps Scraper (compass/crawler-google-places)",
          "cachedResultUrl": "https://console.apify.com/actors/nwua9Gu5YrADL7ZDj/input"
        },
        "customBody": "=\n{\n    \"searchStringsArray\": [\n        \"{{ $json.Keywords }}\"\n    ],\n    \"locationQuery\": \"{{ $json.Location }}\",\n    \"maxCrawledPlacesPerSearch\": {{ $json.Limit }},\n    \"language\": \"fr\",\n    \"scrapeContacts\": true,\n    \"countryCode\": \"fr\"\n}",
        "memory": 2048
      },
      "type": "@apify/n8n-nodes-apify.apify",
      "typeVersion": 1,
      "position": [
        -864,
        -160
      ],
      "id": "ab1196c1-5fb8-4ad6-b915-dc708ce7dc19",
      "name": "Run an Actor",
      "credentials": {
        "apifyApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "formTitle": "Hunter",
        "formDescription": "Acquisition clients via Google Maps",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Keywords",
              "defaultValue": "cabinets comptables",
              "requiredField": true
            },
            {
              "fieldLabel": "Location",
              "placeholder": "City, Country",
              "requiredField": true
            },
            {
              "fieldLabel": "Limit",
              "fieldType": "number",
              "defaultValue": "20",
              "requiredField": true
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.formTrigger",
      "typeVersion": 2.6,
      "position": [
        -1088,
        -160
      ],
      "id": "2055bd08-fa63-4e95-b524-bdc1c9a03c0d",
      "name": "search leads"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 3
          },
          "conditions": [
            {
              "id": "ce050388-8206-41bd-b475-652294729f48",
              "leftValue": "={{ $json.status }}",
              "rightValue": "=SUCCEEDED",
              "operator": {
                "type": "string",
                "operation": "equals"
              }
            },
            {
              "id": "ea4aa003-08df-4275-9c8e-6c05fc6198e0",
              "leftValue": "={{ $json.defaultDatasetId }}",
              "rightValue": "",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.3,
      "position": [
        -640,
        -160
      ],
      "id": "9fd95cf6-26c2-4676-9267-aad174f011c9",
      "name": "succeeded ?"
    },
    {
      "parameters": {
        "url": "=https://api.apify.com/v2/datasets/{{ $json.defaultDatasetId }}/items?format=json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "apifyApi",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.4,
      "position": [
        -416,
        -160
      ],
      "id": "558049c8-b841-414d-9254-0438d2e9c312",
      "name": "get leads",
      "credentials": {
        "apifyApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "YOUR_GOOGLE_SHEET_ID",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "with email",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "title": "={{ $json.title }}",
            "website": "={{ $json.website }}",
            "phone": "={{ $json.phone }}",
            "email": "={{ $json.email }}",
            "city": "={{ $json.city }}",
            "searchString": "={{ $json.searchString }}",
            "subject": "={{ $json.subject }}",
            "j0": "={{ $json.j0 }}",
            "j3": "={{ $json.j3 }}",
            "j7": "={{ $json.j7 }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "title",
              "displayName": "title",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "website",
              "displayName": "website",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "phone",
              "displayName": "phone",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "email",
              "displayName": "email",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "city",
              "displayName": "city",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "searchString",
              "displayName": "searchString",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "subject",
              "displayName": "subject",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "j0",
              "displayName": "j0",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "j3",
              "displayName": "j3",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "j7",
              "displayName": "j7",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "j0_date",
              "displayName": "j0_date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "j3_date",
              "displayName": "j3_date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "j7_date",
              "displayName": "j7_date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "sending_log",
              "displayName": "sending_log",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "status",
              "displayName": "status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "messageId",
              "displayName": "messageId",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        1376,
        -256
      ],
      "id": "1872ae16-d913-40da-ba22-76891f07f5a0",
      "name": "save leads",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "3d098a65-67c2-4a96-8b7d-68ab080e19ad",
              "name": "title",
              "value": "={{ $json.title }}",
              "type": "string"
            },
            {
              "id": "6e66443f-1435-493c-8c00-29986a30f088",
              "name": "website",
              "value": "={{ $json.website }}",
              "type": "string"
            },
            {
              "id": "937ad18a-ada5-4b4e-8d18-f97395d21aa2",
              "name": "phone",
              "value": "={{ $json.phoneUnformatted }}",
              "type": "string"
            },
            {
              "id": "60bff893-843c-43db-84fe-c01393874255",
              "name": "emails",
              "value": "={{ $json.emails }}",
              "type": "array"
            },
            {
              "id": "dc446dc1-990c-47be-9718-d33f1f5ca76e",
              "name": "city",
              "value": "={{ $json.city }}",
              "type": "string"
            },
            {
              "id": "348c0fd6-c7aa-4e4c-8e4a-913e9b4c093d",
              "name": "searchString",
              "value": "={{ $json.searchString }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        -192,
        -160
      ],
      "id": "dec33d1e-7b69-4b0c-9cc3-0b510e8a3b03",
      "name": "Edit Fields"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 3
          },
          "conditions": [
            {
              "id": "45b8d648-bf64-4055-95d2-e88eed43cc13",
              "leftValue": "={{ $json.email }}",
              "rightValue": 0,
              "operator": {
                "type": "string",
                "operation": "notExists",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2.3,
      "position": [
        1152,
        -64
      ],
      "id": "11c52cb2-36d9-406d-8e32-4d7998935b59",
      "name": "leads without email"
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "YOUR_GOOGLE_SHEET_ID",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "with email",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=0"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        256,
        -256
      ],
      "id": "0fa87630-bcdd-48bb-8527-57b348b46ee8",
      "name": "leads with email",
      "executeOnce": true,
      "retryOnFail": true,
      "alwaysOutputData": true,
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "const leadsWithEmail = new Set($input.all().map(lead => lead.json.email));\nconst leadsWithoutEmail = new Set($input.all().map(lead => lead.json.website));\n\nconst newLeads = $(\"choose best email address\").all();\nconst loggableLeads = newLeads.filter(lead => lead.json.email ? !leadsWithEmail.has(lead.json.email) : !leadsWithoutEmail.has(lead.json.website))\n  \nreturn loggableLeads;"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        704,
        -160
      ],
      "id": "76e32716-3378-43d0-bdab-772e7479aa6e",
      "name": "skip duplication"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3.2,
      "position": [
        480,
        -160
      ],
      "id": "1803a8c4-ec63-4677-baed-a4c506767c79",
      "name": "merge"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 3
          },
          "conditions": [
            {
              "id": "45b8d648-bf64-4055-95d2-e88eed43cc13",
              "leftValue": "={{ $json.email }}",
              "rightValue": 0,
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2.3,
      "position": [
        1152,
        -256
      ],
      "id": "e9672532-0e0b-44fb-8258-06b8d33c2a11",
      "name": "leads with email_"
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "YOUR_GOOGLE_SHEET_ID",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": 1136827919,
          "mode": "list",
          "cachedResultName": "without email",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=1136827919"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        256,
        -64
      ],
      "id": "e299aff4-d52d-432f-898f-2981466af25a",
      "name": "leads without email_",
      "executeOnce": true,
      "retryOnFail": true,
      "alwaysOutputData": true,
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "const leads = [];\nconst roleBased = /^(info|contact|hello|support|admin|no-?reply|secretariat)@/i;\n\nfor (const lead of $input.all()) {\n  lead.json.email = lead.json.emails.find(e => !roleBased.test(e) || lead.json.emails[0]);\n  delete lead.json.emails;\n  leads.push(lead);\n}\n\nreturn leads;"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        32,
        -160
      ],
      "id": "35c8572a-88cc-4cce-996f-194a8a762d5f",
      "name": "choose best email address"
    },
    {
      "parameters": {
        "jsCode": "let leads = [];\nfunction buildMessage(title, city){\n  const j0 = `Bonjour,\\n\\nJe suis tomb\u00e9 sur ${title} en regardant du c\u00f4t\u00e9 des cabinets comptables de ${city}.\\nJe m'appelle Eyitola, je construis des automatisations pour des ind\u00e9pendants et PME.\\n\\nUne question rapide : entre les clients qui oublient d'envoyer leurs pi\u00e8ces avant la cl\u00f4ture, les factures qui arrivent par mail/courrier/WhatsApp un peu partout, et les \u00e9ch\u00e9ances fiscales qu'on rate parce que personne n'y pense \u00e0 temps, laquelle vous fait perdre le plus de temps actuellement ?\\n\\nEyitola`;\n\n  const j3 = `Bonjour,\\n\\nJe fais court, je sais que les emails s'accumulent vite.\\n\\nSi un des points que je mentionnais (pi\u00e8ces, factures, \u00e9ch\u00e9ances) vous parle particuli\u00e8rement, dites-le-moi et je vous explique concr\u00e8tement comment je m'y prendrais pour ${title}.\\nEt si ce n'est pas le bon moment, dites-le-moi aussi, on garde le contact.\\n\\nEyitola`;\n\n  \n  const j7 = `Bonjour,\\n\\nDernier message de ma part, pour clore proprement.\\n\\nSi l'un des points \u00e9voqu\u00e9s (pi\u00e8ces, factures, \u00e9ch\u00e9ances) reste un vrai sujet pour ${title}, dites-le-moi simplement, ou parlez-moi d'un autre point qui vous prend du temps en ce moment. Je reste disponible.\\nSinon, aucun souci, je ne reviens pas l\u00e0-dessus.\\n\\nEyitola`\n  return {j0, j3, j7};\n}\n\n\n\nfor (const lead of $input.all()) {\n  if (lead.json.title) {\n  lead.json.subject = `3 automatisations pour ${lead.json.title}`;\n    ({j0: lead.json.j0, j3: lead.json.j3, j7: lead.json.j7} = buildMessage(lead.json.title, lead.json.city))\n    leads.push(lead);\n  }\n}\n\nreturn leads;"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        928,
        -160
      ],
      "id": "f0c826a8-c5f8-403a-9e7a-28c3ce06af65",
      "name": "messages setter"
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "YOUR_GOOGLE_SHEET_ID",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": 1136827919,
          "mode": "list",
          "cachedResultName": "without email",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=1136827919"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "title": "={{ $json.title }}",
            "website": "={{ $json.website }}",
            "phone": "={{ $json.phone }}",
            "city": "={{ $json.city }}",
            "searchString": "={{ $json.searchString }}",
            "subject": "={{ $json.subject }}",
            "j0": "={{ $json.j0 }}",
            "j3": "={{ $json.j3 }}",
            "j7": "={{ $json.j7 }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "title",
              "displayName": "title",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "website",
              "displayName": "website",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "phone",
              "displayName": "phone",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "city",
              "displayName": "city",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "searchString",
              "displayName": "searchString",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "subject",
              "displayName": "subject",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "j0",
              "displayName": "j0",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "j3",
              "displayName": "j3",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "j7",
              "displayName": "j7",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        1376,
        -64
      ],
      "id": "182b6937-4364-4424-9ab5-c2e098c74023",
      "name": "saving",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Run an Actor": {
      "main": [
        [
          {
            "node": "succeeded ?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "search leads": {
      "main": [
        [
          {
            "node": "Run an Actor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "succeeded ?": {
      "main": [
        [
          {
            "node": "get leads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get leads": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "choose best email address",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "leads without email": {
      "main": [
        [
          {
            "node": "saving",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "leads with email": {
      "main": [
        [
          {
            "node": "merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "skip duplication": {
      "main": [
        [
          {
            "node": "messages setter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "merge": {
      "main": [
        [
          {
            "node": "skip duplication",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "leads with email_": {
      "main": [
        [
          {
            "node": "save leads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "leads without email_": {
      "main": [
        [
          {
            "node": "merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "choose best email address": {
      "main": [
        [
          {
            "node": "leads with email",
            "type": "main",
            "index": 0
          },
          {
            "node": "leads without email_",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "messages setter": {
      "main": [
        [
          {
            "node": "leads without email",
            "type": "main",
            "index": 0
          },
          {
            "node": "leads with email_",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "binaryMode": "separate"
  },
  "versionId": "8c134a72-7646-4569-9d54-c35306f16ae1",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodeGroups": [],
  "id": "CY0faQPQv9ZYq7Op",
  "tags": []
}