Din ”hälsokontroll” av kunder är förmodligen utspridd på för många ställen. Betalningar ligger i en databas, klagomål finns i ett ärendehanteringsverktyg och feedback är begravd i mejl. Då upptäcks churn-risk sent, och oftast först efter att kunden redan har tappat engagemanget.
Den här automatiseringen för churn-risk träffar Customer Success-team först, men produktansvariga och operatörer som driver en slimmad SaaS märker den också. Du får en daglig riskskanning, korrekt formaterade sammanfattningar i Google Sheets och snabba eskaleringsnotiser utan att behöva vakta dashboards.
Nedan ser du hur arbetsflödet fungerar, vilka resultat du kan förvänta dig och vad du behöver för att köra det stabilt i n8n.
Så här fungerar automatiseringen
Här är hela arbetsflödet du kommer att sätta upp:
n8n Workflow Template: PostgreSQL till Google Sheets – upptäck churnrisk tidigt
flowchart LR
subgraph sg0["Weekly schedule1 Flow"]
direction LR
n0@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet1", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP Request1"]
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/code.svg' width='40' height='40' /></div><br/>Prompt For Model1"]
n3@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message1", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items1", pos: "b", h: 48 }
n5["<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/merge.svg' width='40' height='40' /></div><br/>Merge1"]
n6@{ icon: "mdi:cog", form: "rounded", label: "Wait1", pos: "b", h: 48 }
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/>Code in JavaScript"]
n8@{ icon: "mdi:database", form: "rounded", label: "Append or update row in sheet", pos: "b", h: 48 }
n9@{ icon: "mdi:play-circle", form: "rounded", label: "Weekly schedule1", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields2", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch1", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields3", pos: "b", h: 48 }
n13["<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/postgres.svg' width='40' height='40' /></div><br/>Fetch Customer Risk Data"]
n14@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Is High Risk Customer?", pos: "b", h: 48 }
n15@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message4", pos: "b", h: 48 }
n16["<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/merge.svg' width='40' height='40' /></div><br/>Merge Risk Result"]
n17@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare Escalation Summary F..", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare Escalation Summary F..", pos: "b", h: 48 }
n19["<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/>Code in JavaScript3"]
n20@{ icon: "mdi:database", form: "rounded", label: "Append or update row in sheet3", pos: "b", h: 48 }
n21["<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/discord.svg' width='40' height='40' /></div><br/>Send a message5"]
n22@{ icon: "mdi:play-circle", form: "rounded", label: "Daily Risk Check Trigger", pos: "b", h: 48 }
n6 --> n4
n5 --> n3
n11 --> n13
n11 --> n0
n10 --> n11
n12 --> n11
n1 --> n7
n15 --> n19
n4 --> n5
n4 --> n2
n9 --> n10
n16 --> n15
n16 --> n21
n2 --> n1
n7 --> n8
n19 --> n20
n0 --> n4
n14 --> n17
n14 --> n18
n22 --> n12
n13 --> n14
n8 --> n6
n17 --> n16
n18 --> n16
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 n9,n22 trigger
class n11,n14 decision
class n0,n8,n13,n20 database
class n1 api
class n2,n7,n19 code
classDef customIcon fill:none,stroke:none
class n1,n2,n5,n7,n13,n16,n19,n21 customIcon
Varför det här spelar roll: churn-signaler gömmer sig mitt framför ögonen
Churn visar sig sällan som en enda högljudd händelse. Det är det tysta mönstret: en sen betalning, sedan en till. Ett antal klagomål som sakta kryper upp. En rak kommentar i feedback som aldrig hamnar hos rätt person. När du plockar ihop signalerna manuellt känns arbetet litet varje gång, men det stjäl fokus varje dag. Och ärligt talat: den största kostnaden är missad tajming. Du kan inte ”vinna tillbaka” en kund som du aldrig såg var på väg att glida bort.
Det bygger på snabbt. Här är där friktion ofta blir till churn.
- Riskgenomgångar sker bara när någon kommer ihåg det, vilket gör att konton granskas för sent.
- Team kopierar och klistrar in data i kalkylark, och några felaktiga rader kan spåra ur hela uppföljningslistan.
- Högriskkonton triggar ingen tydlig varning, så ”brådskande” blir morgondagens problem.
- Produktinsikter blir ostrukturerade, så ledningen får anekdoter i stället för teman de kan agera på.
Vad du bygger: en daglig riskskanner + en veckovis insiktsrapport
Det här arbetsflödet körs i två lägen: en daglig churn-riskkontroll och en veckovis feedbacksammanfattning. På dagligt schema frågar det din PostgreSQL-dataset efter kund-, betalnings-, produkt- och klagomålssignaler. Sedan utvärderar det vilka kunder som har hög risk, tar fram en tydlig eskaleringssammanfattning och skickar den direkt via Gmail och Discord. Till sist loggar det vad som hände (inklusive tidsstämplar och notisstatus) i Google Sheets så att du alltid har en revisionslogg.
På veckoschemat hämtar arbetsflödet rader från Google Sheets, loopar igenom kunder en och en och skickar feedback till en AI-modell för strukturerad analys. AI-insikterna slås sedan tillbaka in i din dataset, sparas i Sheets och mejlas som en rapport redo för ledningen.
Det här bygger du
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du hanterar 200 aktiva konton och gör en ”snabb” churn-koll tre gånger i veckan. Om det tar cirka 2 minuter per konto att slå upp betalningar, klagomål och senaste anteckningar blir det ungefär 6 timmar i veckan av skanning. Med det här arbetsflödet kör det dagliga schemat av sig självt och avbryter dig bara för konton som faktiskt är riskabla (plus ett veckomejl som redan är sammanfattat). Du kommer fortfarande lägga tid på uppföljning, men letandet försvinner.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- PostgreSQL som källa för din riskdataset-fråga.
- Google Sheets för att lagra loggar och AI-utdata från feedback.
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard).
Nivå: Medel. Du kopplar en databaskredential, mappar några fält och justerar riskregeln så att den matchar din verksamhet.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Dagligt eller veckovis schema drar igång. Två schematriggers kör arbetsflödet i olika lägen. En enkel flagga och en switch styr körningen så att dagliga körningar fokuserar på churn-risk, medan veckokörningar fokuserar på insiktsrapportering.
Kundriskdata hämtas från PostgreSQL. Arbetsflödet frågar din dataset efter kundkontext, betalningsbeteende, signaler om produktanvändning (om du lagrar dem) och antal klagomål. Det är i den frågan du bestämmer vilka ”riskinput” som är viktiga.
Risk utvärderas och eskaleringar skickas. Ett If-steg kontrollerar villkor för hög risk (betalningsstatus plus trösklar för klagomål), och förbereder sedan antingen en lågriskpost eller en högriskpost. Båda flödena slås ihop, och högrisk-sammanfattningar skickas via Gmail och postas till Discord så att rätt personer ser det snabbt.
Allt loggas, sedan gör AI feedback till teman. Dagliga körningar lägger till en rad i Google Sheets med tidsstämplar och notisstatus. Veckokörningar hämtar kundrader från Sheets, kör dem i batchar, bygger en strukturerad prompt, anropar AI-modellen via HTTP Request och sparar de korrekt formaterade insikterna tillbaka i Sheets innan en slutlig rapport mejlas.
Du kan enkelt justera riskreglerna så att de matchar din definition av churn, eller ändra destinationerna (till exempel endast mejl, endast Discord eller båda) utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera schematriggern
Konfigurera dagliga och veckovisa scheman som startar workflowet och styr körningen utifrån frekvens.
- Öppna Weekly Schedule Trigger och ställ in veckoregeln så att den körs varje vecka på dag
1klockan9. - Öppna Daily Schedule Trigger och bekräfta att regeln för dagligt intervall är inställd (workflowet använder standardintervallet för daglig körning).
- I Set Weekly Flag, ställ in tilldelningen isWeekly till
true. - I Set Daily Flag, ställ in tilldelningen isDaily till
true. - I Route by Frequency, bekräfta att reglerna jämför
{{$json.isDaily}}lika medtrueoch{{$json.isWeekly}}lika medtrue.
true) så att de matchar switch-villkoren i Route by Frequency.Steg 2: Anslut Google Sheets
Konfigurera Google Sheets-noderna som används för att hämta data, uppdatera feedback och logga notifieringar.
- Öppna Retrieve Sheet Rows och välj kalkylarket i Document ID, och ställ sedan in Sheet Name till fliken med kundloggar.
- Öppna Update Feedback Sheet och ställ in Operation till
appendOrUpdate, och mappa sedan fälten med befintliga uttryck som{{$json.email}},{{$json.ai_feedback}}och{{$json.feedback_generated_at}}. - Öppna Log Notification Sheet och ställ in Operation till
appendOrUpdate, och säkerställ att fält som{{$json.notification_status}}och{{$json.logged_at}}är mappade. - Inloggningsuppgifter krävs: Anslut era Google Sheets-inloggningsuppgifter för Retrieve Sheet Rows, Update Feedback Sheet och Log Notification Sheet.
customer_id, säkerställ att arket innehåller den kolumnen, annars misslyckas uppdateringarna utan tydlig felindikering.Steg 3: Konfigurera datahämtning och riskutvärdering
Hämta riskdata från PostgreSQL och klassificera varje kund som en post med låg eller hög risk.
- Öppna Query Risk Dataset och bekräfta att Operation är
executeQuerymed den angivna SQL-frågan. - Inloggningsuppgifter krävs: Anslut era Postgres-inloggningsuppgifter för Query Risk Dataset.
- I Evaluate Risk Status, verifiera att villkoren matchar
{{$json.payment_status}}lika medsuccessoch{{$json.complaint_count}}lika med1. - I Prepare Low Risk Record, säkerställ att risk_level är satt till
Lowoch att action_required ärNo. - I Prepare High Risk Record, säkerställ att risk_level är satt till
Very_Highoch att action_required ärImmediate follow-up needed. - Bekräfta att Merge Risk Streams slår ihop poster med låg och hög risk innan notifieringar.
Steg 4: Konfigurera generering av AI-feedback och batchbearbetning
Bearbeta rader i batchar, generera AI-feedback och skriv tillbaka resultaten till feedback-arket.
- Från Retrieve Sheet Rows, bekräfta att flödet går till Iterate Records Batch, som sedan skickar items till Compose Model Prompt och Combine Batch Results.
- I Compose Model Prompt, behåll modellen som
llama-3.3-70b-versatileoch bevara originaldata ioriginalCustomerData. - I External API Request, ställ in URL till
https://api.groq.com/openai/v1/chat/completionsoch JSON Body till{{$json.requestBody}}. - I External API Request, ställ in headers för Authorization till
Bearer [CONFIGURE_YOUR_TOKEN]och Content-Type tillapplication/json. - I Assemble Feedback Output, säkerställ att koden hämtar AI-svaret och slår ihop det med
$('Compose Model Prompt').first().json.originalCustomerData. - Bekräfta att Update Feedback Sheet skriver AI-feedback och tidsstämpel, och att Pause for Next Batch loopar tillbaka till Iterate Records Batch.
Steg 5: Konfigurera notifieringar och parallella utdata
Skicka dagliga sammanfattningar via e-post och Discord och logga sedan notifieringsstatus.
- I Send Daily Summary Email, ställ in Send To till er mottagaradress och behåll HTML-meddelandets body med filter som
{{$items().filter(i => i.json.risk_level !== 'Low')}}. - I Dispatch Weekly Email, ställ in Send To till er mottagaradress och behåll subject-uttrycket
🤖 AI Product Feedback Analysis – {{ new Date().toLocaleDateString() }}. - Merge Risk Streams skickar utdata till både Send Daily Summary Email och Post Discord Alert parallellt.
- Öppna Post Discord Alert och behåll uttrycket för meddelandeinnehåll med
{{ new Date().toLocaleDateString() }}och riskfiltren. - I Tag Notification Status, bekräfta att den hämtar items från Merge Risk Streams och lägger till
notification_status: 'sent'ochlogged_at. - Bekräfta att Tag Notification Status skickar utdata till Log Notification Sheet för revisionsloggning.
- Inloggningsuppgifter krävs: Anslut era Gmail-inloggningsuppgifter för Send Daily Summary Email och Dispatch Weekly Email.
- Inloggningsuppgifter krävs: Anslut era Discord-inloggningsuppgifter för Post Discord Alert.
Steg 6: Testa och aktivera ert workflow
Kör ett manuellt test för att validera datahämtning, generering av AI-feedback och leverans av notifieringar.
- Klicka på Execute Workflow och kör manuellt Daily Schedule Trigger eller Weekly Schedule Trigger för att simulera respektive väg.
- Verifiera att Query Risk Dataset returnerar rader och att Evaluate Risk Status routar items till Prepare Low Risk Record eller Prepare High Risk Record.
- Kontrollera att Retrieve Sheet Rows matar Iterate Records Batch och att AI-feedback läggs till i Update Feedback Sheet.
- Bekräfta att e-post kommer fram från Send Daily Summary Email och Dispatch Weekly Email, och att Discord-inlägg visas från Post Discord Alert.
- När allt är validerat, växla workflowet till Active så att schematriggrarna körs automatiskt.
Felsökningstips
- PostgreSQL-credentials kan gå ut eller kräva specifika behörigheter. Om saker skapar fel, kontrollera dina n8n-credential-inställningar och bekräfta att DB-användaren kan köra riskfrågan först.
- Om du använder Wait-noder eller extern rendering varierar processtider. Öka väntetiden om noder längre fram fallerar på tomma svar.
- Behörigheter i Google Sheets och arksstrukturen spelar större roll än man tror. Om ”append or update” beter sig konstigt, verifiera fliknamnet i arket, att rubrikraden är konsekvent och att ditt Google-konto kan redigera filen.
Snabba svar
Cirka en timme om din PostgreSQL-fråga och dina Sheets är klara.
Nej. Du kommer mest att konfigurera credentials och mappa fält i n8n.
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 med kostnader för OpenAI API (ofta några dollar i månaden vid låg volym, mer om du sammanfattar tusentals rader).
Två alternativ: n8n Cloud (hanterad, 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 obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det bör du. De flesta team justerar PostgreSQL-steget ”Query Risk Dataset” (vilka fält du hämtar) och logiken i ”Evaluate Risk Status” (vad som räknas som hög risk). Du kan också ändra destinationerna genom att byta ut ”Post Discord Alert” mot ett annat chattverktyg, eller skicka den dagliga sammanfattningen till en gemensam inkorg i stället för en person. Om du vill ha AI-utdata i ett annat format kan du justera prompten som byggs i kodsteget ”Compose Model Prompt”.
Oftast är det ett credential- eller nätverksproblem. Bekräfta att databashosten går att nå från där n8n körs, och verifiera sedan att användarnamnet har behörighet att köra riskfrågan. Om det fungerar i din SQL-klient men fallerar i n8n, kontrollera SSL-inställningar och databasport. En till klassiker: om din fråga returnerar oväntade kolumnnamn kan mappning längre fram se ut som ett ”anslutnings”-fel när det egentligen är en datamissmatch.
På en typisk n8n Cloud-plan är hundratals kunder per dag realistiskt, och veckovisa AI-sammanfattningar kan köras i batchar. Om du hostar själv finns ingen körningsgräns (det beror på din server), och det inbyggda Wait-steget hjälper till att styra tempot så att du inte överbelastar Google Sheets eller din AI-endpoint.
Ofta, ja. Det här arbetsflödet har förgreningslogik, sammanslagningar, batchning och databasfrågor, vilket är där n8n brukar kännas enklare och mer flexibelt. Du får också möjligheten till egen hosting, vilket spelar roll när du vill ha många schemalagda körningar utan att hålla koll på task counts. Zapier eller Make kan fortfarande vara bra för en lättviktsvariant, som ”ny rad i Sheets → skicka mejl”, men så fort du lägger till riskregler och veckovis AI-rapportering kommer du uppskatta n8n:s kontroll. Om du vill ha hjälp att välja, prata med en automationsexpert.
När detta väl rullar slutar churn-risk vara en gissningslek. Du ser rätt konton tidigare, med en spårbar historik i Sheets och notiser som faktiskt leder till åtgärd.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.