Din churn-lista ligger i ett kalkylark, teamet är upptaget och “vi borde höra av oss”-ögonblicket blir till… nästa vecka. Då har kunden redan lämnat, skadan är skedd och du sitter och gissar vilket budskap som hade fungerat.
CRM-ansvariga känner igen det här när de får uppdraget att “minska churn” utan fler resurser. E-handelsansvariga ser det i tappade återköp. Och driver du en byrå vill kunderna alltid ha retention-resultat igår. Den här churn-e-postautomationen gör den fördröjningen till daglig, personaliserad outreach.
Det här arbetsflödet hämtar högriskkunder från Google Sheets, använder Gemini för att skriva ett skräddarsytt win-back-erbjudande, skickar det via Gmail och loggar åtgärden så att du faktiskt kan följa upp vad som hände.
Så här fungerar automationen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Google Sheets + Gmail: vinn tillbaka kunder snabbt
flowchart LR
subgraph sg0["Scheduled Start: Daily Churn Check Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Start: Daily Churn..", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Fetch Customer Data from Sheet", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter High Churn Risk & No ..", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check if Eligible Customers ..", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Process Each Eligible Customer", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Generate Win-Back Offer", pos: "b", h: 48 }
n6@{ icon: "mdi:brain", form: "rounded", label: "(LLM Model for Offer Generat..", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "(Parse Offer JSON)", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "Log Sent Offer in System Log", pos: "b", h: 48 }
n9@{ icon: "mdi:message-outline", form: "rounded", label: "Send Win-Back Offer via Email", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set 'Not Found' Status", pos: "b", h: 48 }
n11@{ icon: "mdi:database", form: "rounded", label: "Log 'Not Found' in System Log", pos: "b", h: 48 }
n7 -.-> n5
n10 --> n11
n5 --> n8
n8 --> n9
n9 --> n4
n1 --> n2
n4 --> n5
n6 -.-> n5
n3 --> n4
n3 --> n10
n0 --> n1
n2 --> n3
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 n5,n7 ai
class n6 aiModel
class n2,n3 decision
class n1,n8,n11 database
Problemet: churn-signalerna syns, men outreach sker för sent
Om du redan räknar ut en churn-poäng (eller ens en “ser riskabel ut”-flagga) är det frustrerande inte att upptäcka risken. Det är uppföljningen. Någon måste öppna ett ark, filtrera fram rätt segment, bestämma ett erbjudande, skriva ett mejl som inte låter robotiskt, skicka det och sedan komma ihåg att anteckna det. Det sista steget hoppas över oftare än man vill erkänna. En vecka senare kan du inte se vem som kontaktades, vilket erbjudande de fick eller om en kampanj ens kördes. Ärligt talat blir retention en dimmig, manuell rutin.
Friktionen växer.
- Du kontaktar i batchar, vilket gör att kunder med högst risk får vänta längst.
- Kvaliteten på erbjudanden blir inkonsekvent eftersom den beror på vem som hann den dagen.
- Utan en pålitlig logg råkar du mejla personer två gånger eller missar dem helt.
- “Skapat kampanjdatum” glöms bort, så inriktningsregler börjar tyst skapa fel över tid.
Lösningen: dagliga win-back-mejl genererade från ditt churn-ark
Det här n8n-arbetsflödet körs enligt ett dagligt schema du väljer (till exempel varje morgon). Det läser kundlistan från Google Sheets, letar efter personer över en churn-risktröskel (över 0,7) och kontrollerar också att de inte nyligen redan har ingått i samma win-back-kampanj (via ditt fält created_campaign_date). För varje kund som kvalificerar sig genererar Gemini ett skräddarsytt erbjudande baserat på deras churn-poäng och deras föredragna kategorier, och därefter skickar arbetsflödet meddelandet via Gmail. Varje skickat mejl skrivs in i ett separat SYSTEM_LOG-ark så att du kan granska aktivitet, mäta resultat och felsöka snabbt när något verkar avvika. Om ingen kvalificerar sig den dagen loggar det “NOT_FOUND” så att tystnad också blir ett spårbart utfall.
Arbetsflödet startar med en schematrigger, sedan blir Google Sheets din källa till sanning. Gemini tar fram ett strukturerat erbjudande (titel, typ, detaljer) och Gmail levererar det. Till sist ser loggningen i Google Sheets till att ditt retention-program blir uppföljningsbart, inte magkänslestyrt.
Det du får: automation vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du har 80 kunder som varje vecka flaggas som “hög risk”, och att du normalt lägger cirka 2 minuter per kund på att filtrera, välja erbjudande, skriva, skicka och anteckna någonstans. Det är ungefär 2,5 timmar, och ändå slutar det med bristfällig spårning. Med det här arbetsflödet sätter du schemat en gång, och den dagliga körningen sköter både outreach och loggning automatiskt. Ditt “jobb” blir att granska SYSTEM_LOG och justera reglerna för erbjudanden – vilket är närmare 10 minuter än en hel eftermiddag.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Självhosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra churn-poäng och kundfält.
- Gmail för att skicka win-back-mejlen.
- Google Gemini / Vertex AI-inloggningsuppgifter (hämta i Google Cloud Console med Vertex AI aktiverat)
Kunskapsnivå: Medel. Du kopplar främst Google-inloggningar, bekräftar kolumner i arken och justerar ett filtervillkor så att det matchar dina kampanjregler.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett dagligt schema kickar igång det. n8n kör vid den tid du sätter (många team väljer tidig morgon) så att outreach sker innan dagen blir rörig.
Ditt Google-ark blir målgruppen. Arbetsflödet läser ditt “Customer Data”-ark och filtrerar på predicted_churn_score > 0.7 plus din regel för “har inte redan riktats” (ofta fältet created_campaign_date).
Gemini genererar rätt typ av erbjudande. Kunder med måttlig risk får en informativ puff (vad som är nytt i deras föredragna kategorier). Kunder med högre risk får något starkare, som bonuspoäng eller rabatt i en målkategori som till exempel Böcker – allt returnerat som strukturerad data så att mejlen blir prydliga.
Gmail skickar, Sheets loggar. n8n mejlar kunden med den genererade erbjudandetiteln och detaljerna och skriver sedan en rad i ditt SYSTEM_LOG-ark. Om ingen kvalificerar sig loggas en NOT_FOUND-post så att du kan bekräfta att automationen fortfarande kördes.
Du kan enkelt ändra churn-tröskeln så att den matchar din modell, eller justera erbjudandereglerna så att de matchar dina marginaler. Se hela implementationsguiden nedan för alternativ för anpassning.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera schematriggern
Det här arbetsflödet startar enligt ett dagligt schema och hämtar kunddata för att utvärdera churn-risk.
- Lägg till och öppna Daily Schedule Trigger.
- Ställ in önskat schema i Daily Schedule Trigger (arbetsflödet är avsett att köras dagligen).
- Koppla Daily Schedule Trigger till Retrieve Client Sheet Data.
Steg 2: Anslut Google Sheets
Kundposter och systemloggar lagras i Google Sheets, så säkerställ att datakällorna är konfigurerade.
- Öppna Retrieve Client Sheet Data och välj ditt kalkylark i Document med cachelagrat namn
Customer Data Spreadsheet. - Ställ in Sheet till
Customer Datai Retrieve Client Sheet Data. - Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Retrieve Client Sheet Data.
- Öppna Record Offer in Log och bekräfta att Operation är
appendOrUpdateoch att Sheet ärSYSTEM_LOG. - Verifiera att kolumnerna i Record Offer in Log är mappade till
{{ $json.output.timestamp }},{{ $json.output.action_taken }}och{{ $json.output.customer_id }}. - Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Record Offer in Log.
- Öppna Log Not Found Status och bekräfta att Operation är
appendOrUpdateoch att Sheet ärSYSTEM_LOG. - Verifiera att kolumnerna i Log Not Found Status är mappade till
{{ $json.date }}och{{ $json.system_log }}. - Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Log Not Found Status.
Steg 3: Filtrera och kvalificera kunder
Det här steget filtrerar fram kunder med hög risk och skickar vidare kvalificerade poster för bearbetning.
- Öppna Filter High Risk Clients och behåll villkoret predicted_churn_score >
0.7med Left Value satt till{{ $json.predicted_churn_score.toNumber() }}. - Öppna Verify Eligible Clients och bekräfta att villkoret kontrollerar att
{{ $json.isEmpty() }}är false för att säkerställa att data finns. - Koppla Filter High Risk Clients → Verify Eligible Clients → Iterate Qualified Clients.
- Lämna inställningarna i Iterate Qualified Clients som de är om ni vill använda standardhantering av batchar.
Steg 4: Ställ in AI-generering av erbjudanden
Arbetsflödet använder Gemini för att generera ett winback-erbjudande och tolkar sedan JSON-utdata.
- Öppna Gemini Model Engine och ställ in Model Name till
models/gemini-2.0-pro-exp. - Inloggningsuppgifter krävs: Anslut era googlePalmApi-inloggningsuppgifter i Gemini Model Engine.
- Öppna Compose Winback Offer och behåll Prompt Type som
definemed Has Output Parser aktiverat. - Bekräfta att prompten refererar till
{{ $json.predicted_churn_score }}och{{ $json.preferred_categories }}så att erbjudanden blir personaliserade. - Öppna Parse Offer Output och behåll JSON Schema Example enligt angivet för att säkerställa strukturerad output.
- Säkerställ att Gemini Model Engine är ansluten som språkmodell till Compose Winback Offer och att Parse Offer Output är ansluten som output parser. Inloggningsuppgifter ska läggas till i Gemini Model Engine, inte i Parse Offer Output.
Steg 5: Konfigurera utdata och notifieringar
Kvalificerade kunder får ett erbjudande via e-post och loggas; icke-kvalificerade poster flaggas och loggas.
- I Record Offer in Log verifierar ni att kolumnerna använder
{{ $json.output.timestamp }},{{ $json.output.action_taken }}och{{ $json.output.customer_id }}. - Öppna Email Winback Offer och ställ in To till
{{ $('Iterate Qualified Clients').item.json.user_mail }}. - Ställ in Subject till
{{ $json.output.offer_title }}och Message till{{ $json.output.offer_details }}med Email Typetext. - Inloggningsuppgifter krävs: Anslut era gmailOAuth2-inloggningsuppgifter i Email Winback Offer.
- Konfigurera ”not found”-vägen: i Assign Not Found Flag behåller ni system_log som
NOT_FOUNDoch date som{{ $now }}, och kopplar sedan till Log Not Found Status.
Steg 6: Testa och aktivera ert arbetsflöde
Validera arbetsflödet från början till slut innan ni aktiverar det för daglig körning.
- Klicka på Execute Workflow för att köra ett manuellt test.
- Bekräfta att Retrieve Client Sheet Data returnerar rader och att Filter High Risk Clients filtrerar fram poäng >
0.7. - Verifiera att Compose Winback Offer ger giltig JSON och att Record Offer in Log skriver till
SYSTEM_LOG. - Kontrollera att Email Winback Offer skickar till
{{ $('Iterate Qualified Clients').item.json.user_mail }}med förväntat ämne och meddelande. - Om inga kvalificerade kunder hittas, bekräfta att Assign Not Found Flag och Log Not Found Status lägger till en
NOT_FOUND-post. - Växla Active för att aktivera dagliga körningar när resultaten är korrekta.
Vanliga fallgropar
- Google Sheets-inloggningar kan löpa ut eller sakna filåtkomst. Om rader inte laddas eller loggar inte skrivs, kontrollera OAuth-anslutningen i n8n och bekräfta att kalkylarket är delat med det autentiserade Google-kontot.
- Om du använder väntelägen eller batchbeteende kan timing överraska. När Gemini-svar är långsamma, öka batch-takten eller säkerställ att efterföljande steg inte förutsätter omedelbara utdata.
- Gemini-prompter som inte inkluderar din tonalitet kommer att glida mot generisk marknadsföringstext. Lägg till några rader om ton, dina produktkategorier och vad du aldrig vill lova – annars kommer du att behöva redigera varje utskick.
Vanliga frågor
Cirka en timme om dina Sheets och Google-inloggningar är klara.
Nej. Du kopplar konton och mappar några fält. Den enda “logiken” är oftast att justera churn-tröskeln och villkoret för kampanjdatum.
Ja. n8n har ett gratis alternativ för självhosting 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 användning av Google Gemini via Vertex AI, vilket beror på hur många kunder du bearbetar varje dag.
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 klarar n8n bra. Självhosting ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. De flesta team redigerar logiken i “Filter High Risk Clients” (till exempel ändrar 0,7-tröskeln eller byter ut kontrollen av created_campaign_date) och uppdaterar Gemini-prompten i steget “Compose Winback Offer” så att den matchar dina faktiska kategorier, marginaler och tonalitet. Vanliga justeringar är att lägga till en fjärde erbjudandetyp för VIP-kunder, begränsa rabatter till specifika SKU:er och stoppa in dynamiska fält som senaste köpdatum eller plan-nivå i prompten.
Oftast handlar det om OAuth-åtkomst eller att filen inte är tillgänglig för det anslutna Google-kontot. Återanslut Google Sheets-inloggningen i n8n, bekräfta att kalkylarks-ID och arknamn är korrekta och dubbelkolla att arket är delat med rätt konto. Om det bara fallerar vid loggning kan dina kolumnrubriker i SYSTEM_LOG inte matcha det som arbetsflödet försöker skriva.
Några hundra per dag är realistiskt för de flesta upplägg.
Det beror på hur hårda krav du har på regler och spårning. n8n är enklare att kontrollera när du behöver batchning (bearbeta kunder en och en), strukturerad AI-output och en loggpost “även när inget händer” för revision och uppföljning. Självhosting är också viktigt om volymen växer och du inte vill bli debiterad för varje extra steg. Zapier eller Make kan gå snabbare för ett enkelt tvåstegsutskick, men det här arbetsflödet har fler rörliga delar än så. Vill du ha en second opinion, prata med en automationsexpert.
När det här är live slutar churn-outreach vara panikartat och blir en daglig vana som rullar utan dig. Arbetsflödet hanterar det repetitiva. Du fokuserar på besluten som faktiskt driver retention.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.