Din kalender är full, men din förberedelse är det inte. En ny bokning trillar in, du säger till dig själv att du ska ”researcha dem senare”, och sedan går du in i samtalet halvblind och skannar LinkedIn-flikar medan de pratar.
Grundare känner det när varje discovery-samtal kan vara avgörande. SDR:er och konsulter känner det när möten staplas och kontextbyten blir brutala. Den här Cal.com Gmail prep-automationen lägger en strukturerad, lättskummad brief i din inkorg så att du kliver in skärpt, inte stressad.
Nedan ser du vad arbetsflödet gör, varför det är värt att automatisera och vad du behöver för att köra det stabilt i n8n.
Så fungerar den här automationen
Hela n8n-flödet, från trigger till slutligt resultat:
n8n Workflow Template: Cal.com + gmail: samtalsbrief i inkorgen
flowchart LR
subgraph sg0["Booking Event 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/cal.dark.svg' width='40' height='40' /></div><br/>Booking Event Trigger"]
n1@{ icon: "mdi:database", form: "rounded", label: "Retrieve Sheet Data A", pos: "b", h: 48 }
n2@{ icon: "mdi:database", form: "rounded", label: "Retrieve Sheet Data B", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: "Retrieve Sheet Data C", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Retrieve Sheet Data D", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Apply Email Filter", pos: "b", h: 48 }
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/>Fetch LinkedIn Data"]
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/code.svg' width='40' height='40' /></div><br/>Format Recent Posts"]
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/code.svg' width='40' height='40' /></div><br/>Compile Work History"]
n9["<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/>Compile Education Table"]
n10["<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/perplexity.dark.svg' width='40' height='40' /></div><br/>Web Research Query"]
n11["<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/>Reference Links Composer"]
n12@{ icon: "mdi:robot", form: "rounded", label: "Prospect & Company Summary", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "Challenges and Remedies", pos: "b", h: 48 }
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/html.dark.svg' width='40' height='40' /></div><br/>Assemble HTML Brief"]
n15@{ icon: "mdi:message-outline", form: "rounded", label: "Dispatch Email Brief", pos: "b", h: 48 }
n7 --> n8
n5 --> n6
n11 --> n12
n9 --> n10
n10 --> n11
n8 --> n9
n1 --> n5
n2 --> n5
n3 --> n5
n4 --> n5
n0 --> n1
n0 --> n2
n0 --> n3
n0 --> n4
n14 --> n15
n13 --> n14
n12 --> n13
n6 --> n7
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 n12,n13 ai
class n5 decision
class n1,n2,n3,n4 database
class n6 api
class n7,n8,n9,n11 code
classDef customIcon fill:none,stroke:none
class n0,n6,n7,n8,n9,n10,n11,n14 customIcon
Problemet: samtalsförberedelser hoppas över (eller görs dåligt)
Personliga samtal vinner affärer, men förarbetet är jobbigt på det sämsta sättet. Du måste hitta rätt LinkedIn-profil, skumma senaste inläggen, pussla ihop jobbhistorik och sedan förstå vad som händer i deras bolag just nu. När du har bråttom missar du uppenbara signaler och ställer generiska frågor. När du har tid landar du ändå i spretiga anteckningar över flikar, dokument och skärmdumpar. Ärligt talat är det värsta den mentala belastningen: du researchar samtidigt som du försöker vara närvarande i samtalet.
Friktionen ökar snabbt, särskilt när du har mer än ett par möten per dag.
- Att hitta rätt LinkedIn-URL kan ta 5 minuter, och det blir ändå fel när namnen är vanliga.
- Du slutar med att skumma inlägg och ”Om”-sektionen precis innan samtalet, vilket gör att du inte minns något av det.
- Bolagskontext saknas ofta, så dina första 10 minuter går åt till frågor som Google hade kunnat svara på.
- Anteckningar standardiseras inte, så att lämna över till en kollega (eller ditt framtida jag) blir rörigt.
Lösningen: autogenerera en samtalsbrief från Cal.com till Gmail
Det här arbetsflödet lyssnar efter en ny bokning i Cal.com och bygger direkt en research-brief om personen som bokade. Det börjar med att slå upp leaden i din Google Sheets-”databas” för att hämta matchande LinkedIn-URL. Därefter hämtar det publik profildata via Relevance AI (senaste inlägg, erfarenhet, utbildning) och kör en djupare webbresearch via Perplexity för att få fram aktuell kontext som nyheter, teman och användbara infallsvinklar. Den strukturerade researchen skickas till en OpenAI-chatmodell som omvandlar den till tydliga sammanfattningar: vem personen är, vad bolaget sannolikt bryr sig om, troliga smärtpunkter och rimliga lösningsspår. Till sist sätter n8n ihop allt till ett formaterat HTML-mejl och skickar det till dig i Gmail, klart att skumma innan mötet.
Arbetsflödet startar med bokningstriggern och berikar sedan leaden med Sheets + LinkedIn-scraping + webbresearch. Efter det gör AI om rå info till en brief du faktiskt kan använda. Gmail levererar den som vilken annan prep-anteckning som helst, så den passar din befintliga rutin.
Det här får du: automation vs. resultat
| Vad arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du har 4 inbokade samtal på en dag. En vettig manuell förberedelse innebär vanligtvis LinkedIn-uppslagning (5 minuter), skumma inlägg och erfarenhet (10 minuter), plus snabb webbresearch (5 minuter), alltså cirka 20 minuter per samtal. Det blir ungefär 80 minuter per dag. Med det här arbetsflödet lägger du kanske 1 minut på att bekräfta att raden i Sheets stämmer, och sedan väntar du på att briefen ska komma (i exemplet kommer den cirka 2 minuter efter bokning). Du får tillbaka runt en timme de flesta dagar, och förberedelsen blir mer konsekvent.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Self-hosting om du föredrar det (Hostinger fungerar bra)
- Cal.com som trigger när ett samtal bokas.
- Google Sheets för leadposter och LinkedIn-URL:er.
- Relevance AI API-nyckel (hämta den i din Relevance AI-dashboard) för att scrape:a LinkedIn-data.
- Perplexity API-nyckel (hämta den från ditt Perplexity-konto) för djup webbresearch.
- OpenAI API-nyckel (hämta den från OpenAI-dashboarden) för sammanfattningar och föreslagna vinklar.
- Gmail för att skicka HTML-briefen till din inkorg.
Kunskapsnivå: Medel. Du kopplar några konton, sätter API-nycklar och gör mindre justeringar i prompts och mejlformatering.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En ny bokning startar allt. När Cal.com registrerar en ny bokning hämtar arbetsflödet deltagaruppgifterna och använder dem som ”nyckel” för allt som följer.
Din Sheets-databas ger den saknade länken. n8n hämtar rader från Google Sheets och filtrerar för att hitta rätt person, och extraherar sedan LinkedIn-URL:en (och eventuella extra fält du sparar, som persona, segment eller leadkälla).
LinkedIn + webbresearch sammanställs till användbar kontext. En HTTP-request skickar LinkedIn-URL:en till Relevance AI för scraping, och sedan formaterar kodsteg senaste inlägg, arbetshistorik och utbildning till strukturerade block. Parallellt kör Perplexity en researchfråga så att briefen innehåller aktuell kontext, inte bara en profilbild.
AI gör råa signaler till en brief redo för samtal. OpenAI-chatmodellen tar fram en sammanfattning av prospekt/bolag samt troliga utmaningar och åtgärder. n8n bygger ihop slutlig HTML och Gmail skickar den till dig automatiskt.
Du kan enkelt ändra matchningslogiken i Google Sheets till att använda e-post, företagsdomän eller Typeform-fält beroende på behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera triggern för bokningshändelsen
Konfigurera arbetsflödet så att det startar när en ny Cal.com-bokning skapas.
- Lägg till Booking Event Trigger på er canvas.
- Ställ in Events på
BOOKING_CREATED. - Ställ in Event Type ID på
2098128. - Inloggningsuppgifter krävs: anslut era calApi-inloggningsuppgifter.
Booking Event Trigger skickar utdata till Retrieve Sheet Data A, Retrieve Sheet Data B, Retrieve Sheet Data C och Retrieve Sheet Data D parallellt.
Steg 2: Anslut Google Sheets
Varje sheet-nod hämtar lead-data från ett separat kalkylark och skickar vidare till e-postfiltret.
- Öppna Retrieve Sheet Data A och ställ in Document på
1uGw7lJteEbjDzgVyZ0yG2gs7yx0AcJOaTdZ7Q5q0Y9coch Sheet påData. - Öppna Retrieve Sheet Data B och ställ in Document på
1bSGJXsHnl6Cs9DOV9Q0iwWf_TAbgaeZdQxNSLn_kJPQoch Sheet påSheet1. - Öppna Retrieve Sheet Data C och ställ in Document på
1REdyrlO0rJ9y7T_CQLZtLHDE7fUdPc222rzywSEzE6Moch Sheet påValidated Data. - Öppna Retrieve Sheet Data D och ställ in Document på
1ozF4HA8LpZVKY62B8MoxVshKKnLvUKachs8XARaLbDkoch Sheet påData. - Inloggningsuppgifter krävs: anslut era googleSheetsOAuth2Api-inloggningsuppgifter på alla fyra noder.
Retrieve Sheet Data A, Retrieve Sheet Data B, Retrieve Sheet Data C och Retrieve Sheet Data D matar alla in i Apply Email Filter.
Steg 3: Konfigurera filtrering och hämtning av LinkedIn-data
Filtrera de sammanslagna raderna från arken och hämta LinkedIn-profildata för den matchade leaden.
- Öppna Apply Email Filter och ställ in villkoret Left Value till
{{ $json.email }}och Right Value till[YOUR_EMAIL]. - Öppna Fetch LinkedIn Data och ställ in URL till
https://api-bcbe5a.stack.tryrelevance.com/latest/studios/8ac2aaa8-3d38-4d92-9b6f-65a19a5cc17a/trigger_webhook?project=4518f8138206-4b6c-8b8a-8dd5b17d95fa. - Ställ in Method på
POST, aktivera Send Body och ställ in Specify Body påJSON. - Ställ in JSON Body till
={"linkedin_url":"{{ $json.profileUrl }}","last_x_days":30}. - Inloggningsuppgifter krävs: anslut era httpHeaderAuth-inloggningsuppgifter.
Apply Email Filter skickar utdata till Fetch LinkedIn Data, som sedan matar in i Format Recent Posts.
Steg 4: Konfigurera noder för bearbetning och research
Omvandla LinkedIn-data till HTML-tabeller, kör webbresearch och sammanställ källhänvisningar.
- Låt Format Recent Posts vara som den är för att generera
postsHTMLfrån LinkedIn-inlägg. - Låt Compile Work History vara som den är för att generera
experiencesTablefrånlinkedin_profile_details_data.experiences. - Låt Compile Education Table vara som den är för att generera
educationTablefrånlinkedin_profile_details_data.educations. - Öppna Web Research Query och ställ in Model på
sonar-pro. - Inloggningsuppgifter krävs: anslut era perplexityApi-inloggningsuppgifter i Web Research Query.
- Låt Reference Links Composer vara som den är för att bygga
citationsHTMLfrån citations-arrayen.
Format Recent Posts skickar utdata till Compile Work History, som skickar utdata till Compile Education Table, som skickar utdata till Web Research Query, som skickar utdata till Reference Links Composer.
Steg 5: Konfigurera AI-sammanfattningar
Använd OpenAI för att skapa en sammanfattning av prospekt/företag och ta fram smärtpunkter och möjligheter.
- Öppna Prospect & Company Summary och ställ in Model på
o1-mini. - Verifiera att prompten refererar till LinkedIn-data och webbresearch med uttryck som
{{ $('Fetch LinkedIn Data').item.json.linkedin_profile_details_data.about }}och{{ $('Web Research Query').last().json.choices[0].message.content }}. - Inloggningsuppgifter krävs: anslut era openAiApi-inloggningsuppgifter i Prospect & Company Summary.
- Öppna Challenges and Remedies och låt Model vara inställd på
o1-mini. - Bekräfta att den refererar till
{{ $('Prospect & Company Summary').last().json.message.content }}och{{ $('Web Research Query').last().json.choices[0].message.content }}. - Inloggningsuppgifter krävs: anslut era openAiApi-inloggningsuppgifter i Challenges and Remedies.
Reference Links Composer skickar utdata till Prospect & Company Summary, som skickar utdata till Challenges and Remedies.
Steg 6: Konfigurera HTML-sammansättning och e-postleverans
Sätt ihop HTML-briefen och skicka den via e-post.
- Öppna Assemble HTML Brief och behåll HTML-mallen som den är, inklusive uttryck som
{{ $('Fetch LinkedIn Data').item.json.linkedin_profile_details_data.full_name }}och{{ $node["Compile Work History"].json.experiencesTable }}. - Öppna Dispatch Email Brief och ställ in Send To till
[YOUR_EMAIL]. - Ställ in Message till
{{ $json.html }}. - Ställ in Subject till
{{ $('Fetch LinkedIn Data').item.json.linkedin_profile_details_data.full_name }} Research Report. - Inloggningsuppgifter krävs: anslut era gmailOAuth2-inloggningsuppgifter i Dispatch Email Brief.
Challenges and Remedies skickar utdata till Assemble HTML Brief, som skickar utdata till Dispatch Email Brief.
Steg 7: Testa och aktivera ert arbetsflöde
Kör ett manuellt test och bekräfta att arbetsflödet skapar och e-postar briefen korrekt.
- Klicka på Execute Workflow och trigga en testbokning i Cal.com som matchar
[YOUR_EMAIL]i sheet-datan. - Verifiera att Fetch LinkedIn Data returnerar profildetaljer och inlägg.
- Bekräfta att Assemble HTML Brief ger fullständig HTML med sammanfattning, tabeller, inlägg och källhänvisningar.
- Kontrollera inkorgen efter mejlet från Dispatch Email Brief med en ämnesrad som slutar på
Research Report. - Slå på arbetsflödet med reglaget Active för användning i produktion.
Vanliga fallgropar
- Gmail-inloggningar kan gå ut eller kräva specifika behörigheter. Om något skapar fel, börja med att kontrollera statusen för dina Gmail-credentials i n8n och Googles säkerhetsvarningar på kontot.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre fram misslyckas på grund av tomma svar.
- OpenAI-prompter blir ofta generiskt ”corporate” som standard. Lägg in din tonalitet tidigt, annars kommer du redigera outputen för alltid.
Vanliga frågor
Räkna med cirka 45 minuter om dina API:er och ditt Sheet är redo.
Nej. Du kopplar främst konton och klistrar in API-nycklar. Den enda ”tekniska” delen är lätt promptredigering och att kontrollera att dina Google Sheets-kolumner matchar det arbetsflödet förväntar sig.
Ja. n8n har ett gratis self-hosted-alternativ 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 kostnader för OpenAI, Perplexity och Relevance AI, som beror på hur många briefs du genererar.
Två alternativ: n8n Cloud (hanterat, enklast att sätta upp) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger obegränsade körningar men kräver grundläggande serveradministration.
Ja, men du byter trigger. Ersätt Cal.com-bokningstriggern med en Calendly-webhooktrigger och mappa sedan deltagarens e-post/namn till samma fält som används i Google Sheets-uppslagningen. Vanliga anpassningar är att skicka briefen till Slack, lägga till en Telegram-notis för ”VIP”-leads eller logga slutlig HTML i dina CRM-anteckningar. Om du håller utdatafälten konsekventa är resten av flödet (Sheets → Relevance AI → Perplexity → OpenAI → Gmail) i princip detsamma.
Oftast handlar det om utgången OAuth-åtkomst eller att fel Google-konto är anslutet. Återanslut Gmail-credentialen i n8n och bekräfta sedan att avsändaradressen matchar det Gmail tillåter. Det kan också misslyckas om din workspace-admin blockerar tredjepartsåtkomst, så kontrollera Google Workspace-säkerhetsinställningar om återanslutning inte löser det. I sällsynta fall är det en kvotfråga när du skickar många briefs på kort tid.
Många.
Ofta, ja, eftersom det här inte är en enkel ”trigger → mejl”-zap. Du gör berikning i flera steg, formatering och två AI-genereringar, och n8n hanterar förgreningar och kodbaserad städning utan att ta extra betalt för varje litet steg. Du får också self-hosting, vilket spelar roll när briefs blir en daglig vana. Zapier eller Make kan fortfarande vara bra om du vill ha snabbast möjliga setup och är okej med en enklare brief. Om du är osäker, prata med en automationsexpert så verklighetscheckar vi ditt upplägg.
Sätt upp det en gång, så dyker din förberedelse upp på autopilot. Då kan du gå in i samtal med fokus på dialogen, inte webbläsarflikarna.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.