Du lanserar en ”enkel” nyhetsbrevsbyggare och plötsligt gör du supporttriage. Vem blev blockerad. Vem kom igenom. Varför någon säger att de bara skickade fem mejl men dina loggar säger sju.
Det är här automatisering av SendGrids sändgränser betalar sig direkt. Marknadschefer som ska få ut kampanjer, produktdrivna SaaS-grundare som jonglerar en freemium-modell och byråägare som kör kundnyhetsbrev kör alla in i samma vägg: manuella kontroller skalar inte.
Det här arbetsflödet kopplar ihop Google Sheets och SendGrid för att styra Demo kontra Pro-åtkomst, spåra daglig användning och skicka mejlet (med tydliga svar om lyckat skick eller ”gräns nådd”). Du får se hur det fungerar, vad du behöver och vad du kan justera så att det passar ditt erbjudande.
Så fungerar den här automatiseringen
Här är hela arbetsflödet du ska sätta upp:
n8n Workflow Template: Google Sheets + SendGrid: nyhetsbrev med sändgränser
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 Webhook Trigger"]
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Validate Access Mode", pos: "b", h: 48 }
n2@{ icon: "mdi:database", form: "rounded", label: "Retrieve Sheet Records", pos: "b", h: 48 }
n3["<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 Existing User"]
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "User Presence Check", 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/code.svg' width='40' height='40' /></div><br/>Daily Limit Computation"]
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Send Permission Gate", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "Update Usage Metrics", pos: "b", h: 48 }
n8["<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/sendGrid.svg' width='40' height='40' /></div><br/>Dispatch Demo Email"]
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/webhook.dark.svg' width='40' height='40' /></div><br/>Demo Success Reply"]
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/webhook.dark.svg' width='40' height='40' /></div><br/>Limit Reached Reply"]
n11@{ icon: "mdi:database", form: "rounded", label: "Append New User Row", pos: "b", h: 48 }
n12["<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/telegram.svg' width='40' height='40' /></div><br/>Telegram Status Alert"]
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/sendGrid.svg' width='40' height='40' /></div><br/>Dispatch Pro Email"]
n14["<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/>Pro Success Reply"]
n0 --> n1
n6 --> n7
n6 --> n10
n1 --> n2
n1 --> n13
n11 --> n12
n11 --> n8
n13 --> n14
n5 --> n6
n4 --> n5
n4 --> n11
n3 --> n4
n2 --> n3
n8 --> n9
n7 --> n8
n7 --> n12
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 n1,n4,n6 decision
class n2,n7,n11 database
class n0,n9,n10,n14 api
class n3,n5 code
classDef customIcon fill:none,stroke:none
class n0,n3,n5,n8,n9,n10,n12,n13,n14 customIcon
Varför det här spelar roll: freemium-gränser för nyhetsbrev spricker snabbt
”Demo: 5 mejl per dag” låter enkelt tills riktiga användare dyker upp. Någon uppdaterar formuläret och försöker igen. Någon använder två flikar. En kollega testar med samma adress. Nu sitter du och räknar skick manuellt och försöker avgöra om du ska blockera, släppa igenom eller bara återbetala och gå vidare. Samtidigt fylls inkorgen av ”det skickades inte”-meddelanden, och du har inga felfria bevis åt något håll. Det värsta är den mentala belastningen. Varje kampanj blir en miniutredning, och du tappar tid du borde lägga på copy, segmentering eller produkt.
Det eskalerar snabbt. Här är var det faller isär i verkligheten.
- Gratisanvändare kan köra förbi gränsen när spårningen är inkonsekvent mellan verktyg och kalkylark.
- Supportärenden drar ut på tiden eftersom du inte kan peka på en enda ”sanningskälla”-logg.
- Manuell spärrning skapar obekväma undantag, och de undantagen blir den nya ”regeln”.
- Din leveransbarhet försämras när testskick och riktiga skick blandas utan kontroller.
Det du bygger: en Sheets-spårad SendGrid-gate för nyhetsbrev
Det här arbetsflödet gör din nyhetsbrevsbyggare till ett kontrollerat system med kvitton. En användare skickar in ett webbformulär (din mejlbyggare) och väljer Demo- eller Pro-läge. n8n fångar upp begäran via en webhook, kontrollerar vad användaren får göra i dag och fattar beslutet automatiskt. Demo-användare får ett strikt dagligt tak (fem skick) som upprätthålls mot en Google Sheets-logg, med ett automatiskt ”gräns nådd”-svar när de försöker gå över. Pro-användare hoppar över taket och skickar direkt. Oavsett vilket hanterar SendGrid själva leveransen, Sheets registrerar senaste skick och räknare, och du får en Telegram-notis så att du kan övervaka användningen utan att öppna fem dashboards.
Arbetsflödet startar med en webhook-inlämning och en kontroll av läge. Därefter läser och uppdaterar det Google Sheets för användningsspårning (eller hoppar över det för Pro). Till sist skickar SendGrid mejlet och n8n returnerar ett lyckat- eller felmeddelande till användaren.
Det du bygger
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du har 30 demoanvändare. En normal dag kanske 10 av dem når gränsen och försöker igen, vilket blir 10 manuella kontroller på cirka 10 minuter styck (Sheets-uppslag, räkning, svar). Det är ungefär 90 minuter som försvinner, och det är på en ”bra” dag. Med det här arbetsflödet sker kontroll och svar automatiskt efter formulärinlämningen, och den enda tid du lägger är att skumma Telegram-varningar för sådant som avviker. De flesta team får tillbaka runt en timme per dag när användningen växer.
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 användarposter, räknare och tidsstämplar.
- SendGrid för att leverera mejl pålitligt (Demo och Pro).
- Telegram-bottoken (hämta den från BotFather i Telegram).
Kunskapsnivå: Medel. Du kopplar konton, mappar några fält och säkerställer att dina kolumner i arket matchar arbetsflödets förväntningar.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
En användare skickar in ditt formulär i nyhetsbrevsbyggaren. Arbetsflödet börjar när Incoming Webhook Trigger tar emot mejlinnehållet, mottagarlistan eller mål-adressen och valt åtkomstläge (Demo eller Pro).
Arbetsflödet validerar åtkomstläget. En ”if”-kontroll skickar Pro-begäran direkt till utskick, medan Demo-begäran går via användningsspårning så att dina gränser upprätthålls konsekvent.
Google Sheets blir användningsreskontran. n8n hämtar befintliga poster, upptäcker om användaren redan finns och beräknar dagens antal skick. Nya demoanvändare kan registreras automatiskt, och befintliga användare får sin räknare uppdaterad endast när ett skick är tillåtet.
SendGrid skickar (eller så stoppar arbetsflödet). Om demoanvändaren ligger under fem skick i dag uppdaterar n8n mätvärdena och skickar mejlet via SendGrid, och svarar sedan med lyckat. Om de redan ligger på gränsen returnerar det ett ”gräns nådd”-svar direkt. Pro-användare skickar utan tak, och du får fortfarande ett tydligt lyckat-svar tillbaka.
Du kan enkelt ändra daglig gräns och vad som ska ”räknas” som ett skick utifrån dina behov. Se hela implementeringsguiden nedan för alternativ för anpassning.
Steg-för-steg-guide för implementation
Steg 1: konfigurera webhook-triggern
Sätt upp ingångspunkten som tar emot e-postpayloads för demo- och pro-läge.
- Lägg till och öppna Incoming Webhook Trigger.
- Ställ in HTTP Method på
POST. - Ställ in Path på
236f9261-dd76-47e7-b09a-2667a0f315bf. - Ställ in Response Mode på
responseNodeså att Demo Success Reply, Pro Success Reply eller Limit Reached Reply returnerar HTTP-svaret. - Bekräfta att workflowet kopplar Incoming Webhook Trigger → Validate Access Mode.
body.mode, body.subject, body.to, body.from och body.html för att matcha uttrycken som används senare.Steg 2: anslut Google Sheets
Konfigurera kalkylbladet som lagrar användningsmätvärden och befintliga användare.
- Öppna Retrieve Sheet Records och välj kalkylbladets Document-värde
[YOUR_ID]och Sheet-värdegid=0. - Ställ in filtret till lookupColumn
=Emailoch lookupValue{{ $json.body.from }}. - Behörighet krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Retrieve Sheet Records.
- Öppna Update Usage Metrics och bekräfta att Operation är
updatemed kolumner mappade till{{ $json.Email }},{{ $json.Send_Count }},{{ $json.Total_Sent + 1 }}och{{ $json.Last_Send_Date }}. - Behörighet krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Update Usage Metrics.
- Öppna Append New User Row och bekräfta att Operation är
appendmed värdena{{ $('Incoming Webhook Trigger').item.json.body.from }}och{{ $now.format('yyyy-MM-dd') }}. - Behörighet krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Append New User Row.
Email, Send_Count, Total_Sent och Last_Send_Date för att matcha mappningarna i Update Usage Metrics och Append New User Row.Steg 3: sätt upp process- och åtkomstlogik
Definiera routning och logik för daglig sändgräns för demoanvändare.
- I Validate Access Mode, verifiera att villkoret jämför
{{$json.body.mode}}meddemomed contains. - I Detect Existing User, behåll JavaScript-koden som upptäcker matchande rader och sätter
existsochemail. - I User Presence Check, bekräfta att det booleska villkoret kontrollerar att
{{ $json.exists }}ärtrue. - I Daily Limit Computation, behåll JavaScript-logiken som sätter
canSendoch ökarSend_Countmed en daglig gräns på 5. - I Send Permission Gate, bekräfta att det booleska villkoret kontrollerar att
{{ $json.canSend }}ärtrue, annars routa till Limit Reached Reply.
Steg 4: konfigurera noder för utdata och notifieringar
Skicka e-post, uppdatera mätvärden och notifiera via Telegram baserat på åtkomstläget.
- Öppna Dispatch Demo Email och bekräfta att fälten använder uttryck: Subject
{{ $('Incoming Webhook Trigger').item.json.body.subject }}, To Email{{ $('Incoming Webhook Trigger').item.json.body.to }}, From Name{{ $('Incoming Webhook Trigger').item.json.body.from }}och HTML{{ $('Incoming Webhook Trigger').item.json.body.html }}. - Behörighet krävs: Anslut era sendGridApi-uppgifter i Dispatch Demo Email.
- Öppna Dispatch Pro Email och bekräfta att fälten använder uttryck: Subject
{{ $json.body.subject }}, To Email{{ $json.body.to }}och HTML{{ $json.body.html }}, med From Name satt tillPro User. - Behörighet krävs: Anslut era sendGridApi-uppgifter i Dispatch Pro Email.
- Öppna Telegram Status Alert och sätt Chat ID till
[YOUR_ID], och behåll meddelandemallen med uttryck för avsändare, mottagare och återstående antal. - Behörighet krävs: Anslut era telegramApi-uppgifter i Telegram Status Alert.
- Bekräfta svarsnoderna: Demo Success Reply returnerar
{{ { "success": true, "message": "Email sent successfully!", "mode": "demo", "remaining": 5 - $json.newCount } }}, Pro Success Reply returnerar{{ { "success": true, "message": "Email sent successfully!", "mode": "pro" } }}och Limit Reached Reply returnerar{{ { "success": false, "error": "Daily limit reached (5 emails/day)", "message": "You've reached your daily limit. Upgrade to Pro for unlimited sends!", "current_count": $json.currentCount } }}. - Notera det parallella flödet: Append New User Row skickar utdata till både Telegram Status Alert och Dispatch Demo Email parallellt, och Update Usage Metrics skickar utdata till både Dispatch Demo Email och Telegram Status Alert parallellt.
[YOUR_EMAIL] och [YOUR_ID] i Dispatch Demo Email, Dispatch Pro Email, Retrieve Sheet Records, Update Usage Metrics, Append New User Row och Telegram Status Alert.Steg 5: testa och aktivera ert workflow
Validera demo- och proflödena och aktivera sedan workflowet för produktionsanvändning.
- Klicka på Execute Workflow och skicka en POST-begäran till Incoming Webhook Trigger-URL:en med
body.modesatt tilldemo. - Verifiera att en rad hittas eller läggs till i Google Sheets och bekräfta sedan att Dispatch Demo Email skickar och att Demo Success Reply returnerar ett JSON-svar.
- Trigga ytterligare demosändningar tills den dagliga gränsen överskrids och bekräfta att Limit Reached Reply returnerar HTTP 429.
- Skicka en POST-begäran med
body.modesatt till ett icke-demo-värde (t.ex.pro) och bekräfta att Dispatch Pro Email skickar och att Pro Success Reply returnerar success-JSON. - När allt är validerat, slå på workflowet till Active så att webhooken accepterar produktions-trafik.
Felsökningstips
- Behörigheter i Google Sheets kan misslyckas tyst om det anslutna Google-kontot tappar åtkomst till kalkylarket. Kontrollera n8n-autentiseringsuppgiften och delningsinställningarna för arket först.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om noder längre ned fallerar på tomma svar.
- SendGrid avvisar skick om din avsändaridentitet inte är verifierad eller om du når dagstaket för gratisnivån. Kontrollera SendGrid Activity och avsändarautentisering innan du skyller på arbetsflödet.
Snabba svar
Cirka 45 minuter om ditt Sheet och ditt SendGrid-konto är redo.
Nej. Du kopplar främst konton och mappar fält i n8n.
Ja. n8n har ett gratisalternativ 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 in SendGrid-användning (gratisnivån inkluderar cirka 100 mejl/dag).
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änsat antal körningar men kräver grundläggande serverhantering.
Ja, och det bör du förmodligen. Du kan ändra dagstaket genom att justera logiken i kodnoden ”Daily Limit Computation”, och du kan ändra vad som händer i spärren i ”Send Permission Gate” (till exempel tillåta 1 skick/dag för provperioder eller blockera per domän). Vanliga justeringar är att lägga separata gränser per workspace, logga kampanj-ID:n till Sheets och skicka admin-notiser endast vid fel i stället för vid varje skick.
Oftast är det fel Google-konto eller en återkallad behörighet. Återanslut Google Sheets-autentiseringsuppgiften i n8n och bekräfta sedan att kalkylarket är delat med det kontot och att fliknamnet matchar det noden förväntar sig. Kontrollera också om dina kolumner har ändrats, eftersom saknade rubriker kan göra att uppslag beter sig som ”användare hittas inte”.
På n8n Cloud Starter kan du hantera några tusen arbetsflödeskörningar per månad, vilket räcker gott för demostadiet. Om du hostar själv finns ingen körningsgräns, så volymen beror på din server och hur stora dina utskick är. I praktiken är det ofta SendGrids gränser som blir flaskhalsen först (gratisnivån är cirka 100 mejl/dag), inte n8n. Om du skickar till stora listor, överväg att batcha och skicka färre Telegram-notiser.
Ofta, ja, eftersom logiken för ”freemium-spärren” är hela poängen här. n8n hanterar förgrening, kodbaserade kontroller och uppdateringar i flera steg utan att varje väg blir en separat betald task. Zapier eller Make kan fortfarande fungera om dina regler är väldigt enkla, men när du börjar göra ”hitta användare, skapa om den saknas, beräkna daglig gräns och sedan svara” blir det snabbt rörigt. En annan faktor är hosting. Egen hosting av n8n ger förutsägbara kostnader, vilket spelar roll när gratisanvändare belastar din demo. Prata med en automationsexpert om du vill ha en snabb rekommendation utifrån dina volymer.
När det här väl rullar slutar demogränsen vara en diskussion och blir en regel som systemet upprätthåller varje gång. Den tydligheten är ärligt talat det som gör att freemium inte spårar ur i kaos.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.