Du skickar ett erbjudande. Det studsar. Eller värre: det ”levereras” men leder ingenstans, och du har ingen korrekt logg över vem som fick vad. Sedan sitter du och gräver i Gmail-trådar och halvfärdiga kalkylark för att försöka bevisa att en kampanj faktiskt gick ut.
Den här Gmail Sheets logging-setupen träffar marknadschefer först, om vi ska vara ärliga. Men butiksägare som kör veckopromos och byråteam som levererar kundkampanjer känner av det också. Utfallet är enkelt: verifierade e-postadresser, ett proffsigt erbjudande och en kalkylarkslogg du kan lita på för uppföljningar.
Nedan är arbetsflödet som verifierar varje adress, genererar ett personligt QR-erbjudandekort, skickar det via Gmail och loggar utskicket till Google Sheets (med en felväg som varnar dig när något inte stämmer).
Så fungerar den här automatiseringen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: Gmail + Google Sheets: kampanjutskick loggas rensat
flowchart LR
subgraph sg0["Flow 1"]
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/webhook.dark.svg' width='40' height='40' /></div><br/>Incoming Signup Webhook"]
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Input Details", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Verify Email Address", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Branch on Validity", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Render Promo Card", pos: "b", h: 48 }
n5@{ icon: "mdi:message-outline", form: "rounded", label: "Send Promo Email", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Record Promo Log", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Assemble Error Info", pos: "b", h: 48 }
n8@{ icon: "mdi:message-outline", form: "rounded", label: "Notify Admin Failure", pos: "b", h: 48 }
n0 --> n1
n1 --> n2
n5 --> n6
n7 --> n8
n2 --> n3
n3 --> n4
n3 --> n7
n4 --> n5
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 n2,n3 decision
class n6 database
class n0 api
classDef customIcon fill:none,stroke:none
class n0 customIcon
Problemet: kampanjutskick blir snabbt en spårningsröra
Det låter enkelt att leverera kampanjmejl tills du gör det i större volymer. Du exporterar en lista, stickprovar några adresser, klistrar in namn i en mall, skickar och hoppas att listkvaliteten inte sänker leveransbarheten. När studsar kommer är du fast i att rensa och strukturera data i efterhand. Och även när allt ”fungerar” behöver du fortfarande en pålitlig logg för supportärenden (“jag fick inte min kod”), för attribuering (“vem löste in vad”) och för uppföljningar (“skicka igen till giltiga men ej öppnade”). Manuell spårning håller sig aldrig korrekt särskilt länge.
Friktionen växer. Här är var det faller isär i praktiken.
- Dåliga e-postadresser smyger sig in, vilket betyder studsar, bortkastade utskick och lägre avsändarrykte över tid.
- Personalisering blir klipp-och-klistra, så kampanjer blir försenade eller går ut med uppenbara misstag.
- Kreativa tillgångar (som ett QR-erbjudandekort) tar längre tid än själva mejlet, så du hoppar över dem även när de ökar konverteringen.
- Loggningen är inkonsekvent, så uppföljningar blir gissningar och rapportering blir “tillräckligt nära”.
Lösningen: verifiera, generera, skicka och logga i ett enda körning
Det här arbetsflödet gör kampanjutskick till en enda, repeterbar process du kan lita på. Det startar när ny användardata kommer in via en n8n-webhook (namn, e-post, kampanjkod och rabattdetaljer). n8n formaterar indata, fyller i rimliga standardvärden när fält saknas och kontrollerar sedan e-postadressen med Verifi Email API innan något skickas. Om mejlet är giltigt genererar flödet automatiskt en personlig kampanjkortsbild via en HTML/CSS-till-bild-tjänst (inklusive en QR-kod för inlösen) och skickar den via Gmail som ett proffsigt HTML-mejl. Till sist loggar det ett lyckat utskick i Google Sheets så att du får ett revisionsspår för uppföljningar, rapportering och support.
Om e-postadressen inte godkänns i verifieringen försöker flödet inte leverera. I stället bygger det en strukturerad felpayload och varnar en administratör via Gmail så att du kan rätta källdatan eller utreda misstänkt aktivitet. Tysta fel är fienden, och det här eliminerar dem.
Det du får: automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du skickar 50 kampanjkoder efter en tävling. Manuellt tar även ett “snabbt” upplägg ungefär 5 minuter per person (verifiera mejlet, skapa en tillgång, skicka och sedan logga), vilket blir runt 4 timmar. Med det här arbetsflödet triggar du utskick i bulk från ditt källsystem och varje förfrågan blir normalt klar på cirka en minut (arbetsflödets egen benchmark är 30–60 sekunder). Du följer fortfarande upp resultat, men grovjobbet försvinner och arket uppdateras automatiskt när varje mejl går igenom.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Självhostningsalternativ om du föredrar det (Hostinger fungerar bra)
- Gmail för att skicka kampanjmejlet.
- Google Sheets för att lagra en korrekt utskickslogg.
- Verifi Email API-nyckel (hämtas i verifi.email-dashboarden).
- HTML/CSS to Image API-nyckel (hämtas från htmlcsstoimg.com).
Kunskapsnivå: Medel. Du kopplar in credentials, klistrar in ett Sheet-ID och justerar en mall eller två utan att sabotera logiken.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En registrering eller kampanjhändelse triggar en webhook. Ditt formulär, din butik eller ditt kampanjverktyg skickar en POST-request med namn, e-post och kampanjdetaljer när någon kvalificerar sig.
Indata rensas och normaliseras. n8n mappar fält, tillämpar standardvärden (till exempel en reservkampanjkod) och förbereder en konsekvent payload så att resten av flödet inte blir skört.
E-postverifiering avgör vilken väg som tas. Verifi kontrollerar om adressen är giltig. Om den godkänns fortsätter arbetsflödet. Om inte routas den till en felgren som sammanställer orsaken och notifierar en administratör.
Ett kampanjkort genereras och sedan skickar Gmail mejlet. HTML/CSS-till-bild-tjänsten renderar ditt brandade kort som en PNG, inklusive en QR-kod, och Gmail levererar ett proffsigt HTML-mejl med kortet inbäddat.
Loggning sker direkt efter ett lyckat utskick. Google Sheets får en rad med tidsstämpel, mottagardetaljer, kampanjvärden och sändstatus så att du kan filtrera, segmentera och följa upp senare.
Du kan enkelt ändra kortets design så att den matchar ditt varumärke eller byta inlösenlänk beroende på kampanj. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera webhook-triggern
Det här arbetsflödet startar när ett registreringsformulär postar till webhooken, som sedan mappar inkommande fält för vidare användning i flödet.
- Lägg till och öppna Incoming Signup Webhook och ställ sedan in HTTP Method till
POST. - Ställ in Path till
promo-signup. - I Options → Response Data ställer ni in JSON-svaret till
{"status": "success", "message": "Promo card being generated!"}. - Öppna Map Input Details och definiera fält med uttryck: name =
{{$json.body.name || 'Valued Customer'}}, email ={{ $json.body.email }}, promo_code ={{ $json.body.promo_code || 'WELCOME10'}}, discount_value ={{ $json.body.discount_value || '10%' }}, discount_type ={{ $json.body.discount_type || 'percentage' }}, timestamp ={{new Date().toISOString()}}.
body (t.ex. body.email). Om payload-strukturen skiljer sig behöver ni uppdatera uttrycken i Map Input Details.Steg 2: Anslut Google Sheets
Lyckade utskick loggas i ett kalkylark för uppföljning.
- Öppna Record Promo Log och ställ in Operation till
append. - Välj Google Sheet genom att ställa in Document ID till
YOUR_GOOGLE_SHEETS_IDoch Sheet Name tillSheet1(gid=0). - Mappa kolumner med uttryck: Name =
{{ $('Map Input Details').item.json.name }}, Email ={{ $('Map Input Details').item.json.email }}, Status =Sent Successfully, Timestamp ={{new Date().toISOString()}}, Promo Code ={{ $('Map Input Details').item.json.promo_code }}, Discount Value ={{ $('Map Input Details').item.json.discount_value }}. - Credential Required: Anslut era googleSheetsOAuth2Api-uppgifter i Record Promo Log.
Steg 3: Sätt upp verifiering och rendering av kort
Arbetsflödet verifierar e-postadressen och genererar bara ett kampanjkort för giltiga adresser.
- Öppna Verify Email Address och ställ in Email till
{{ $json.email }}. - Credential Required: Anslut era verifiEmailApi-uppgifter i Verify Email Address.
- Konfigurera Branch on Validity med villkoret: Left Value =
{{ $json.valid }}, Operation =equals, Right Value =true. - Öppna Render Promo Card och ställ in Response Format till
png; behåll den tillhandahållna HTML:en i HTML Content så att den refererar till{{ $('Map Input Details').item.json.name }},{{ $('Map Input Details').item.json.discount_value }}och{{ $('Map Input Details').item.json.promo_code }}. - Credential Required: Anslut era htmlcsstoimgApi-uppgifter i Render Promo Card.
YOURSTORE.com. Ersätt den med er faktiska butiksdomän innan ni går live.Steg 4: Konfigurera utgående e-post och loggning
När kampanjkortet har renderats skickar arbetsflödet e-postmeddelandet och registrerar leveransen i Sheets.
- Öppna Send Promo Email och ställ in Send To till
{{ $('Map Input Details').item.json.email }}. - Ställ in Subject till
🎉 Your Exclusive {{ $('Map Input Details').item.json.discount_value }} Discount is Ready!. - I Message behåller ni HTML-mallen och säkerställer att kampanjkortets bild använder
{{ $json.image_url }}. - Credential Required: Anslut era gmailOAuth2-uppgifter i Send Promo Email.
- Bekräfta körordningen: Render Promo Card → Send Promo Email → Record Promo Log.
Steg 5: Lägg till felhantering
Ogiltiga e-postadresser skickas till en notifieringsväg som larmar en administratör.
- På Branch on Validity false-vägen konfigurerar ni Assemble Error Info för att sätta error_type =
Invalid Email, timestamp ={{new Date().toISOString()}}och email ={{ $('Map Input Details').item.json.email }}. - Öppna Notify Admin Failure och ställ in Send To till
[YOUR_EMAIL]. - Ställ in Subject till
⚠️ Failed Promo Card Generationoch Message tillFailed to generate promo card for {{ $('Map Input Details').item.json.email }} - Invalid email address. - Credential Required: Anslut era gmailOAuth2-uppgifter i Notify Admin Failure.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett komplett end-to-end-test för att verifiera att e-postadresser valideras, kort renderas och loggar registreras.
- Klicka på Execute Workflow och skicka en test-POST-förfrågan till Incoming Signup Webhook med en giltig e-postadress.
- Bekräfta att Verify Email Address returnerar
valid: true, att Render Promo Card gerimage_urloch att Send Promo Email skickar meddelandet. - Kontrollera Record Promo Log för att säkerställa att raden appendas med rätt fält och tidsstämpel.
- Testa en ogiltig e-postadress och bekräfta att false-vägen körs: Assemble Error Info → Notify Admin Failure.
- När allt ser korrekt ut växlar ni arbetsflödet till Active för produktionsanvändning.
Vanliga fallgropar
- Åtkomst till Google Sheets misslyckas oftare än man tror eftersom arket inte delades med rätt konto. Om loggningen slutar fungera, kontrollera först delningsinställningarna för Sheet och credential som används av Google Sheets-noden.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du redigera utdata för alltid.
Vanliga frågor
Cirka en timme om dina Google-credentials är klara.
Nej. Du kopplar konton och klistrar in några ID:n och nycklar. Den enda “tekniska” delen är små malljusteringar om du vill ha din egen branding.
Ja. n8n har ett gratis självhostat 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 Verifi Email API och HTML/CSS to Image API baserat på användning.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller självhosting på en VPS. För självhosting är Hostinger VPS prisvärd och hanterar n8n bra. Självhosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det är den roliga delen. Du anpassar främst steget “Render Promo Card” genom att redigera HTML/CSS (färger, layout, logotyp, QR-storlek och giltighetsdatum). Vanliga justeringar är att byta checkout-URL i QR-koden, ändra rabattbadgen för att passa erbjudanden med fast belopp och uppdatera ämnesraden i steget “Send Promo Email”.
Oftast beror det på OAuth-behörigheter eller en utgången token. Återanslut Gmail-credential i n8n och bekräfta sedan att Gmail API är aktiverat i ditt Google Cloud-projekt. Kontrollera också att du skickar “från” en adress som ditt anslutna Gmail-konto faktiskt får använda.
Den är byggd för volym: arbetsflödet nämner “hundratals förfrågningar per timme”, och det slutför normalt varje förfrågan på ungefär en minut. På n8n Cloud är din gräns främst planens antal körningar per månad, plus API-gränserna för Verifi och din bildrenderare. Om du självhostar är det praktiska taket din serverkapacitet och hur snabbt du vill skicka utan att trigga Gmail:s rate limits.
För just det här flödet passar n8n bättre när du bryr dig om förgreningslogik (giltig vs ogiltig), mallad asset-rendering och en riktig felväg som notifierar dig. Zapier och Make kan göra delar av det, men kostnad och komplexitet ökar när du lägger till verifiering, bildgenerering och robust loggning. Om du bara skickar ett enkelt mejl och skriver en rad till ett ark kan de verktygen vara enklare. Så fort du vill ha kontroll vinner n8n. Prata med en automationsexpert om du vill ha hjälp att välja.
När detta väl är live slutar kampanjutskick vara en stressinsats och blir ett system. Arbetsflödet sköter verifiering, presentation och spårning så att du kan fokusera på erbjudandet och nästa uppföljning.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.