Dina leverantörsavtal är förmodligen “spårade” någonstans. Ett kalkylark, en mapp, en inkorgstråd. Sedan smyger ett förnyelsedatum upp, en uppsägningstid missas och plötsligt förhandlar du under press (eller betalar för ännu ett år du inte ville ha).
Det här drabbar ekonomichefer hårdast, men inköpsansvariga känner också av det, och driftteam dras in när tjänster löper ut. Den här automatiseringen för förnyelsepåminnelser för avtal gör ditt kalkylark till ett dagligt skyddsnät, med Slack-påminnelser och godkännanden som inte försvinner.
Du sätter upp ett arbetsflöde som kontrollerar Google Sheets varje morgon, flaggar det som är på väg att löpa ut, skickar manuella förnyelser för godkännande i Slack och mejlar sedan leverantörer med ett korrekt formaterat förnyelsemejl när det har godkänts.
Så fungerar den här automatiseringen
Här är hela arbetsflödet som du kommer att sätta upp:
n8n Workflow Template: Google Sheets + Slack: missa aldrig en förnyelse
flowchart LR
subgraph sg0["Scheduled Daily Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Daily Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Retrieve Vendor Contracts", pos: "b", h: 48 }
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/>Detect Expiring Vendors"]
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Auto-Renewal Check", pos: "b", h: 48 }
n4["<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/>Draft Slack Alert"]
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/slack.svg' width='40' height='40' /></div><br/>Send Auto-Renew Notice"]
n6@{ icon: "mdi:robot", form: "rounded", label: "Vendor Renewal Agent", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Engine", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Structured Result Parser", pos: "b", h: 48 }
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/slack.svg' width='40' height='40' /></div><br/>Slack Approval Request"]
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/code.svg' width='40' height='40' /></div><br/>Build Vendor Email"]
n11@{ icon: "mdi:message-outline", form: "rounded", label: "Dispatch Renewal Email", pos: "b", h: 48 }
n0 --> n1
n7 -.-> n6
n4 --> n5
n6 --> n9
n10 --> n11
n2 --> n3
n3 --> n4
n3 --> n6
n1 --> n2
n8 -.-> n6
n9 --> n10
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 n6,n8 ai
class n7 aiModel
class n3 decision
class n1 database
class n2,n4,n10 code
classDef customIcon fill:none,stroke:none
class n2,n4,n5,n9,n10 customIcon
Därför spelar det roll: förnyelsedatum är lätta att missa
Avtalsförnyelser är inte svåra för att du inte vet vad en förnyelse är. De är svåra för att arbetet är utspritt. Datum ligger i ett ark. Avtals-PDF:en ligger i Drive. Någon måste komma ihåg uppsägningstiden. Sedan ska du skriva påminnelsen, jaga rätt person i Slack och till sist mejla leverantören på ett sätt som låter tryggt, inte stressat. Gör det för 20 leverantörer så lägger du en märkligt stor del av hjärnkapaciteten på något som borde vara tråkigt. När det går fel är det aldrig ett litet problem. Det är en oönskad automatisk förnyelse, en oväntad prishöjning eller en tjänst som slutar fungera mitt i kvartalet.
Det bygger snabbt på. Så här brukar det falla isär i riktiga team.
- Du ser slutdatumet först när någon frågar, vilket betyder att du redan är sen att förhandla.
- Uppsägningstider gömmer sig i finstilt text, så avtal förnyas automatiskt utan att någon äger misstaget.
- Godkännanden sker i sidokonversationer, och senare kan ingen hitta vem som sa “ja”.
- Kontakt med leverantörer blir försenad eftersom det tar längre tid än det borde att skriva ett bra mejl.
Det du bygger: dagliga förnyelsepåminnelser med Slack-godkännande + leverantörsmejl
Det här arbetsflödet körs dagligen (06:00) och skannar din leverantörsavtalslista i Google Sheets. Det räknar ut vilka avtal som närmar sig slutdatum baserat på den uppsägningstid du redan har definierat per leverantör. Därifrån delas det upp i två spår. Avtal med automatisk förnyelse får en tydlig Slack-sammanfattning skickad till rätt kontakt på ekonomi, så att du kan dubbelkolla kostnader innan det rullar över. Manuella förnyelser tar en mer noggrann väg: en OpenAI-driven agent skriver ett bättre Slack-meddelande, skickar det till ekonomiansvarig och väntar på ett godkännande i samma tråd. När godkännandet kommer bygger arbetsflödet ett välskrivet HTML-mejl och skickar det till leverantören för att starta förnyelsedialogen. Allt sker utan att du behöver sitta och vaka över det.
Arbetsflödet utgår från ditt kalkylark som sanningskälla. Sedan blir Slack beslutsbanan, inte ännu ett ställe att “också kolla”. Till sist blir mejl en kontrollerad utleverans som skickas efter godkännande, inte ett panikmejl i sista minuten.
Det du bygger
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du hanterar 25 aktiva leverantörer och gör en snabb förnyelsekoll varje vardag. Manuellt är det kanske 2 minuter per leverantör att kontrollera datum och uppsägningstider (plus kontextbyten), alltså cirka 50 minuter per dag, och sedan ytterligare 10–20 minuter när du skriver påminnelser och jagar godkännanden. Med det här arbetsflödet sker den dagliga kontrollen automatiskt kl. 06:00, Slack-meddelanden dyker upp där beslut redan tas och leverantörsmejlet skickas direkt efter godkännande. De flesta team får tillbaka nästan en timme de dagar förnyelser är aktuella, och de undviker de dyra “vi glömde”-tillfällena.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för din leverantörsavtalslista.
- Slack för att skicka aviseringar och samla in godkännanden.
- OpenAI API-nyckel (hämta den i OpenAI API-dashboarden).
- E-postkonto (SMTP eller Gmail) för att skicka förnyelsemejl till leverantörer.
Svårighetsgrad: Medel. Du kopplar ihop konton, mappar några fält i arket och testar Slack-godkännanden hela vägen.
Vill du att någon bygger det här åt dig? Prata med en automationsexpert (kostnadsfri 15-minuters konsultation).
Steg för steg
En schemalagd daglig körning kontrollerar din lista. Kl. 06:00 triggar n8n och läser dina leverantörsavtal från Google Sheets, med de kolumner du underhåller (leverantörsnamn, slutdatum, uppsägningstid, förnyelsetyp, ekonomiansvarig och så vidare).
Avtal inom uppsägningsfönstret identifieras. Ett litet logiksteg räknar ut vilka rader som “löper ut snart” genom att jämföra dagens datum med avtalslutdatum och uppsägningstid (dagar). Allt som inte är brådskande ignoreras för dagen.
Automatförnyelse och manuell förnyelse tar olika vägar. Automatförnyelser skapar en enkel Slack-avisering så att ekonomi kan bekräfta kostnad och timing. Manuella förnyelser går via en AI-agent som drivs av en OpenAI-chatmodell för att formulera ett tydligare meddelande, sedan skickar Slack en begäran om godkännande och väntar på svar.
Godkända förnyelser skickar ett leverantörsmejl. När Slack-godkännandet kommer bygger ett kodsteg ett formellt HTML-mejl (med leverantörens namn och kontext från arket) och noden Send Email skickar det till leverantörskontakten.
Du kan enkelt justera logiken för uppsägningsfönstret så att den matchar er avtalspolicy, och du kan ändra tidsgränsen för Slack-godkännande om ditt team svarar snabbare (eller långsammare). Se den fullständiga implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera den schemalagda triggern
Ställ in arbetsflödet så att det körs automatiskt varje dag med hjälp av den schemalagda triggern.
- Lägg till och öppna Scheduled Daily Trigger.
- Ställ in den dagliga schemaregeln så att den triggar vid Hour
6. - Koppla Scheduled Daily Trigger till Retrieve Vendor Contracts.
Steg 2: Anslut Google Sheets
Hämta leverantörsavtalsrader från ert kalkylark.
- Öppna Retrieve Vendor Contracts.
- Inloggning krävs: Anslut era googleSheetsOAuth2Api-uppgifter.
- Ställ in Document till kalkylarkets ID
[YOUR_ID]och Sheet tillSheet1. - Bekräfta att noden skickar utdata till Detect Expiring Vendors.
Steg 3: Sätt upp utgångslogik och routing
Filtrera avtal som behöver påminnelser och routa fall med automatisk förnyelse.
- Öppna Detect Expiring Vendors och behåll den medföljande JavaScript-logiken som beräknar reminderDate och daysUntilExpiry.
- Konfigurera Auto-Renewal Check med Left Value
{{ $json["Renewal Type"] }}och Right ValueAuto-Renew. - Säkerställ att Detect Expiring Vendors är kopplad till Auto-Renewal Check.
- Auto-Renewal Check skickar utdata parallellt till både Draft Slack Alert och Vendor Renewal Agent.
Contract End Date och Notice Period (days) för att undvika tomma resultat.Steg 4: Konfigurera Slack-notiser för automatisk förnyelse
Skicka Slack-varningar för avtal som förnyas automatiskt.
- Öppna Draft Slack Alert och behåll meddelandemallen i JavaScript-koden.
- Öppna Send Auto-Renew Notice.
- Inloggning krävs: Anslut era slackOAuth2Api-uppgifter.
- Sätt Text till
{{ $json.slack_message }}och välj mål-Channel[YOUR_ID].
Steg 5: Sätt upp AI-utkast och godkännande
Generera utkast till förnyelsemejl med en LLM och begär godkännande i Slack.
- Öppna Vendor Renewal Agent och sätt Text till
Here is the contract info: {{ $json.toJsonString()}}. - Öppna OpenAI Chat Engine och välj Model
gpt-4.1-mini. - Inloggning krävs: Anslut era openAiApi-uppgifter i OpenAI Chat Engine.
- Öppna Structured Result Parser och behåll JSON Schema Example som
{ "subject": "California", "body": "", "original_json":"" }. - Obs: Structured Result Parser är en subnod till Vendor Renewal Agent – inloggning ska läggas till i OpenAI Chat Engine, inte i parsern.
- Öppna Slack Approval Request, sätt Message till
{{ $json.output.subject }} {{ $json.output.body }}, och behåll Operation somsendAndWait. - Inloggning krävs: Anslut era slackOAuth2Api-uppgifter i Slack Approval Request.
Steg 6: Bygg och skicka leverantörsmejl
Bygg det slutliga mejlet och skicka det via SMTP efter godkännande.
- Öppna Build Vendor Email och behåll den medföljande HTML-mallen och ämneslogiken.
- Bekräfta att noden refererar till Vendor Renewal Agent via
$('Vendor Renewal Agent').item.json.output.original_json. - Öppna Dispatch Renewal Email och sätt To Email till
{{ $json.to }}, Subject till{{ $json.subject }}, och HTML till{{ $json.html }}. - Inloggning krävs: Anslut era smtp-uppgifter i Dispatch Renewal Email.
Steg 7: Testa och aktivera ert arbetsflöde
Validera arbetsflödet med exempeldata och aktivera det för daglig körning.
- Klicka på Execute Workflow för att köra från Scheduled Daily Trigger med en testrad i ert ark.
- Bekräfta att Send Auto-Renew Notice postar ett Slack-meddelande för fall med automatisk förnyelse.
- Bekräfta att Slack Approval Request skickar en förfrågan och att Dispatch Renewal Email skickar ett mejl efter godkännande.
- När allt fungerar, växla arbetsflödet till Active för dagliga produktionskörningar.
Tips för felsökning
- Google Sheets-inloggningar kan gå ut eller kräva specifika behörigheter. Om det skapar fel, börja med att kontrollera n8n-skärmen Credentials och bekräfta att det anslutna Google-kontot fortfarande har åtkomst till arket.
- Om du använder Wait-beteende i Slack-steget “skicka och vänta på godkännande” varierar svarstiden. Öka väntetiden om efterföljande noder misslyckas eftersom godkännandepayloaden inte har kommit in ännu.
- OpenAI-prompter är ofta för generiska från start. Lägg in era tonregler (vänlig, tydlig, kortfattad) och obligatoriska fält (slutdatum, förnyelsetyp, avtalsvärde) tidigt, annars kommer du att skriva om meddelanden varje vecka.
Snabba svar
Cirka 30–60 minuter om kolumnerna i arket är klara.
Nej. Du kopplar främst ihop Google Sheets, Slack och e-post och mappar sedan fält.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod i n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna med OpenAI API-kostnader (ofta några cent per dag i den här skalan).
Två alternativ: n8n Cloud (hanterat, 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 dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du troligen. Du kan justera logiken i Detect Expiring Vendors för att ändra hur tidigt du larmar, ändra godkännandefönstret i Slack Approval Request och skriva om instruktionerna till AI-agenten så att de matchar er interna policy. Vissa team lägger till ett andra Slack-meddelande till juridik för avtal med högre värde, med hjälp av kolumnen Contract Value. Andra byter senare ut Google Sheets mot en databas, men behåller samma Slack-godkännandemönster.
Oftast beror det på en utgången Slack-token eller att appen saknar behörighet att posta eller använda interaktiva godkännanden. Återanslut Slack-inloggningen i n8n och bekräfta sedan att boten är inbjuden till kanalen (eller kan skicka DM till ekonomiansvarig). Om du testar med flera workspaces, dubbelkolla att du kopplade rätt.
För de flesta små team fungerar det bra med hundratals avtal i ett ark.
Det beror på hur mycket kontroll du behöver. Zapier och Make är bra för snabba, linjära flöden, men det här arbetsflödet vinner på förgrenad logik (automatförnyelse vs manuell), att vänta på Slack-godkännande och egen kod som räknar ut uppsägningsfönster. n8n ger dig också möjligheten att hosta själv, vilket kan vara viktigt om du kör många dagliga kontroller i flera avdelningar. Om du vill ha en godkännandetråd per leverantör, förutsägbar formatering och möjlighet att senare bygga ut loggning brukar n8n passa bättre. Om du är osäker, prata med en automationsexpert så hjälper vi dig att välja det enklaste alternativet.
När det här väl rullar slutar förnyelser att vara en återkommande brandövning. Du får en daglig signal i Slack, ett tydligt godkännandespår och leverantörsmejl som går iväg i tid.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.