Du har äntligen ett felfritt HubSpot-segment redo att kontakta, och sen börjar det riktiga jobbet. Leta fram kontext, läsa om gamla trådar, gissa vad som är viktigt för varje person och ändå försöka låta som att du inte copy-pastade.
SDR:er känner det först, eftersom volym gör ”snabb outreach” till ett heltidsjobb i skrivande. En grundare som säljer och en marketing lead som stöttar outbound känner samma friktion. Den här automatiseringen för HubSpot Gmail drafts ger dig outreach-utkast som är redo att granska och som faktiskt matchar kontaktens ton.
Det här flödet hämtar en riktad HubSpot-lista, läser verklig kontext från Gmail-trådar, bygger en lätt persona med Gemini och skapar sedan ett Gmail-utkast per kontakt. Du får se vad det löser, vad du behöver och hur flödet fungerar så att du kan anpassa det på ett säkert sätt.
Så här fungerar automatiseringen
Se hur den här löser problemet:
n8n Workflow Template: HubSpot till Gmail: personliga utkast för outreach klara
flowchart LR
subgraph sg0["Manual Start Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Start Trigger", pos: "b", h: 48 }
n1["<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/hubspot.svg' width='40' height='40' /></div><br/>Retrieve HubSpot Contacts"]
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Iterate Contacts Batch", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Contact Anchor", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Contact Fields", pos: "b", h: 48 }
n5@{ icon: "mdi:message-outline", form: "rounded", label: "Fetch Customer Emails", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Build Persona Profile", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Draft Sales Message", pos: "b", h: 48 }
n8@{ icon: "mdi:message-outline", form: "rounded", label: "Create Gmail Draft", pos: "b", h: 48 }
n9@{ icon: "mdi:brain", form: "rounded", label: "Gemini Chat Model A", pos: "b", h: 48 }
n10@{ icon: "mdi:brain", form: "rounded", label: "Gemini Chat Model B", pos: "b", h: 48 }
n4 --> n5
n3 --> n4
n1 --> n2
n2 --> n3
n7 --> n8
n9 -.-> n6
n6 --> n7
n5 --> n6
n10 -.-> n7
n8 --> 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 n0 trigger
class n6,n7 ai
class n9,n10 aiModel
classDef customIcon fill:none,stroke:none
class n1 customIcon
Utmaningen: att personalisera outreach utan att bo i inkorgen
Personalisering låter enkelt tills du ska göra det för en lista med 30 ”högintressanta” kontakter. Du öppnar HubSpot, sen Gmail, sen HubSpot igen. Du skummar trådar, missar en viktig detalj och slutar med att skriva något som känns generiskt eller, ännu värre, lite fel. Och eftersom det är manuellt blir processen inkonsekvent. En säljare skriver genomtänkta mejl, en annan skickar tunna mallar och resultaten ser slumpmässiga ut. Ärligt talat är den mentala belastningen den stora boven: att växla kontext hela dagen gör det svårare att faktiskt sälja.
Inget av det här är ett problem i sig. Tillsammans är det det.
- Att hitta den mest relevanta tråden per kontakt kan ta 5 till 10 minuter, särskilt när namn inte matchar perfekt.
- Även en liten tonmiss (”för säljig” eller ”för formell”) leder till omskrivningar och förseningar.
- Manuell personalisering gör misstag mer sannolika, som att hänvisa till fel produkt, tidslinje eller intressent.
- När outreach beror på vem som har tid den dagen blir pipelinen svårare att förutsäga och styra.
Lösningen: HubSpot-lista → persona-drivna Gmail-utkast
Det här flödet börjar med en liten, riktad HubSpot-sökning (till exempel beslutsfattare i ett visst livscykelsteg). Det bearbetar kontakter en och en så att du behåller kontrollen och undviker att belasta Gmail. För varje person hämtar det upp till 20 senaste Gmail-trådar för att förstå hur de kommunicerar och vad de bryr sig om. Sedan extraherar Gemini en lätt persona (ton, mål, smärtpunkter, beslutsstil). Därefter skriver Gemini ett kort outreach-mejl i linje med ditt erbjudande, inklusive ämnesrad och en HTML-body. Det sista steget är det mest praktiska: varje meddelande sparas som ett Gmail-utkast så att du kan skumma, justera och skicka från ett och samma ställe.
Flödet startar när du kör det manuellt (eller enligt schema om du väljer att bygga ut det). HubSpot levererar exakt segment, Gmail levererar verklig samtalskontext och Gemini omvandlar det till en persona plus ett utkast som låter som att det hör hemma i tråden. Till sist hamnar utkastet i Gmail, redo för granskning.
Vad som förändras: före vs. efter
| Vad detta eliminerar | Effekten du kommer att se |
|---|---|
|
|
Effekt i verkligheten
Säg att du kör ett veckovis outbound-push till en HubSpot-lista med 25 kontakter. Manuellt kanske du lägger cirka 10 minuter per person på att läsa gamla trådar och ytterligare 10 minuter på att skriva, vilket blir ungefär 8 timmars arbete. Med det här flödet startar du körningen på en minut, sedan hämtar det upp till 20 trådar per kontakt, genererar personan och skapar Gmail-utkastet medan du gör något annat. Du granskar och justerar fortfarande, men den granskningen är ofta 2 minuter per utkast, så ”skrivdagen” blir snarare en till två timmar.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- HubSpot för att hämta rätt kontaktsegment.
- Gmail för att läsa trådar och skapa utkast.
- Google Gemini API-nyckel (hämta den via Google AI Studio/Google Cloud-uppgifter).
Nivå: Nybörjare. Du kopplar konton, ändrar ett HubSpot-filter och uppdaterar erbjudandetexten i ett Variables-steg.
Behöver du hjälp att implementera detta? Prata med en automationsspecialist (gratis 15-minuters konsultation).
Flödets gång
En kontrollerad start. Du kör flödet manuellt, vilket är perfekt när du testar ett nytt segment eller ett nytt erbjudande. Vissa team byter senare till en schematrigger när de litar på resultatet.
HubSpot hämtar segmentet. Sökningen ”Get Contacts” är där du definierar omfattningen (till exempel hs_buying_role = decision maker). Poängen är att hålla listan tajt; bättre riktning slår större utskick.
Gmail ger verklig kontext. För varje kontakt hämtar flödet upp till 20 senaste trådar. Det räcker för att upptäcka ton, invändningar och hur rakt på sak personen gillar att kommunicera, utan att samla in mer än nödvändigt.
Gemini bygger en persona och skriver mejlet. Först extraherar den persona-attribut (beslutsstil, mål, smärtpunkter och några kommunikationspreferenser). Sedan skapar den en ämnesrad och en HTML-mejlbody som matchar det den har ”lärt sig”, med ditt värde product_to_sell som ankare.
Utkastet hamnar i Gmail. Varje kontakt avslutas med ett Gmail-utkast som går att granska. Du kan enkelt ändra persona-attributen för att betona olika signaler (som brådska eller risk) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den manuella triggern
Det här arbetsflödet startar manuellt så att ni kan testa och iterera på utkast till outreach innan ni schemalägger eller automatiserar.
- Lägg till noden Manual Start Trigger på er canvas.
- Lämna alla fält på standardvärden (den här noden har inga parametrar).
- Koppla Manual Start Trigger till Retrieve HubSpot Contacts för att starta huvudflödet.
Steg 2: anslut HubSpot
Hämta målkontakterna från HubSpot med ett sökfilter som fokuserar på beslutsfattare.
- Välj noden Retrieve HubSpot Contacts.
- Ställ in Operation på
search. - Ställ in Authentication på
oAuth2. - I Filter Groups lägger ni till ett filter där Property Name är
hs_buying_role|enumerationoch Value ärDECISION_MAKER. - Inloggningsuppgifter krävs: anslut era hubspotOAuth2Api-uppgifter.
Flödesnotis: Retrieve HubSpot Contacts skickar vidare till Iterate Contacts Batch för att behandla kontakter en i taget.
Steg 3: konfigurera kontaktbatchning och fältmappning
Batchbearbetning säkerställer att en kontakt hanteras i taget, medan fältmappningen standardiserar data för senare steg.
- Öppna Iterate Contacts Batch och behåll standardinställningarna för batch (inga ändringar krävs).
- Säkerställ att Iterate Contacts Batch skickar vidare till Contact Anchor, och därefter till Map Contact Fields.
- I Map Contact Fields lägger ni till tilldelningar:
- Ställ in firstname på
{{ $json.properties.firstname }}. - Ställ in lastname på
{{ $json.properties.lastname }}. - Ställ in email på
{{ $json.properties.email }}. - Ställ in product_to_sell på
AI partnerships: a consulting package of AI development and services. We help customers find a strong foothold on AI initiatives bringing them to life cost effectively and always with results..
Contact Anchor är en platshållarnod som används för att förankra batchflödet; den kräver ingen konfiguration.
Steg 4: konfigurera e-posthämtning och persona-extrahering
Hämta senaste e-posthistorik för varje kontakt och använd den för att bygga en personaprofil med AI.
- Konfigurera Fetch Customer Emails med Operation satt till
getAll. - Ställ in Limit på
20och Simple påfalse. - Ställ in sökfrågan i Filters → q till
from:{{ $json.email }}. - Inloggningsuppgifter krävs: anslut era Gmail-uppgifter till Fetch Customer Emails (inga är konfigurerade ännu).
- I Build Persona Profile ställer ni Text till hela uttrycket:
{{ $input.all() .map(item => `subject: ${item.json.subject} date: ${$json.headers.date} message: ${item.json.text.substr(0, item.json.text.indexOf('> wrote:') ?? item.json.text.length).replace(/^On[\w\W]+$/im, '')}`) .join('\n---\n') }} - I Build Persona Profile ställer ni System Prompt Template till
Your task is to build a persona of a customer or potential customer so that we may better serve them for our business. Analyse the recent correspondence of the user, {{ $('Map Contact Fields').item.json.email }}, and extract the required attributes.. - Säkerställ att Gemini Chat Model A är ansluten som språkmodell för Build Persona Profile och ställ in Model Name på
models/gemini-2.0-flash. - Inloggningsuppgifter krävs: anslut era googlePalmApi-uppgifter till Gemini Chat Model A (AI-uppgifter sätts på modellnoden, inte på Build Persona Profile).
⚠️ Vanlig fallgrop: Gmail-noderna kräver inloggningsuppgifter även om arbetsflödet importerades korrekt. Säkerställ att båda Gmail-noderna är autentiserade innan ni testar.
Steg 5: konfigurera säljtextutkast och utdata som Gmail-utkast
Använd personaprofilen för att skapa ett anpassat säljmeddelande och spara det sedan som ett Gmail-utkast adresserat till kontakten.
- I Draft Sales Message ställer ni Text till
# Profile of {{ $('Map Contact Fields').first().json.firstname }} {{ $('Map Contact Fields').first().json.lastname }} {{ Object.keys($json.output).map(key => `## ${key}\n${$json.output[key]}`).join('\n') }}. - Ställ in System Prompt Template till
You are a sales representative drafting an email to close a potential customer on the following product:.{{ $('Map Contact Fields').first().json.product_to_sell }} Use the provided profile to draft the a suitable email which reflects similar communication style and addresses their values, ultimately convinces the customer to inquire about and/or buy this product. Provide only the subject and body of the message as this text will go into a template. Omit the subject and signature. - Säkerställ att Gemini Chat Model B är ansluten som språkmodell för Draft Sales Message och ställ in Model Name på
models/gemini-2.0-flash. - Inloggningsuppgifter krävs: anslut era googlePalmApi-uppgifter till Gemini Chat Model B (AI-uppgifter sätts på modellnoden, inte på Draft Sales Message).
- Konfigurera Create Gmail Draft med Resource satt till
draftoch Email Type satt tillhtml. - Ställ in Message på
{{ $json.output.body }}och Subject på{{ $json.output.subject }}. - Ställ in Options → Send To till
{{ $('Map Contact Fields').first().json.email }}. - Inloggningsuppgifter krävs: anslut era Gmail-uppgifter till Create Gmail Draft (inga är konfigurerade ännu).
Flödesnotis: Create Gmail Draft skickar tillbaka till Iterate Contacts Batch för att fortsätta behandla nästa kontakt.
Steg 6: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att bekräfta att kontakthämtning, personabygge och skapande av utkast fungerar hela vägen.
- Klicka på Execute Workflow på Manual Start Trigger för att köra ett test.
- Verifiera att Retrieve HubSpot Contacts returnerar kontakter taggade med
DECISION_MAKER. - Kontrollera att Fetch Customer Emails returnerar e-posthistorik för varje kontakt.
- Bekräfta att Build Persona Profile ger ut ett strukturerat persona-objekt och att Draft Sales Message ger ut
subjectochbody. - Öppna Gmail och bekräfta att ett utkast finns för varje behandlad kontakt.
- När ni är nöjda växlar ni arbetsflödet till Active för användning i produktion.
Saker att se upp med
- HubSpot-uppgifter kan gå ut eller kräva specifika behörigheter. Om något skapar fel, kontrollera först status för din HubSpot private app/OAuth-anslutning i n8n.
- Gmail-läsåtkomst är känslig och Google kan återkalla tokens efter lösenordsbyten eller policy-promptar. Återanslut Gmail-noderna om du plötsligt ser ”invalid_grant”-fel.
- Gemini-resultat blir generiska om din prompt är generisk. Lägg in en kort varumärkesguide (meningslängd, CTA-regler, sign-off) tidigt så att du inte redigerar varje utkast senare.
Vanliga frågor
Cirka 30 minuter om HubSpot, Gmail och Gemini redan är åtkomliga.
Ja. Du kommer främst att koppla konton och redigera ett HubSpot-filter. Om du kan kopiera en API-nyckel och ändra några textfält är du hemma.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in Gemini API-användning, som beror på hur långa dina trådar och prompts är.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) 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.
Du kan ändra HubSpot-segmentet i ”Retrieve HubSpot Contacts” och sedan justera ditt erbjudande i variablerna i ”Map Contact Fields” (product_to_sell). Om du vill ha en djupare persona kan du justera extractor-fälten i ”Build Persona Profile”. Och om du säljer till flera branscher kan du förgrena efter HubSpot-sökningen och ladda olika value props innan ”Draft Sales Message”.
Oftast är det ett OAuth token-problem. Återanslut Gmail-noderna i n8n, bekräfta att du använder samma Google-konto för ”Fetch Customer Emails” och ”Create Gmail Draft”, och försök igen med en enda kontakt. Om det fortfarande inte fungerar, kontrollera säkerhetspromptar för Google-kontot och säkerställ att din workspace-admin inte har begränsat Gmail API-åtkomst.
I praktiken är den byggd för små, riktade listor som bearbetas en och en. Om du hostar n8n själv finns ingen körningsgräns (din server samt Gmail-/Gemini-gränser avgör), och på n8n Cloud avgör planen du väljer antalet körningar per månad. Ett vanligt upplägg är att köra 20 till 100 kontakter per batch, granska utkasten och sedan köra nästa batch.
Ofta, ja, eftersom logiken för persona-extraktion och utkast är enklare att styra i n8n. Du kan loopa igenom kontakter, hålla körningen kontrollerad och utveckla prompts utan att slåss mot plattformsbegränsningar. Egen hosting är också viktigt om du planerar att skala körningar utan att betala per task. Zapier eller Make kan fortfarande fungera om du bara behöver grundläggande ”HubSpot-kontakt skapad → skicka mejl”-automatisering, men det här flödet fokuserar på kontext och skrivkvalitet. Om du är osäker, prata med en automationsspecialist och beskriv din liststorlek och hur ni granskar.
Du får utkast som låter som att du faktiskt har läst konversationen, utan att bränna en halv dag på det. Sätt upp det en gång och lägg sedan tiden på det som fortfarande kräver en människa.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.