Att skicka ”personligt anpassade” leadmejl tar redan mycket tid. Sedan börjar gissningsleken med uppföljningen, eftersom du inte kan se vem som faktiskt öppnade något om du inte sitter i ett dyrt CRM.
Den här automatiseringen för Gmail öppningsspårning träffar säljteam och byråägare först, men en marknadschef som kör outbound känner också av det. Du får riktiga öppningssignaler loggade tillbaka i Google Sheets, så uppföljningar sker utifrån intent, inte förhoppningar.
Nedan ser du vad workflowet gör, vad du behöver och hur du får det att passa din lead nurture-process utan att förvandla kalkylarket till en röra.
Så fungerar automatiseringen
Hela n8n-workflowet, från trigger till slutresultat:
n8n Workflow Template: Gmail + Google Sheets: logga e-postöppningar
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 }
n3@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n5@{ icon: "mdi:database", form: "rounded", label: "Get CRM", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Generate Pixel", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Email Agent", pos: "b", h: 48 }
n8@{ icon: "mdi:message-outline", form: "rounded", label: "Send email", pos: "b", h: 48 }
n9@{ icon: "mdi:database", form: "rounded", label: "Update CRM", pos: "b", h: 48 }
n5 --> n4
n8 --> n9
n9 --> n4
n7 --> n8
n6 --> n7
n4 --> n6
n3 -.-> n7
n0 --> n5
end
subgraph sg1["Flow 2"]
direction LR
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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook"]
n2["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Webhook"]
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Create data pixel in base64", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "Create pixel image", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Get vars", pos: "b", h: 48 }
n13@{ icon: "mdi:database", form: "rounded", label: "Update Open email 1", pos: "b", h: 48 }
n1 --> n10
n12 --> n13
n11 --> n2
n11 --> n12
n10 --> n11
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 n7 ai
class n3 aiModel
class n5,n9,n13 database
class n1,n2 api
classDef customIcon fill:none,stroke:none
class n1,n2 customIcon
Problemet: du följer upp i blindo
Om du skickar leads från ett Google Sheet har du troligen en välbekant rutin: kopiera en e-postadress, justera en mall, skicka från Gmail och sedan försöka komma ihåg vem som fick vad och när. En vecka senare stirrar du på trådlistan och undrar vem som öppnade, vem som ignorerade och vem som egentligen är intresserad men upptagen. Det värsta är den mentala belastningen. Du fastnar i att ”kolla läget” i stället för att göra nästa vettiga sak, och små misstag (fel namn, missad lead, dubbla uppföljningar) smyger sig in eftersom processen är skör.
Det blir snabbt dyrt. Här brukar friktionen synas:
- Du skickar mejl 1, men det finns ingen pålitlig öppningssignal, så tajmingen för uppföljningen blir i praktiken en gissning.
- CRM-fält i Sheets blir inaktuella eftersom uppdatering av ”skickat”, ”datum” och ”anteckningar” är det första alla hoppar över.
- Personalisering skalar inte, vilket gör att din ”mall” blir ett generiskt meddelande som ignoreras.
- När du jonglerar 50+ leads tappar du överblicken och råkar skicka dubbelt eller missar heta svar.
Lösningen: Gmail skickar, Google Sheets uppdateras, öppningar loggas
Det här workflowet gör Google Sheets till ett lättviktigt outbound-CRM, där Gmail står för utskicken och en tracking-pixel fångar öppningar. Det börjar med att läsa ditt CRM-liknande ark och välja leads som ännu inte har fått ”Mejl 1”. För varje lead skapar n8n ett unikt pixel-ID, ber OpenAI ta fram ett personligt HTML-mejl och lägger in en osynlig 1×1-pixel kopplad till leaden. Sedan skickar Gmail mejlet och arket uppdateras direkt med skickat-flagga, skickdatum och pixel-ID. När mottagaren öppnar mejlet laddar e-postklienten pixelbilden, vilket triggar din n8n-webhook och ändrar fältet ”OPEN EMAIL 1” till ”yes”.
Workflowet startar när du kör det (manuell trigger för test, och sedan schemalagt om du vill). OpenAI genererar mejlet och n8n skickar via Gmail. Till sist lyssnar webhooken efter pixelladdningar och skriver tillbaka öppningsaktivitet till Google Sheets så att din uppföljningslista alltid är aktuell.
Det du får: automatisering vs. resultat
| Det här automatiserar workflowet | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du lägger till 40 nya leads i ditt Google Sheet varje vecka. Manuellt tar även en ”snabb” process cirka 5 minuter per lead för att personalisera, skicka och uppdatera kolumnerna, vilket blir ungefär 3 timmar. Med det här workflowet lägger du cirka 10 minuter på att kolla arket och starta körningen, sedan sköter n8n utskick och loggning medan du gör något annat. När öppningar kommer in uppdateras arket av sig självt, så din uppföljningslista är redan sorterad efter faktisk aktivitet.
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 din CRM-liknande leadtabell
- Gmail för att skicka HTML-mejlen
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard)
Svårighetsgrad: Medel. Du kopplar konton, klistrar in en webhook-URL i en node och mappar några kalkylarkskolumner.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15 minuters konsultation).
Så fungerar det
Nya leads ligger i Google Sheets. Du har ett CRM-liknande ark med kolumner som namn, e-post, ”EMAIL 1 SEND”, ”PIXEL EMAIL 1”, ”EMAIL 1 DATE” och ”OPEN EMAIL 1”. Workflowet läser arket och riktar in sig bara på rader som ännu inte har kontaktats.
Varje lead får en unik pixel-token. n8n genererar ett ID och bygger en liten osynlig bild-URL som pekar tillbaka till din n8n-webhook, så att öppningar kan detekteras när bilden laddas.
OpenAI skriver HTML-mejlet. Innehållet personaliseras (baserat på dina leadfält) och pixeln läggs in i brödtexten så att spårningen sker automatiskt. Det är här de flesta team vinner tillbaka kvalitet, eftersom mejlet håller en jämn nivå utan att kännas robotiskt.
Gmail skickar, Sheets uppdateras och öppningar loggas. Efter utskick uppdateras arket med skickstatus, datum och pixel-ID. När webhooken tar emot en pixelrequest matchar n8n den till rätt lead och markerar öppningsfältet som ”yes”.
Du kan enkelt justera fälten i arket så att de matchar dina nuvarande CRM-kolumner utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den manuella triggern
Det här arbetsflödet startas manuellt för att hämta leads och skicka pixelspårade e-postmeddelanden.
- Lägg till och öppna Manual Start Trigger för att starta arbetsflödet vid behov.
- Koppla Manual Start Trigger till Fetch CRM Sheet enligt exekveringsflödet.
Steg 2: koppla Google Sheets
Dessa noder läser in lead-poster och uppdaterar status för skickat/öppnat i ert CRM-ark.
- Öppna Fetch CRM Sheet och ställ in Document ID till ert ark-ID (ersätt
[YOUR_ID]). - Ställ in Sheet Name till
gid=0(arket som heterFoglio1). - I Fetch CRM Sheet, bekräfta att filtret använder EMAIL 1 SEND så att endast ej skickade leads behandlas.
- Öppna Update CRM Sheet och behåll Operation inställd på
update. - Verifiera att mappningarna i Update CRM Sheet inkluderar row_number inställt på
{{ $('Fetch CRM Sheet').item.json.row_number }}och EMAIL 1 DATE inställt på{{$now.format('dd/LL/yyyy')}}. - Öppna Mark Email Opened och behåll Operation som
update, med matchande kolumn PIXEL EMAIL 1. - Inloggningsuppgifter krävs: koppla era googleSheetsOAuth2Api-inloggningsuppgifter till Fetch CRM Sheet, Update CRM Sheet och Mark Email Opened.
[YOUR_ID] inte ersätts i Fetch CRM Sheet, Update CRM Sheet och Mark Email Opened kommer arbetsflödet att misslyckas med att läsa eller uppdatera rader.Steg 3: konfigurera lead-iteration och skapande av pixeltoken
Det här steget loopar igenom varje lead och genererar en unik pixeltoken och webhook-URL för spårning.
- Öppna Iterate Records (Split In Batches) och låt standardinställningarna vara kvar för att behandla leads sekventiellt.
- I Create Pixel Token, behåll pixel-tilldelningen som använder uttrycket
{{ Array.from({length: 15}, () => Math.random().toString(36).charAt(2)).join('') + ['!', '@', '#', '$', '%', '&', '*'][Math.floor(Math.random() * 7)] }}. - Ställ in email till
email-1i Create Pixel Token. - Ersätt webhook_url i Create Pixel Token med er aktiva n8n-webhook-URL, t.ex.
https://YOUR_N8N_WEBHOOK_URL.
Steg 4: konfigurera AI-generering av e-postutkast
AI-agenten genererar e-posttexten och infogar spårningspixelns HTML.
- Öppna Email Draft Agent och behåll Prompt Type inställt på
define. - Bekräfta att fältet Text innehåller pixelns bildtagg med uttryck:
. - Säkerställ att OpenAI Chat Engine är kopplad som språkmodell för Email Draft Agent.
- Inloggningsuppgifter krävs: koppla era openAiApi-inloggningsuppgifter till OpenAI Chat Engine (inloggningsuppgifter läggs till på den överordnade modellnoden, inte på agenten).
Steg 5: konfigurera e-postutskick och CRM-uppdateringar
Det här steget skickar det utkastade e-postmeddelandet och loggar skickhändelsen i ert ark.
- Öppna Dispatch Email och ställ in Send To till
{{ $('Fetch CRM Sheet').item.json.EMAIL }}. - Ställ in Message till
{{ $json.output }}för att använda den AI-genererade HTML-body:n. - Ställ in Subject till
Email 1i Dispatch Email. - Inloggningsuppgifter krävs: koppla era gmailOAuth2-inloggningsuppgifter till Dispatch Email.
- I Update CRM Sheet, verifiera att EMAIL 1 SEND är inställt på
{{ $json.id }}och att PIXEL EMAIL 1 är inställt på{{ $('Create Pixel Token').item.json.pixel }}.
Steg 6: konfigurera webhook-baserad pixelspårning
Webhooken tar emot pixelträffar, konverterar base64-bilden till binärt format och uppdaterar arket när en öppning detekteras.
- Öppna Incoming Webhook och ställ in Path till
e995cbaa-9259-4685-a144-16a700d0a71d. - Ställ in Response Mode till
responseNodei Incoming Webhook. - I Build Pixel Base64, behåll fältet data inställt på den angivna base64-PNG-strängen.
- I Convert Pixel File, ställ in Operation till
toBinaryoch Source Property tilldata; behåll mimeType inställt påimage/png. - Convert Pixel File skickar utdata parallellt till både Webhook Response Sender och Extract Query Params.
- I Webhook Response Sender, ställ in Respond With till
binaryför att returnera pixelbilden. - I Extract Query Params, mappa pixel till
{{ $('Incoming Webhook').item.json.query.pixel }}och email till{{ $('Incoming Webhook').item.json.query.email }}. - I Mark Email Opened, bekräfta att OPEN EMAIL 1 är inställt på
yesoch att PIXEL EMAIL 1 är inställt på{{ $json.pixel }}.
Steg 7: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att verifiera utskick och öppningsspårning innan ni aktiverar arbetsflödet.
- Klicka på Execute Workflow och kör Manual Start Trigger för att skicka ett testmail till en rad i Fetch CRM Sheet.
- Bekräfta att Dispatch Email skickar meddelandet och att Update CRM Sheet skriver EMAIL 1 SEND, EMAIL 1 DATE och PIXEL EMAIL 1.
- Öppna e-postmeddelandet och säkerställ att pixel-URL:en anropas; Incoming Webhook ska triggas och Mark Email Opened ska sätta OPEN EMAIL 1 till
yes. - När allt fungerar, växla arbetsflödet till Active för användning i produktion.
Vanliga fallgropar
- Google Sheets-inloggningar kan löpa ut eller kräva särskilda behörigheter. Om något slutar fungera, börja med att kolla n8n-panelen för Credentials och Google-kontots åtkomstprompt.
- Om du använder Wait-noder eller extern rendering varierar processtider. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera output i all evighet.
Vanliga frågor
Cirka 30 minuter om dina Google-konton redan är anslutna.
Ingen kodning krävs. Du mappar främst kalkylarkfält och klistrar in din webhook-URL för produktion i steget som genererar pixeln.
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 med OpenAI API-kostnader (ofta några cent per batch med mejl, beroende på promptlängd).
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änsat antal körningar men kräver grundläggande serverhantering.
Ja, men planera dina kalkylarkskolumner först. De flesta duplicerar samma mönster (”EMAIL 2 SEND”, ”PIXEL EMAIL 2”, ”OPEN EMAIL 2”) och återanvänder samma logik: hämta kvalificerade leads, skapa en ny pixel-token, skriv ett nytt mejl i Email Draft Agent, skicka och uppdatera raden. Du kan också lägga till enkel lead scoring genom att sätta ett fält när ”OPEN EMAIL 1” ändras till ”yes”.
Oftast beror det på att OAuth-åtkomsten har löpt ut eller att fel Google-konto är anslutet i n8n. Anslut Google Sheets-credential igen och bekräfta sedan att kalkylarkets documentId i noderna ”Fetch CRM Sheet” och uppdateringsnoderna matchar din kopia. Om du uppdaterar skyddade områden, ta bort skydd eller ge redigeringsåtkomst till det anslutna kontot.
I en typisk setup är hundratals leads per dag realistiskt, men Gmails sändningsgränser är det verkliga taket.
För pixelbaserad spårning och logiken ”skriv tillbaka till samma CRM-rad” är n8n oftast det smidigare valet, eftersom du kan styra webhooks, loopar och villkorsstyrda uppdateringar på ett ställe. Self-hosting tar också bort den ständiga oron för ”task counting”. Zapier eller Make kan fungera om du bara vill göra ”skicka mejl och uppdatera sheet”, men öppningsspårning blir snabbt krångligt utan egen webhook-hantering. Om du vill välja rätt, prata med en automationsexpert så får du en rak rekommendation baserat på din volym och dina verktyg.
När öppningar och sändhistorik loggas automatiskt slutar ditt Sheet vara en förskönad lista och börjar fungera som en riktig pipeline. Sätt upp det en gång och lägg sedan uppföljningstiden på de leads som faktiskt visade intresse.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.