Att kopiera leads från ett kalkylark in i Instantly är en sån uppgift som ser “snabb” ut tills den i tysthet äter upp hela veckan. Dubbletter smyger sig in. Någon importerar samma lista två gånger. Kampanjerna blir röriga och du börjar tvivla på vad som faktiskt gick iväg.
Den här Instantly lead sync-automationen träffar marketing ops först, men byråägare och grundare som sköter sin egen outbound känner det också. Resultatet är enkelt: nya leads flyttas från Google Sheets till rätt Instantly-kampanj automatiskt, och e-postadresser som redan synkats läggs inte till igen.
Nedan ser du hur arbetsflödet fungerar, vad det automatiserar och vad som förändras när din leadlista får en riktig “source of truth” i stället för en skör importrutin.
Så fungerar den här automationen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Google Sheets till Instantly: dubblettfria leads
flowchart LR
subgraph sg0["Scheduled Automation Flow"]
direction LR
n4@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Automation Trigger", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Fetch Table Rows", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Iterate Lead Records", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "Generate Lead Entry", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Update Lead Status", pos: "b", h: 48 }
n5 --> n6
n7 --> n8
n8 --> n6
n6 --> n7
n4 --> n5
end
subgraph sg1["Manual Execution Start Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Execution Start", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Retrieve Sheet Rows", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Batch Iterator", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Modify Table Rows", pos: "b", h: 48 }
n3 --> n2
n2 --> n3
n1 --> n2
n0 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n4,n0 trigger
class n1 database
Problemet: lead-importer skapar dubbletter och blinda fläckar
Kalkylark är grymma för att samla leads. De är usla på att bevisa vad som hände sen. När du börjar köra outbound behöver du veta vilka leads som synkats, vilken kampanj de hamnade i och vilka som misslyckades. Manuella exporter och Instantly-importer faller snabbt isär eftersom du litar på minnet, filnamn som “leads-final-v3.csv”, och att någon kommer ihåg att ta bort dubbletter. Sedan får din leveransbarhet en smäll eftersom samma adress träffas två gånger, och du lägger tid på att reda ut det i stället för att lansera nästa kampanj.
Det går fort att det drar iväg. Här är var det brister i verkligheten.
- Du råkar importera samma e-postadresser igen eftersom det inte finns någon pålitlig “synkad”-status i ditt flöde.
- Varje manuell import är en ny chans att mappa fält fel, särskilt när kolumnerna i arket ändras över tid.
- När ett API-anrop eller en uppladdning misslyckas halvvägs vet du inte vad som kom in och vad som inte gjorde det.
- Att skala från 50 till 1 000 leads blir ett problem med rate limits och timeouts, inte ett tillväxtproblem.
Lösningen: Google Sheets → n8n Data Table → Instantly, med statushantering
Det här arbetsflödet skapar en strukturerad och repeterbar lead-pipeline genom att lägga till ett enkelt mellanlager: en n8n Data Table som heter “Leads”. Först hämtar du leads från Google Sheets och laddar in dem i tabellen i kontrollerade batchar, så att stora listor inte timear ut. Under inläsningen sparar flödet även nyttig kontext, som kontaktens jobbtitel, i ett fält som heter “focusarea” (praktiskt senare för personalisering). Därefter, enligt ett schema, kontrollerar flödet Data Table efter leads markerade som nya (“campaign = start”), skickar dem till din valda Instantly-kampanj via API och uppdaterar direkt varje post till “added to instantly”. Den statusväxlingen är hela poängen. Det är så automationen förhindrar dubbletter utan att du behöver vakta kalkylark hela dagen.
Arbetsflödet kan startas antingen manuellt (perfekt för test) eller enligt ett timschema. Leads behandlas i batchar när de kommer från Sheets och skickas sedan till Instantly en och en för mer pålitlig synk och renare felhantering. Till sist blir Data Table din revisionslogg så att du kan lita på vad som finns i kampanjen.
Det du får: automation vs. resultat
| Det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du lägger till 100 nya leads i ett Google Sheet varje vecka. Manuellt exporterar du oftast en CSV, importerar till Instantly, tar bort dubbletter och stickprovar fält—vilket lätt blir 45 minuter till en timme per batch. Med det här flödet kör du synken Sheet → Data Table en gång (den blir vanligtvis klar på under en minut för 100 leads), och sedan skickar den schemalagda synken nya poster till Instantly med ungefär ett lead per sekund. Du lägger tiden på att läsa svar, inte på att vakta importer.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra och uppdatera din leadlista
- Instantly för att köra e-postkampanjer och sekvenser
- Instantly API-nyckel (hämta den i Instantly Settings → API)
Kunskapsnivå: Nybörjare. Du kopplar konton, väljer rätt sheet/tabell och klistrar in din Instantly API-nyckel och kampanj-ID.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En manuell eller schemalagd trigger startar körningen. Du kan köra flödet manuellt när du testar och sedan förlita dig på schematriggern (timvis som standard) när du litar på det.
Google Sheets-rader hämtas och bearbetas i batchar. Flödet hämtar rader från ditt sheet och använder sedan en batch-loop (30 åt gången) så att en stor lista inte överbelastar din instans eller orsakar API-timeouts.
Leads lagras och berikas i en n8n Data Table. Varje lead skapas eller uppdateras baserat på e-post, och kolumnen Title kopieras till ett fält som heter “focusarea” så att du har något användbart för segmentering senare.
Endast “nya” leads skickas till Instantly och markeras sedan som synkade. Vid varje schemalagd synk hämtar flödet rader i Data Table där kampanjstatus är “start”, skapar leadet i din valda Instantly-kampanj och ändrar status till “added to instantly”.
Du kan enkelt justera batchstorleken för att hantera större listor utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: konfigurera den manuella triggern
Konfigurera den manuella startpunkten så att ni kan hämta färsk lead-data från Google Sheets vid behov.
- Lägg till eller välj Manual Execution Start som triggernod.
- Koppla Manual Execution Start till Retrieve Sheet Rows.
- Säkerställ att workflowet är sparat så att den manuella triggern kan köras.
Steg 2: anslut Google Sheets
Konfigurera kalkylbladskällan där lead-raderna lagras.
- Öppna Retrieve Sheet Rows och välj kalkylbladets Document ID till
instantly leads. - Ställ in Sheet Name till
apollo-contacts-export 9. - Inloggningsuppgifter krävs: Anslut era
googleSheetsOAuth2Api-inloggningsuppgifter. - Bekräfta att Retrieve Sheet Rows skickar output till Batch Iterator.
Steg 3: konfigurera batchbearbetning och uppdateringar i datatabellen
Bearbeta inkommande rader i batchar och uppdatera er n8n-datatabell med lead-fält.
- I Batch Iterator, ställ in Batch Size till
30. - Öppna Modify Table Rows och ställ in Operation till
update. - I Modify Table Rows, ställ in Data Table till
Leads. - Konfigurera filtret så att matchning sker via e-post: sätt keyName till
emailoch keyValue till={{ $json.Email }}. - Mappa fältet focusarea till
={{ $json.Title }}i kolumnmappningen. - Säkerställ att Modify Table Rows loopar tillbaka till Batch Iterator för kontinuerlig batchning.
Steg 4: konfigurera schemalagd lead-bearbetning och synk till Instantly
Schemalägg automatiserad bearbetning av kampanjleads för “start” och synka dem till Instantly.
- Öppna Scheduled Automation Trigger och definiera den intervallregel som passar er takt.
- I Fetch Table Rows, ställ in Operation till
getoch filtrera på att campaign är lika medstart. - Bekräfta att Fetch Table Rows är kopplad till Iterate Lead Records.
- Öppna Generate Lead Entry och ställ in Resource till
lead. - Ställ in Email till
={{ $json.Email }}, First Name till={{ $json.Firstname }}och Company Name till={{ $json.company }}. - I Generate Lead Entry under additional fields, ställ in Website till
={{ $json.Website }}och välj Campaign somLaunchday 1. - Inloggningsuppgifter krävs: Anslut era
instantlyApi-inloggningsuppgifter i Generate Lead Entry. - Öppna Update Lead Status och ställ in Operation till
updatemed kolumnvärdet campaignadded to instantly. - Ställ in filtret i Update Lead Status så att det matchar Email med
={{ $json.email }}. - Säkerställ att loopen går tillbaka från Update Lead Status till Iterate Lead Records.
Email (ark) och email (tabell). Säkerställ att era kolumner i datatabellen matchar exakt dessa nycklar.Steg 5: testa och aktivera ert workflow
Kör ett manuellt test, verifiera uppdateringar och aktivera sedan schemalagd körning.
- Klicka på Execute Workflow för att köra Manual Execution Start och bekräfta att rader hämtas av Retrieve Sheet Rows.
- Verifiera att Modify Table Rows uppdaterar datatabellen
Leadsmed de mappade fälten. - Trigga Scheduled Automation Trigger manuellt för att bekräfta att Fetch Table Rows endast returnerar poster med
campaign = start. - Bekräfta att Generate Lead Entry skapar leads i Instantly och att Update Lead Status markerar dem som
added to instantly. - Slå på workflowet med reglaget Active för att aktivera schemalagd bearbetning.
Vanliga fallgropar
- Google Sheets OAuth-uppgifter kan löpa ut eller tappa behörigheter. Om saker slutar fungera, kontrollera Google Sheets-uppgiften i n8n:s Credentials-vy och autentisera om först.
- Om du använder batchning och din n8n-instans är underdimensionerad varierar processtiderna. Sänk batchstorleken om arbetsflödet börjar timea ut eller misslyckas mitt i en körning.
- Instantly API-anrop misslyckas om ditt kampanj-ID är fel eller om din API-nyckel ändras. Dubbelkolla inloggningsuppgifterna i Instantly-noden och bekräfta kampanj-ID i Instantly under Campaign settings.
Vanliga frågor
Cirka 30 minuter om ditt sheet och din Instantly-kampanj är redo.
Nej. Du kopplar Google Sheets och Instantly och bekräftar sedan din kolumnmappning och kampanj-ID. Logiken är redan inbyggd i arbetsflödet.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis testperiod på n8n Cloud. Cloud-planer startar på 20 $/månad för högre volymer. Du behöver också räkna in Instantly-kostnader (din plan) och normal användning av Google Sheets.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och klarar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, men då vill du justera logiken för statusfältet. Många team lägger till en andra kolumn som “campaign_id” (eller “target_campaign”) i Google Sheets eller Data Table och mappar sedan det värdet till Instantly-noden “Create a lead”. Du kan också duplicera den schemalagda synk-vägen per kampanj om du vill hålla det enkelt. Nyckeln är att behålla en meningsfull status i Data Table så att deduplicering fortsatt fungerar.
Oftast beror det på en ogiltig API-nyckel eller att kampanj-ID fortfarande är satt till exempelvärdet. Återskapa din Instantly API-nyckel vid behov, klistra in den i Instantly-uppgiften i n8n och bekräfta sedan kampanj-ID inne i dina Instantly-kampanjinställningar. Kontrollera också att leadets e-postadress är giltig, eftersom en dålig post kan få ett enskilt API-anrop att misslyckas även när själva arbetsflödet är okej.
Många. Importen från Google Sheets körs i batchar (30 som standard), och Instantly-synken skickar vanligtvis cirka 1 lead per sekund, så även 1 000 leads är hanterbart.
Ofta, ja, eftersom den här lösningen bygger på en riktig statustabell för att förhindra dubbletter—inte bara “jag tror att jag redan skickade den raden”. n8n gör det också enklare att batcha, loopa och uppdatera poster med din egen logik utan att betala extra för varje gren. En annan stor grej är self-hosting, vilket gör att du kan köra frekventa synkar utan att varje dag behöva hålla koll på task-limiter. Zapier eller Make kan fortfarande vara bra för en lättviktig tvåstegssynk, särskilt om du inte tror att listan kommer växa. Om du vill ha hjälp att välja, prata med en automationsexpert.
När din leadlista har en riktig synkstatus slutar outbound kännas skört. Sätt upp det, kör dina kampanjer och låt arbetsflödet ta hand om de repetitiva delarna.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.