Du hittar leads, och sedan börjar den ”enkla delen”. Kopiera webbplatsen, leta efter en e-postadress, klistra in i ett ark, skriva ett meddelande, skicka det, uppdatera status, följa upp, upprepa. Det är långsamt, och det är den sortens långsamhet som tyst dödar konsekvensen.
Den här Apify Gmail-automationen slår hårdast mot byråägare eftersom pipeline är syre. En frilansare som gör outreach mellan kundjobb känner det också. Detsamma gäller marknadschefer som vill ha lead gen som rullar utan att behöva barnvakta ett kalkylark.
Det här flödet hämtar färska B2B-leads, använder AI för att extrahera kontaktmejl, skickar personaliserade kalla mejl via Gmail och loggar sedan varje utskick och status i Google Sheets (med Telegram-notiser). Du får se vad det automatiserar, vilka resultat du kan förvänta dig och vad du behöver se upp med.
Så fungerar automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Apify + Gmail: skicka kalla mejl, logga i Sheets
flowchart LR
subgraph sg0["On form submission Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send a text message"]
n1@{ icon: "mdi:database", form: "rounded", label: "Append row in sheet", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Append or update row in sheet", pos: "b", h: 48 }
n5@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Information Extractor1", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n11@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n12@{ icon: "mdi:robot", form: "rounded", label: "Information Extractor", pos: "b", h: 48 }
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP Request"]
n14["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>On form submission"]
n2 --> n1
n9 --> n8
n3 --> n12
n6 --> n5
n13 --> n3
n5 --> n4
n5 --> n0
n10 --> n9
n11 -.-> n12
n14 --> n13
n7 -.-> n8
n1 --> n10
n12 --> n2
n8 --> n6
n4 --> n10
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 n14 trigger
class n8,n12 ai
class n7,n11 aiModel
class n2,n3 decision
class n1,n4 database
class n13 api
classDef customIcon fill:none,stroke:none
class n0,n13,n14 customIcon
Problemet: kall outreach blir kalkylarksarbete
Kall e-postoutreach låter enkelt tills du gör det i volym. Du skrapar en lista, halva webbplatserna är skräp, ”kontakt”-sidan är gömd och du slutar med att gissa e-postadresser eller hoppa över bra leads eftersom tiden inte räcker. Sedan skickar du ojämnt eftersom personliga inledningar blir tröttsamma efter den tionde fliken. Och den verkliga smällen: uppföljning och spårning. Om du inte loggar varje utskick tappar du kontrollen över uppföljningar och du kan inte se vad som fungerade förra veckan.
Friktionen byggs på. Inte för att ett steg är svårt, utan för att det finns för många steg som kräver uppmärksamhet.
- Att skrapa leads och rensa listan blir en timme av ”bara kolla webbplatser” innan du ens börjar mejla.
- E-postadresser missas eller kopieras fel, vilket leder till studs och bortkastade utskick.
- Personalisering hoppas ofta över, så dina mejl känns generiska och svaren torkar ut.
- Statusspårningen fallerar så fort du får mycket att göra, så uppföljningar sker sent (eller aldrig).
Lösningen: skrapa leads, extrahera e-post, skicka och logga automatiskt
Det här flödet gör outreach till ett kontrollerat, repeterbart system. Du börjar med att ange ett sökord och en plats (till exempel ”marknadsföringsbyråer i London”) via en formulär-trigger. n8n skickar den frågan till Apify via en HTTP-förfrågan, hämtar företag och webbplatser och filtrerar bort poster som inte ser användbara ut. Sedan skannar en AI-extraktor det som finns (webbplatstext, strukturerade fält, vad Apify än returnerar) och plockar ut kontaktmejl. Om mejladressen går igenom en formatkontroll skriver flödet in leadet i Google Sheets, tar fram ett personaliserat kallt mejl med en OpenAI-chattmodell utifrån din valda ton, lägger till sändmetadata och skickar via Gmail. Till sist uppdaterar det arket med sändstatus och pingar dig i Telegram så att du kan följa progressen i realtid.
Flödet börjar med dina sökkriterier och slutar med ett skickat mejl plus en kalkylarksrad du kan lita på. Däremellan batchar det leads, pausar mellan utskick och använder AI där det faktiskt hjälper: extrahera mejl och skriva första utkast som inte låter som en mall.
Vad du får: automatisering vs. resultat
| Vad flödet automatiserar | Vilka resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du vill mejla 40 nya leads varje vecka. Manuellt kanske du lägger cirka 5 minuter per lead på att hitta en användbar webbplats och ett kontaktmejl, sedan ytterligare 5 minuter på att skriva och skicka, plus 1 minut på att logga status. Det är ungefär 7 timmar repetitivt arbete. Med det här flödet lägger du cirka 10 minuter på att ange din sökning och granska arket, och låter sedan n8n processa och skicka i bakgrunden med inbyggda pauser. Du har fortfarande kontroll, men du fastnar inte i att sitta och skriva.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Apify för att skrapa riktade B2B-företagsposter
- Gmail för att skicka outreach från din inkorg
- Google Sheets för lead-loggning och spårning av utskick
- OpenAI API-nyckel (hämta den i OpenAI-dashboarden)
- Apify API-token (hämta den i Apify Console-inställningar)
- Telegram bot-token + chat-ID (hämta från BotFather och din chatt)
Kunskapsnivå: Medel. Du kopplar konton, mappar ett Google Sheet och justerar AI-prompter för ditt erbjudande.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Du skickar in en sökförfrågan. Flödet startar från en formulärinput-trigger (eller manuell körning) där du anger företagskategori och plats du vill rikta in dig på.
Leads skrapas och rensas. n8n anropar Apify via en HTTP-förfrågan och filtrerar sedan webbplatsposter så att du inte slösar tid på tomma sajter, dubletter eller uppenbart lågkvalitativa poster.
AI hittar mejl och skriver utkastet. En informationsextraktor plockar ut kontaktmejl, och en e-postformatkontroll hindrar dåliga adresser från att komma in i din pipeline. En chattmodell skriver outreach-meddelandet och en composer formar det till ett mejl som är klart att skicka med din ton.
Gmail skickar och Sheets blir din källa till sanning. Flödet skickar mejl med en kort paus mellan meddelanden, uppdaterar varje rad i Google Sheets med aktuell status och skickar Telegram-notiser så att du snabbt kan upptäcka fel.
Du kan enkelt ändra mejltonen och kolumnerna i Google Sheets efter dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera formulärtriggern
Ställ in formuläret som startar lead-insamlingen och triggar API-uppslagningen.
- Lägg till och öppna Form Input Trigger.
- Ställ in Form Title till
Lead Collect Tooloch Form Description tillProvide the info below.... - Konfigurera formulärfält i Form Fields med etiketter och platshållare:
Business Type,Location,Lead Number(number) ochEmail Style(rullgardinsalternativ:Friendly,Professional,Simple). - Ställ in Options → Button Label till
Submit GO 🚀. - Koppla Form Input Trigger till External API Request.
Steg 2: Konfigurera hämtning av leads från det externa API:et
Använd den inskickade formulärdatan för att begära lead-poster från det externa API:et och filtrera fram giltiga webbplatser.
- Öppna External API Request och ställ in URL till
https://api.apify.com. - Aktivera Send Body och ställ in Specify Body till
json. - Ställ in JSON Body till den angivna payloaden med formuläruttryck, inklusive
{{ $json.Location }},{{ $json['Lead Number'] }}och{{ $json['Business Type'] }}. - Öppna Filter Website Records och lägg till ett villkor som kontrollerar att leftValue
={{ $json.website }}exists. - Koppla External API Request → Filter Website Records.
Steg 3: Anslut Google Sheets
Lagra leads och uppdatera status i Google Sheets medan arbetsflödet körs.
- Öppna Add Sheet Entry och ställ in Operation till
append. - Matcha kolumner mot värden med uttryck som
{{ $('Filter Website Records').item.json.title }}för Company Name och{{ $json.output['Email Address'] }}för Email Address. - Öppna Upsert Sheet Status och ställ in Operation till
appendOrUpdatemed Matching Columns satt tillEmail Address. - Mappa SEND Time till
{{ $('Set Send Metadata').item.json['Send Time'] }}och Cold Mail Status till✅. - Koppla Email Format Check → Add Sheet Entry och Upsert Sheet Status → Batch Iterator.
Credential Required: Anslut era Google Sheets-uppgifter i Add Sheet Entry och Upsert Sheet Status.
Steg 4: Ställ in AI-extraktion, validering och utkast av e-post
Extrahera e-postadresser från webbplatser, validera format, iterera genom leads och generera kalla e-postmeddelanden med AI.
- Öppna Email Extractor AI och ställ in Text till
Website: {{ $json.website }}. - Säkerställ att OpenAI Chat Engine är ansluten som språkmodell för Email Extractor AI; lägg till credentials i OpenAI Chat Engine.
- Konfigurera Email Format Check för att validera att leftValue
={{ $json.output['Email Address'] }}contains@. - I Batch Iterator behåller ni standardinställningarna för att bearbeta leads i batcher och kopplar Add Sheet Entry → Batch Iterator.
- Infoga Pause for Response efter Batch Iterator (andra utgången) för att styra timing, och koppla den sedan till Cold Email Composer.
- Öppna Cold Email Composer och behåll den angivna prompten, och säkerställ att uttryck som
{{ $('Batch Iterator').item.json['Company Name'] }}och{{ $('Form Input Trigger').item.json['Email Style'] }}bevaras. - Säkerställ att OpenAI Draft Engine är ansluten som språkmodell för Cold Email Composer; lägg till credentials i OpenAI Draft Engine.
Credential Required: Anslut era OpenAI-uppgifter i OpenAI Chat Engine och OpenAI Draft Engine. Lägg till credentials i dessa överordnade noder, inte i Email Extractor AI eller Cold Email Composer.
Steg 5: Konfigurera utskick av e-post och notifieringar
Skicka det genererade mejlet, uppdatera status i arket och notifiera Telegram parallellt.
- Öppna Set Send Metadata och ställ in Send Time till
{{$now.toFormat("dd-MM-yyyy (h:mm:s a)")}}och Email Address till{{ $('Pause for Response').item.json['Email Address'] }}. - Öppna Dispatch Email och ställ in Send To till
{{ $json['Email Address'] }}, Subject till{{ $('Cold Email Composer').item.json.output['Mail Subject'] }}och Message till{{ $('Cold Email Composer').item.json.output['Mail Body'] }}. - Bekräfta att Dispatch Email skickar utdata till både Upsert Sheet Status och Telegram Status Notice parallellt.
- Öppna Telegram Status Notice och behåll meddelandemallen som använder uttryck som
{{ $('Batch Iterator').item.json['Company Name'] }}och{{ $('Set Send Metadata').item.json['Email Address'] }}.
Credential Required: Anslut era Gmail-uppgifter i Dispatch Email.
Credential Required: Anslut era Telegram-uppgifter i Telegram Status Notice.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att verifiera funktionaliteten end-to-end innan ni aktiverar arbetsflödet.
- Klicka på Execute Workflow och skicka in en provpost via Form Input Trigger.
- Verifiera att External API Request returnerar data och att Filter Website Records släpper igenom items med en
website. - Bekräfta att Email Extractor AI ger en giltig e-postadress och att Email Format Check routar den till Add Sheet Entry.
- Säkerställ att Dispatch Email skickar ett mejl och att Upsert Sheet Status och Telegram Status Notice båda körs parallellt.
- När ni är nöjda, växla arbetsflödet till Active för användning i produktion.
Vanliga fallgropar
- Apify-inloggning kan löpa ut eller så kan aktorn kräva extra behörigheter. Om något slutar fungera, kontrollera din Apify-token i n8n Credentials och bekräfta att aktorn fortfarande kör i Apify Console.
- Om du använder Wait-noder eller extern skrapning varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Gmail kan vara känsligt för sändmönster, särskilt från nya konton. Håll batchstorleken modest i början och se till att din ”Från”-identitet och signatur är konfigurerade i Gmail innan du automatiserar utskick.
Vanliga frågor
Cirka en timme om dina konton och ditt ark är redo.
Nej. Du kopplar främst konton och justerar några prompter och kolumnmappningar.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in OpenAI API-användning (ofta några cent per batch av mejl) och Apify-körkostnader beroende på aktor och volym.
Två alternativ: n8n Cloud (hanterad, enklast att sätta upp) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Ändra tonen genom att redigera prompten som används i noderna OpenAI Draft Engine och Cold Email Composer, och lägg sedan till en andra ”uppföljnings”-gren som återanvänder samma lead-rad från Google Sheets. Vanliga justeringar är att lägga in en anpassad öppning baserat på bransch, byta ”vänlig” mot ”professionell” och lägga till ett villkor som hoppar över utskick om ett lead redan har status ”Skickat”.
Oftast handlar det om en Google-auktorisering i n8n som har löpt ut eller återkallats. Anslut Gmail-credential på nytt och bekräfta sedan att Gmail-noden använder rätt Google-konto och rätt ”Från”-alias. Det kan också fallera om din Google Workspace-admin blockerar tredjepartsåtkomst, eller om Gmail flaggar utskicket som misstänkt efter en stor topp. Om det fungerar för några mejl och sedan stoppar, sänk tempot i batchen och minska den dagliga volymen.
Det beror på din n8n-plan och hur försiktig du vill vara med Gmail, men att hantera några hundra leads i veckan är realistiskt för många upplägg.
För det här flödet är n8n oftast en bättre match eftersom logiken inte bara är ”trigger och skicka”. Du har batchning, filter, en gate för e-postformat, AI-extraktion, AI-utkast och status-upserts tillbaka till Google Sheets. Zapier och Make kan göra delar av det, men kostnaderna drar snabbt iväg när du lägger till förgreningar och hög task-volym. Dessutom förändrar egen hosting i n8n kalkylen om du kör outreach varje dag. Om du bara behöver ett enkelt flöde ”ny rad i Sheets → skicka mejl” kan Zapier gå snabbare. Prata med en automationsexpert om du vill ha hjälp att välja.
Sätt upp det en gång och låt sedan din outreach rulla med skyddsräcken. Flödet tar hand om de repetitiva delarna, och du behåller överblicken i Sheets och Telegram när det behövs.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.