Du hittar ett “nyligen finansierat” bolag, sedan kopierar du namn till ett kalkylark, sedan letar du efter en e-postadress, sedan skriver du ett kallt mejl från grunden. När du väl trycker på skicka är leadet kallt och dina anteckningar är utspridda över fem flikar.
Det här är den typen av röra som först bromsar SDR:er, men growth marketers och byråägare som kör outbound för kunder känner också av det. Med funded leads automation går du från “vem ska vi kontakta?” till “utkast klart i kalkylarket” i ett enda körning.
Det här flödet hämtar finansierade bolag via Apify, berikar kontakter via Apollo och skriver första kontakt-mejlutkast med OpenAI. Du får se vad det ersätter, vad du behöver och hur flödet fungerar från början till slut.
Så fungerar den här automatiseringen
Se hur det här löser problemet:
n8n Workflow Template: Apify + Google Sheets: finansierade leads med e-postutkast
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Run an Actor", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Get dataset items", pos: "b", h: 48 }
n3["<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/code.svg' width='40' height='40' /></div><br/>Code"]
n4["<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/>Apollo - Get Company Details"]
n5["<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/code.svg' width='40' height='40' /></div><br/>Code1"]
n6["<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/>Get Email"]
n7["<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/>Apollo - Get User"]
n8["<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/merge.svg' width='40' height='40' /></div><br/>Merge"]
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n10@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "Message a model", pos: "b", h: 48 }
n14@{ icon: "mdi:database", form: "rounded", label: "Update row in sheet", pos: "b", h: 48 }
n15@{ icon: "mdi:database", form: "rounded", label: "Append or update row in sheet", pos: "b", h: 48 }
n11 --> n13
n11 --> n12
n3 --> n15
n5 --> n3
n8 --> n5
n6 --> n8
n9 --> n6
n1 --> n2
n13 --> n14
n7 --> n9
n7 --> n8
n2 --> n4
n10 --> n11
n4 --> n7
n15 --> n10
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 n0 trigger
class n13 ai
class n1,n2,n11 decision
class n10,n14,n15 database
class n4,n6,n7 api
class n3,n5 code
classDef customIcon fill:none,stroke:none
class n3,n4,n5,n6,n7,n8 customIcon
Utmaningen: att gå från “finansierat” till “kontaktat” utan allt merjobb
Att hitta nyligen finansierade bolag är den enkla delen. Den verkliga tidsboven börjar direkt efter: öppna profiler, gissa vem beslutsfattaren är, jaga e-postadresser och försöka personanpassa ett meddelande utan att det låter som en mall. Det är inte bara långsamt. Det är skört. En missad copy-paste, en rad på fel ställe, en dubbel kontakt, och du får rörig outreach, förvirrad rapportering och kollegor som trampar varandra på tårna. Ärligt talat är den värsta delen den mentala belastningen. Du kan inte vara kvar i “säljläge” när du gör kalkylarksadmin.
Friktionen byggs upp snabbt. Här brukar det typiskt gå snett.
- Crunchbase-research blir en lång loop av flikar, anteckningar och halvfärdiga rader i ett kalkylark.
- Kontaktberikning blir inkonsekvent eftersom olika personer använder olika verktyg och filter.
- Mejl skrivs för sent, så din “heta” finansieringssignal utnyttjas inte medan den fortfarande spelar roll.
- Dubbletter smyger sig in, vilket betyder fler omtag, fler studs och mindre tillit till listan.
Lösningen: Apify → Apollo → Google Sheets → AI-mejlutkast
Det här flödet är byggt för att köra “front end” av din outbound som en pipeline i stället för en skattjakt. Du börjar med att köra en Apify-actor som skrapar en Crunchbase-sökning efter nyligen finansierade bolag. För varje bolag hämtar flödet bolagsprofilens detaljer och anropar sedan Apollo för att identifiera relevanta beslutsfattare och berika deras kontaktposter (inklusive e-postupptäckt). Därefter formaterar det allt till en korrekt formaterad payload och upsertar den i Google Sheets, så att samma bolag inte läggs till fem gånger. När raderna finns på plats kontrollerar flödet vilka leads som saknar ett mejlutkast. Om utkastfältet är tomt genererar OpenAI ett första kontaktmejl med hjälp av bolags- och personfälten och sparar sedan det färdiga utkastet tillbaka till samma rad.
Flödet startar med en manuell start i n8n. Därifrån samlar Apify in resultaten för finansierade bolag, Apollo berikar personlagret och Google Sheets blir din enda sanningskälla. Till sist skriver OpenAI första mejlutkastet bara när det behövs, så att du inte slösar tokens på att generera om innehåll du redan har godkänt.
Vad som förändras: före vs. efter
| Det här tar bort | Effekten du märker |
|---|---|
|
|
Praktisk effekt i verkligheten
Säg att du hämtar 10 nyligen finansierade bolag per körning (mallens standardantal). Manuellt kanske du lägger cirka 10 minuter per bolag på att kopiera detaljer, hitta 1–2 beslutsfattare och skriva något som håller måttet, vilket är ungefär 2 timmar för en liten batch. Med det här flödet startar du körningen i n8n, väntar på att Apify + Apollo fyller din Google Sheet och granskar sedan utkasten på ett ställe. Den mänskliga tiden sjunker till cirka 15 minuter för QA och lätt redigering, inte en hel researchsession.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Apify för att köra Crunchbase-skrapningsactorn.
- Crunchbase-åtkomst så att sök-URL:en och cookies fungerar.
- Apollo.io API-nyckel (hämtas i Apollo under settings/API).
- Google Sheets för att lagra leads och mejlutkast.
- OpenAI API-nyckel (hämtas i OpenAI-dashboarden).
Kunskapsnivå: Medel. Du kommer att redigera en Crunchbase-sök-URL, lägga in API-nycklar och matcha Google Sheet-kolumner mot flödets fält.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Flödets gång
Manuell start från n8n. Du kör flödet när du vill ha en färsk batch, oftast dagligen eller några gånger i veckan. Det håller kostnaderna förutsägbara eftersom Apify och Apollo kan vara kreditbaserade.
Skrapning av finansierade bolag via Apify. Apify-actorn använder din Crunchbase discovery-URL (filter, bransch, finansieringsrunda, plats) och returnerar en dataset med bolag. Flödet hämtar sedan dessa dataset-poster så att n8n kan bearbeta dem.
Berikning av bolag + kontakter med Apollo. För varje bolag hämtar HTTP-anrop profilen och frågar Apollo efter relevanta personer. Därefter delar flödet upp personer i batchar, hittar e-postadresser och slår ihop persondatan igen. Några små kodsteg för “formatering” gör den röran till korrekta, konsekventa fält för ditt kalkylark.
Google Sheets som system of record. Flödet upsertar varje lead-rad så att upprepningar inte skapar dubbletter, läser sedan in kalkylarket igen och kontrollerar om cellen för mejlutkast är tom. Om den är tom genererar OpenAI ett utkast och flödet uppdaterar exakt den raden.
Du kan enkelt justera Crunchbase-sökfiltren och Apollo-kriterierna för personas så att de matchar din ICP. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera den manuella triggern
Det här arbetsflödet startar manuellt så att ni kan validera dataanrikningen innan ni automatiserar.
- Lägg till noden Manual Launch Trigger som startpunkt.
- Koppla Manual Launch Trigger till Execute Apify Actor för att initiera pipelinen.
Steg 2: Koppla Apify och Apollos datainsamling
Det här steget hämtar Crunchbase-data via Apify och anrikar företags- och kontaktuppgifter med Apollo-API:er.
- I Execute Apify Actor ställer ni in actor input så att den använder den tillhandahållna customBody-JSON:en, inklusive värdena
cookieochsearch.url. - Inloggningsuppgifter krävs: Anslut era Apify-inloggningsuppgifter i Execute Apify Actor och Retrieve Dataset Entries (inloggningsuppgifter är inte konfigurerade i arbetsflödet).
- I Retrieve Dataset Entries ställer ni in Resource till
Datasetsoch Dataset ID till{{ $json.defaultDatasetId }}. - I Fetch Company Profiles ställer ni in URL till
https://api.apollo.io/v1/mixed_companies/searchoch JSON Body till{ "q_organization_name": "{{ $json.funded_organization_identifier.value }}", "page": 1, "per_page": 1 }. - I Lookup Key Contacts ställer ni in URL till
https://api.apollo.io/v1/people/searchoch JSON Body till{ "q_organization_domains_list": ["{{ $json.organizations[0].primary_domain }}"], "person_seniorities": ["vp", "head", "director"], "person_titles": ["engineering","technology","product","operations","infrastructure","devops","data science","machine learning","cloud"], "pagination": { "page": 1, "per_page": 10 } }. - I Find Contact Email ställer ni in URL till
https://api.apollo.io/v1/people/matchoch JSON Body till{ "id": "{{ $json.id }}" }. - Inloggningsuppgifter krävs: Anslut era
httpHeaderAuth-inloggningsuppgifter i Fetch Company Profiles, Lookup Key Contacts och Find Contact Email (inloggningsuppgifter är inte konfigurerade i arbetsflödet).
Steg 3: Sätt upp kontaktbearbetning och sammanslagningslogik
Det här avsnittet delar upp kontakter, hämtar e-postadresser och slår ihop dem tillbaka i företagsposten.
- I Split People Records ställer ni in Field to Split Out till
people. - Lookup Key Contacts skickar utdata parallellt till både Split People Records och Combine Person Data.
- Behåll Combine Person Data som en sammanslagningspunkt före Merge Email Mapping.
- I Merge Email Mapping behåller ni den tillhandahållna JS Code för att matcha varje person via
idoch injiceraperson.email. - I Format Sheet Payload behåller ni den tillhandahållna JS Code och säkerställer att den refererar till Fetch Company Profiles med
$('Fetch Company Profiles').all().
Steg 4: Konfigurera Google Sheets-utdata och uppdateringar
Dessa noder skriver anrikade kontakter till ert ark och läser sedan tillbaka rader för AI-personalisering.
- I Upsert Lead Row ställer ni in Operation till
appendOrUpdate. - Mappa kolumner i Upsert Lead Row med uttryck som
{{ $json.person_email }},{{ $json.company_name }}och{{ $json.person_designation }}enligt noden. - Ställ in Document ID och Sheet Name i Upsert Lead Row till era Google Sheet-värden (ersätt
[YOUR_ID]). - I Read Sheet Rows ställer ni in samma Document ID och Sheet Name så att AI-steget läser rätt rader.
- I Update Sheet Entry ställer ni in Operation till
updateoch mappar Person Email till{{ $('Check Email Empty').item.json['Person Email'] }}och Personalised Email till{{ $json.message.content }}. - Inloggningsuppgifter krävs: Anslut era Google Sheets-inloggningsuppgifter i Upsert Lead Row, Read Sheet Rows och Update Sheet Entry (inloggningsuppgifter är inte konfigurerade i arbetsflödet).
Steg 5: Sätt upp AI-generering av e-post och villkorsstyrd routning
Arbetsflödet kontrollerar om e-post saknas och genererar ett personligt outreach-meddelande endast när det behövs.
- I Check Email Empty bekräftar ni att villkoret använder
{{ $json['Personalised Email'] }}med operatorn empty. - I Generate AI Email behåller ni modellen som
gpt-4.1och den långa prompten i Messages för generering av cold outreach. - Generate AI Email ska kopplas till Update Sheet Entry för att skriva tillbaka det genererade mejlet.
- Inloggningsuppgifter krävs: Anslut era OpenAI-inloggningsuppgifter i Generate AI Email (inloggningsuppgifter är inte konfigurerade i arbetsflödet).
- Låt No-Op Placeholder vara kopplad till false-vägen från Check Email Empty som en säker sink när ingen AI-generering behövs.
Personalised Email kommer villkoret i Check Email Empty aldrig att matcha och AI-generering körs inte.Steg 6: Testa och aktivera ert arbetsflöde
Kör ett fullständigt manuellt test för att validera dataflödet och aktivera sedan för produktionsanvändning.
- Klicka på Execute Workflow i Manual Launch Trigger för att köra pipelinen från början till slut.
- Verifiera att Upsert Lead Row lägger till eller uppdaterar rader med ifyllda företags-/personfält.
- Bekräfta att Check Email Empty endast routar tomma rader till Generate AI Email, och att Update Sheet Entry skriver till
Personalised Email. - När utdata ser korrekta ut, växla arbetsflödet till Active för produktionsanvändning.
Se upp för
- Apify- och Crunchbase-autentisering kan vara kinkig eftersom den bygger på en giltig cookie och rätt sök-URL. Om skrapningen returnerar tomt, kontrollera loggarna från Apify actor-körningen och bekräfta att din Crunchbase-sessioncookie fortfarande är giltig.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om noder längre fram fallerar på tomma svar.
- OpenAI-utkast känns generiska om du inte anpassar prompten efter ditt erbjudande och din tonalitet. Uppdatera prompten tidigt, för att senare redigera hundratals “nästan rätt”-mejl är en seg sorts smärta.
Vanliga frågor
Cirka en timme om du redan har Apify, Apollo och ditt Google Sheet redo.
Ja, men du vill ha någon som är bekväm med API-nycklar och att sätta upp kalkylark. Ingen kodning krävs, men små ändringar (som kolumnnamn) spelar roll.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på $20/månad för högre volym. Du behöver också räkna in OpenAI API-användning och vad Apify/Apollo tar betalt för din volym.
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.
Du kan byta Crunchbase-mål genom att uppdatera Apify-noden “Run an Actor” och dess search.url, och du kan skärpa din buyer persona genom att redigera Apollo-anropet “Lookup Key Contacts” (senioriteter och titel-nyckelord). Vanliga justeringar är att ändra branscher, begränsa efter finansieringsstadium och skriva om OpenAI-prompten så att den matchar ditt erbjudande och din call-to-action. Om ditt kalkylark har olika flikar, uppdatera Google Sheets-dokumentets ID och fliknamn i upsert- och update-noderna.
Oftast handlar det om utgångna Crunchbase-cookies eller en Apify actor-konfiguration som inte längre matchar sidan. Kör om Apify-actorn i Apify först, bekräfta att den skapar dataset-poster och uppdatera sedan cookien och sök-URL:en i n8n. Kontrollera även behörigheter för din Apify-token och rate limits om du hämtar större batchar.
Den skalar främst med dina Apify- och Apollo-begränsningar, plus hur många leads du väljer att hämta per körning.
För det här användningsfallet är n8n oftare ett bättre val än inte, eftersom flödet inte bara är “A till B”. Du skrapar, berikar, delar kontakter i batchar, slår ihop poster, genererar AI-innehåll villkorligt och skriver tillbaka det till exakt rätt rad. Den typen av förgrening och datahantering blir dyr eller krånglig i många no-code-verktyg. n8n ger dig också en self-hosting-väg, vilket spelar roll om du kör outbound i hög volym och vill ha förutsägbara kostnader. Zapier eller Make kan fortfarande fungera för en enklare variant (t.ex. bara berikning). Prata med en automationsexpert om du vill ha en snabb rekommendation baserat på din stack.
När det här väl rullar slutar din leadlista att vara ett projekt och börjar bli en tillgång. Flödet tar hand om de repetitiva delarna så att du kan lägga tiden på targeting, erbjudanden och svar.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.