Din kalla outreach börjar starkt. Sedan halkar uppföljningen efter, en lead svarar men blir ändå påmind igen, eller så lever din ”skickad”-status på tre ställen som ingen litar på. Det är inte lathet. Det är verkligheten när man försöker jonglera listor, timing och personalisering för hand.
Den här Supabase Mailgun-automationen träffar SDR:er först, men byråägare och tillväxtfokuserade grundare känner av den också. Du får konsekventa 3-stegssekvenser, uppföljningar som inte glöms bort och spårning som faktiskt är kopplad till din källa till sanning (din databas) – inte någons flik i ett kalkylark.
Nedan ser du exakt hur arbetsflödet körs i n8n, vad det automatiserar, vilka resultat du kan förvänta dig och de få ställen där team brukar snubbla när de lanserar det.
Så fungerar den här automatiseringen
Hela n8n-arbetsflödet, från trigger till slutligt resultat:
n8n Workflow Template: Supabase + Mailgun: kalla mejl med uppföljning
flowchart LR
subgraph sg0["User message Flow"]
direction LR
n63["<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/>Create URL"]
n64@{ icon: "mdi:swap-vertical", form: "rounded", label: "Extract Info", pos: "b", h: 48 }
n65@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Only Keep Verified Emails ", pos: "b", h: 48 }
n66["<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/>Download File1"]
n67@{ icon: "mdi:robot", form: "rounded", label: "Transcribe1", pos: "b", h: 48 }
n68@{ icon: "mdi:swap-vertical", form: "rounded", label: "Text1", pos: "b", h: 48 }
n69@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Voice or Text1", pos: "b", h: 48 }
n70@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n71@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n72["<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/>Select already scraped mails"]
n73["<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/compare.svg' width='40' height='40' /></div><br/>Keep only the new leads"]
n74@{ icon: "mdi:cog", form: "rounded", label: "Already scraped", pos: "b", h: 48 }
n75["<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/supabase.svg' width='40' height='40' /></div><br/>Create rows with new leads"]
n76@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Telegram message", pos: "b", h: 48 }
n77["<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/>Confirmation message"]
n78["<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/>User message"]
n79@{ icon: "mdi:swap-vertical", form: "rounded", label: "Generate query payload", pos: "b", h: 48 }
n80@{ icon: "mdi:robot", form: "rounded", label: "Scraper agent", pos: "b", h: 48 }
n81@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Run an Actor", pos: "b", h: 48 }
n82@{ icon: "mdi:cog", form: "rounded", label: "Limit3", pos: "b", h: 48 }
n83@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", pos: "b", h: 48 }
n68 --> n80
n82 --> n77
n63 --> n81
n67 --> n80
n64 --> n65
n81 --> n64
n78 --> n69
n80 --> n79
n80 --> n72
n71 -.-> n80
n66 --> n67
n69 --> n66
n69 --> n68
n70 -.-> n80
n76 --> n82
n79 --> n63
n73 --> n74
n73 --> n75
n83 -.-> n80
n75 --> n76
n65 --> n73
n72 --> n73
end
subgraph sg1["Schedule Flow"]
direction LR
n25["<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/supabase.svg' width='40' height='40' /></div><br/>Supabase11"]
n26@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If1", pos: "b", h: 48 }
n27["<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/>Evualute when the mail was s.."]
n28@{ icon: "mdi:cog", form: "rounded", label: "Sort", pos: "b", h: 48 }
n31@{ icon: "mdi:cog", form: "rounded", label: "Limit2", pos: "b", h: 48 }
n32@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch5", pos: "b", h: 48 }
n33@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items7", pos: "b", h: 48 }
n34@{ icon: "mdi:cog", form: "rounded", label: "Wait7", pos: "b", h: 48 }
n35@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items10", pos: "b", h: 48 }
n36@{ icon: "mdi:cog", form: "rounded", label: "Wait10", pos: "b", h: 48 }
n37["<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/mailgun.svg' width='40' height='40' /></div><br/>Mailgun6"]
n38["<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/mailgun.svg' width='40' height='40' /></div><br/>Mailgun7"]
n39["<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/supabase.svg' width='40' height='40' /></div><br/>Supabase12"]
n40["<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/supabase.svg' width='40' height='40' /></div><br/>Supabase14"]
n41@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger4", pos: "b", h: 48 }
n42@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing1", pos: "b", h: 48 }
n26 --> n28
n26 --> n42
n28 --> n31
n34 --> n33
n31 --> n32
n36 --> n35
n32 --> n33
n32 --> n35
n37 --> n36
n38 --> n34
n25 --> n27
n33 --> n39
n33 --> n38
n35 --> n40
n35 --> n37
n41 --> n25
n27 --> n26
end
subgraph sg2["Schedule Flow"]
direction LR
n43["<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/supabase.svg' width='40' height='40' /></div><br/>Supabase13"]
n44@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n45["<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/>Evualute when the mail was s.."]
n46@{ icon: "mdi:cog", form: "rounded", label: "Sort3", pos: "b", h: 48 }
n47@{ icon: "mdi:cog", form: "rounded", label: "Limit4", pos: "b", h: 48 }
n48@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch6", pos: "b", h: 48 }
n49@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items8", pos: "b", h: 48 }
n50@{ icon: "mdi:cog", form: "rounded", label: "Wait8", pos: "b", h: 48 }
n51@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items11", pos: "b", h: 48 }
n52@{ icon: "mdi:cog", form: "rounded", label: "Wait11", pos: "b", h: 48 }
n53["<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/mailgun.svg' width='40' height='40' /></div><br/>Mailgun8"]
n54["<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/mailgun.svg' width='40' height='40' /></div><br/>Mailgun9"]
n55["<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/supabase.svg' width='40' height='40' /></div><br/>Supabase15"]
n56["<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/supabase.svg' width='40' height='40' /></div><br/>Supabase16"]
n57@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger6", pos: "b", h: 48 }
n58@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing4", pos: "b", h: 48 }
n44 --> n46
n44 --> n58
n46 --> n47
n50 --> n49
n47 --> n48
n52 --> n51
n48 --> n49
n48 --> n51
n53 --> n52
n54 --> n50
n43 --> n45
n49 --> n55
n49 --> n54
n51 --> n56
n51 --> n53
n57 --> n43
n45 --> n44
end
subgraph sg3["Schedule Flow"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "Limit", 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/merge.svg' width='40' height='40' /></div><br/>Merge"]
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/>Time Zone"]
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/>Sender Email"]
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If3", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "General anlysis", pos: "b", h: 48 }
n15@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n16@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing", pos: "b", h: 48 }
n23["<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"]
n24@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger3", pos: "b", h: 48 }
n29@{ icon: "mdi:cog", form: "rounded", label: "Sort1", pos: "b", h: 48 }
n59@{ icon: "mdi:robot", form: "rounded", label: "research about company", pos: "b", h: 48 }
n60@{ icon: "mdi:robot", form: "rounded", label: "create email sequence", pos: "b", h: 48 }
n61["<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/supabase.svg' width='40' height='40' /></div><br/>Get many rows"]
n62["<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/supabase.svg' width='40' height='40' /></div><br/>Your leads table"]
n10 --> n29
n10 --> n16
n23 --> n1
n0 --> n1
n0 --> n59
n1 --> n2
n29 --> n0
n2 --> n3
n3 --> n62
n61 --> n10
n13 --> n60
n15 -.-> n60
n24 --> n61
n60 --> n23
n59 --> n13
end
subgraph sg4["Schedule Flow"]
direction LR
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items1", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Wait1", pos: "b", h: 48 }
n9@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger1", pos: "b", h: 48 }
n11["<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/mailgun.svg' width='40' height='40' /></div><br/>Mailgun"]
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/mailgun.svg' width='40' height='40' /></div><br/>Mailgun1"]
n14@{ icon: "mdi:cog", form: "rounded", label: "Limit1", pos: "b", h: 48 }
n17["<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/supabase.svg' width='40' height='40' /></div><br/>Supabase2"]
n18@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If2", pos: "b", h: 48 }
n19@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing2", pos: "b", h: 48 }
n20["<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/supabase.svg' width='40' height='40' /></div><br/>Supabase3"]
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/supabase.svg' width='40' height='40' /></div><br/>Supabase4"]
n30@{ icon: "mdi:cog", form: "rounded", label: "Sort2", pos: "b", h: 48 }
n18 --> n14
n18 --> n19
n6 --> n5
n30 --> n18
n8 --> n7
n14 --> n4
n4 --> n5
n4 --> n7
n11 --> n8
n12 --> n6
n17 --> n30
n5 --> n20
n5 --> n12
n7 --> n21
n7 --> n11
n9 --> n17
end
subgraph sg5["Structured Output Pa Flow"]
direction LR
n22@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
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 n78,n41,n57,n24,n9 trigger
class n67,n80,n83,n13,n59,n60,n22 ai
class n70,n15 aiModel
class n71 ai
class n65,n69,n81,n26,n32,n44,n48,n10,n4,n18 decision
class n72 database
class n63,n27,n45,n2,n3,n23 code
class n22 disabled
classDef customIcon fill:none,stroke:none
class n63,n66,n72,n73,n75,n77,n78,n25,n27,n37,n38,n39,n40,n43,n45,n53,n54,n55,n56,n1,n2,n3,n23,n61,n62,n11,n12,n17,n20,n21 customIcon
Problemet: kall outreach fallerar vid uppföljningen
Att skicka ett kallt mejl är enkelt. Att driva en pålitlig sekvens är där det blir rörigt. Du måste hålla koll på vem som fick mejl 1, vem som ska få mejl 2 i dag (i rätt tidszon), vem som svarade och vem som ska pausas så att du inte ser slarvig ut. Och om du dessutom försöker personalisera i skala slutar det med att du kopierar företagsnoteringar in i prompts, justerar HTML och hoppas att fältet ”senast kontaktad” stämmer. Det är många små steg. De blir snabbt till timmar varje vecka – och massor av helt onödiga misstag.
Friktionen byggs på. Här är var det oftast faller isär.
- Uppföljningar sker sent (eller inte alls) eftersom de hänger på att någon kommer ihåg att kolla en lista.
- Team råkar dubbel-skicka eller följa upp efter ett svar eftersom ”statusen” inte är kopplad till verktyget som skickar.
- Personaliseringen blir ytlig eftersom research av varje företag tar cirka 10 minuter per lead.
- Leveransbarheten blir sämre när du skickar för snabbt eller alltid från samma adress.
Lösningen: AI-personaliserade sekvenser som skickas och spåras från Supabase
Det här n8n-arbetsflödet gör Supabase till kontrollcentret för kall outreach, med Mailgun som sköter leveransen och AI som tar den svåra delen: att skriva mejl som låter som att du faktiskt gjort hemläxan. Det startar enligt ett schema, hämtar leads från Supabase och kontrollerar vilket steg varje lead är i (första kontakt, uppföljning 1, uppföljning 2 och så vidare). För varje kvalificerad lead researchar det företagskontext, genererar ett skräddarsytt meddelande (inklusive korrekt formaterad HTML och flerspråksalternativ) och skickar via Mailgun med strypta batchar och tidsstyrda väntetider. Efter varje utskick uppdaterar det Supabase med sändhistorik och nästa steg så att din spårning förblir strukturerad. Det stöder även avsändarrotation, grundläggande tillförlitlighetsskydd och till och med Telegram-input via röst eller text när du snabbt vill mata in ny leadinformation.
Arbetsflödet väcks via schemalagda triggers och hämtar och sorterar sedan leads. Därefter utvärderar det timing (inklusive tidszonslogik), routar varje post efter sekvenssteg och skickar rätt mejl via Mailgun. Till sist skriver det tillbaka utfallet till Supabase så att nästa körning vet exakt vad som ska göras.
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 lägger in 50 nya prospekt per vecka i Supabase. Att manuellt köra en 3-stegssekvens innebär ofta cirka 5 minuter per lead och steg (skriva utkast, kontrollera historik, schemalägga), vilket blir ungefär 12 timmar i veckan när du räknar in uppföljningar och statusuppdateringar. Med det här arbetsflödet lägger du kanske 30 minuter i början på att granska prompt och mall, och sedan skickar och loggar varje schemalagd körning automatiskt medan du gör annat. De flesta team landar i outreach som rullar dagligen – utan daglig barnpassning.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Supabase för att lagra leads, steg och historik.
- Mailgun för att skicka mejl med bra leveransbarhet.
- OpenAI- eller Anthropic-API-nyckel (hämta den i din leverantörs dashboard).
Kunskapsnivå: Medel. Du kopplar credentials, verifierar tabellfält i Supabase och justerar prompts och schemainställningar.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Schemalagda körningar hämtar nästa uppsättning leads. Flera schematriggers startar arbetsflödet, och Supabase-frågor hämtar poster som matchar dina regler (nya prospekt, redo för uppföljning, inte pausade).
Tidpunkt och behörighet utvärderas. Arbetsflödet räknar ut tidszon, kontrollerar villkor (som steg och senaste sändtid), sorterar poster och begränsar volym så att du inte råkar skicka för många i ett och samma tidsfönster.
AI genererar meddelanden som passar leaden. Ett research-steg samlar in företags- och rollkontext, och sedan skriver en agent en sekvens med flera mejl. Resultatet parsas till strukturerade fält så att det kan slås ihop i konsekventa HTML-mallar utan att formateringen går sönder.
Mailgun skickar, Supabase loggar sanningen. Mejlen går ut i batchar med väntetider mellan cykler, och arbetsflödet uppdaterar direkt Supabase med sändtidsstämplar, stegändringar och historik så att nästa körning tar vid utan strul. Om du matar in leads via Telegram (röst eller text) routas och bearbetas den inputen innan leaden går in i samma pipeline.
Du kan enkelt justera schemaläggningsfönster för att matcha din marknad efter dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den schemalagda triggern
Det här arbetsflödet använder flera schemalagda triggers för att hämta outreach-kandidater och tidsfönster.
- Öppna Scheduled Trigger A och ställ in schemat som ska starta huvudcykeln för lead-hämtning.
- Öppna Scheduled Trigger B och ställ in schemat för den sekundära pipelinen för lead-utvärdering.
- Öppna Scheduled Trigger C och Scheduled Trigger D för att definiera tidsfönstren för utvärdering av sändtid (dessa leder in i Supabase Fetch B och Supabase Fetch C).
Steg 2: anslut Supabase-datakällor
Supabase driver leaddatabasen och statusuppdateringar genom hela arbetsflödet.
- Öppna Supabase Fetch A, Supabase Fetch B, Supabase Fetch C och Retrieve Multiple Rows för att konfigurera tabell- och frågedetaljer för varje dataset.
- Konfigurera Leads Table Fetch för att hämta leadposter som används för tidszon och avsändarroutning.
- Anslut uppdateringar i Supabase Update A, Supabase Update B, Supabase Update C, Supabase Update D, Supabase Update E och Supabase Update F så att varje batch skriver statusändringar tillbaka till Supabase.
- Ställ in Insert New Leads för att lägga in poster som identifieras av scraping-pipelinen.
- Credential Required: Anslut era Supabase-inloggningsuppgifter på alla Supabase-noder (12+ noder hanterar fetch-, update- och insert-åtgärder).
Steg 3: ställ in logik för lead-filtrering och routning
Leads filtreras, sorteras och förbereds innan e-post skickas.
- Granska Check Condition A, Check Condition B, Check Condition C och Check Condition D för att bekräfta förgreningsregler och pass/stopp-logik.
- Bekräfta ordningen i Sort Records A, Sort Records B, Sort Records C och Sort Records D så att prioriterade leads behandlas först.
- Tillämpa begränsningar i Apply Record Cap, Apply Record Cap B, Apply Record Cap C, Apply Record Cap D och Apply Record Cap E för att undvika att skicka för många e-postmeddelanden per cykel.
- Ställ in stegroutning i Route by Stage, Route by Stage B och Route by Stage C för att skicka varje lead till rätt batch-spår.
- Observera att Placeholder Step, Placeholder Step B, Placeholder Step C och Placeholder Step D är no-op-noder som behålls för felsökning och framtida utbyggnad.
Steg 4: konfigurera AI-research och e-postkomposition
AI-noder genererar research-insikter och skapar outreach-sekvensen.
- Öppna Research Company Info och General Analysis för att definiera prompts och indata som analyserar lead-företag.
- Öppna Compose Email Sequence för att definiera agentprompten för fler-stegs outreach-meddelanden.
- Säkerställ att OpenAI Chat Engine är ansluten som språkmodell för Compose Email Sequence och lägg till inloggningsuppgifter där.
- Använd Transform Script A och Combine Streams för att linjera AI-utdata med leaddata innan tidszonslogiken.
- Credential Required: Anslut era OpenAI-inloggningsuppgifter på Research Company Info, General Analysis, Compose Email Sequence, OpenAI Chat Engine och Transcribe Audio.
Steg 5: konfigurera web scraping och lead-berikning
Den här delen scrapar och validerar nya lead-e-postadresser med agenter, Apify och Postgres.
- Konfigurera Web Scraper Agent med dess prompt och indatafält så att den kan tolka textpayloads från Set Text Payload och Transcribe Audio.
- Web Scraper Agent skickar utdata parallellt till både Build Query Payload och Fetch Scraped Emails, vilket möjliggör samtidig byggning av frågor och hämtning av befintliga e-postadresser.
- Konfigurera Build Query Payload → Build Request URL → Run Apify Actor för att skapa scraping-förfrågningar.
- Bekräfta att Extract Details, Filter Verified Emails och Filter New Leads korrekt extraherar och validerar data innan insättning.
- Credential Required: Anslut era Apify-inloggningsuppgifter i Run Apify Actor.
- Credential Required: Anslut era Postgres-inloggningsuppgifter i Fetch Scraped Emails.
Steg 6: konfigurera Telegram-intag och notiser
Telegram hanterar inkommande röst-/textprompts och utgående bekräftelsenotiser.
- Konfigurera Telegram Incoming för att lyssna på inkommande meddelanden och anslut den till Route Voice or Text.
- Ställ in Route Voice or Text för att skicka ljud till Download Attachment och text till Set Text Payload.
- Anslut Download Attachment till Transcribe Audio så att röstprompts blir textindata för Web Scraper Agent.
- Konfigurera Compose Telegram Notice → Apply Record Cap E → Send Telegram Confirm för färdig-notiser.
- Credential Required: Anslut era Telegram-inloggningsuppgifter på Telegram Incoming, Download Attachment och Send Telegram Confirm.
Steg 7: konfigurera tidszon och val av avsändare
Tidszonslogik och val av avsändare synkar outreach-timing med mottagarregioner.
- Granska Compute Timezone och Determine Sender Address för att säkerställa att koden matchar era datafält.
- Bekräfta att Determine Sender Address skickar utdata korrekt till Leads Table Fetch så att avsändardetaljer tillämpas per lead.
- Använd Evaluate Send Time A och Evaluate Send Time B för att beräkna sändningsfönster per lead innan Check Condition C och Check Condition D.
Steg 8: konfigurera e-postutskick och sekvensering
E-post skickas genom flera steg med fördröjningar och batch-iteration.
- Anslut ert Mailgun-konto i Dispatch Email A, Dispatch Email B, Dispatch Email C, Dispatch Email D, Dispatch Email E och Dispatch Email F.
- Säkerställ att varje e-postutskicksnod skickar till sin parade fördröjning: till exempel Dispatch Email B → Delay Cycle A och Dispatch Email A → Delay Cycle B.
- Konfigurera Delay Cycle A till Delay Cycle F så att de matchar er önskade uppföljningskadens.
- Verifiera batch-routning från Batch Iterate A till Batch Iterate F till respektive Supabase-uppdateringar och e-postutskick.
- Credential Required: Anslut era Mailgun-inloggningsuppgifter på alla Mailgun-noder (6 noder hanterar hela sekvensen).
Steg 9: konfigurera AI-minne och verktyg för parsing
AI-verktyg förbättrar scraping- och genereringspipelines med minne och strukturerade utdata.
- Granska Memory Buffer för att säkerställa att den är kopplad till Web Scraper Agent via AI-minneskopplingen.
- Aktivera Structured Parser B för scraping-pipelinen om ni vill ha strukturerad utdata; den ansluter till Web Scraper Agent.
- Observera att Structured Parser A är inaktiverad; aktivera den endast om er pipeline för e-postkomposition kräver strukturerad parsing.
- Säkerställ att OpenAI Chat Engine B är ansluten till Web Scraper Agent som dess språkmodell.
- Credential Required: Lägg till OpenAI-inloggningsuppgifter i OpenAI Chat Engine B (AI-undernoder som Memory Buffer och parsers använder föräldranodens inloggningsuppgifter).
Steg 10: testa och aktivera ert arbetsflöde
Validera varje pipeline-spår innan ni slår på systemet.
- Kör Scheduled Trigger A manuellt och bekräfta att data flödar från Supabase Fetch A till Dispatch Email-noder med lämpliga fördröjningar.
- Trigga Telegram Incoming med en testad röstnotis och bekräfta att den går igenom Download Attachment → Transcribe Audio → Web Scraper Agent.
- Verifiera att nya leads passerar Filter Verified Emails och Filter New Leads och sedan hamnar i Insert New Leads med en bekräftelse skickad av Send Telegram Confirm.
- En lyckad körning ska visa uppdateringar i Supabase Update A till Supabase Update F, och varje e-postnod ska returnera ett lyckat svar.
- När ni är nöjda, växla arbetsflödet till Active för att aktivera schemalagda produktionskörningar.
Vanliga fallgropar
- Mailgun-credentials kan gå ut eller kräva specifika behörigheter. Om det strular, kontrollera först status för din Mailgun API-nyckel och verifiering av din sänddomän.
- Om du använder Wait-noder eller extern bearbetning varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din varumärkesröst tidigt, annars kommer du redigera output för alltid.
Vanliga frågor
Räkna med cirka 60 minuter om dina Supabase-tabeller och din Mailgun-domän är klara.
Nej. Du kommer främst koppla konton och redigera några prompts och schemainställningar.
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 in kostnader för OpenAI- eller Anthropic-API samt Mailguns sändkostnader.
Två alternativ: n8n Cloud (managed, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärt och hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är en av de bästa anledningarna att använda den här mallen. Du justerar de schemalagda triggers och logiken för ”utvärdera sändtid” så att den matchar dina föredragna dagar och tider, och uppdaterar sedan AI-prompten som används för att skriva sekvensen för ditt språk och din ton. Om du föredrar en annan researchkälla kan du byta ut skrapning/research-delen (HTTP request/agent-steget) samtidigt som du behåller Supabase-routning per steg och Mailgun-utskick intakt. Vanliga justeringar är att ändra antal uppföljningar, sätta andra fördröjningar och lägga till en ”mejla inte”-regel för vissa segment.
Oftast är det en API-nyckel- eller domänfråga. Skapa om din Mailgun API-nyckel, bekräfta att din sänddomän är verifierad och säkerställ att den ”from”-adress arbetsflödet väljer är tillåten på ditt konto. Om du har aktiverat avsändarrotation, bekräfta även att varje avsändaridentitet finns i Mailgun. Rate limits kan också dyka upp när du försöker trycka igenom en stor batch på en gång.
Väldigt många, så länge du kör i batchar. På n8n Cloud Starter begränsas du av antal körningar per månad, medan egen hosting mest beror på din server och hur aggressivt du skickar via Mailgun.
Ofta, ja – eftersom sekvenser kräver förgreningar, timing och tillståndsspårning. n8n gör det praktiskt att använda posttak, batchar, väntetider och logik för ”routa efter steg” utan att betala extra varje gång flödet blir mer komplext. Det låter dig också hålla datauppdateringar tätt kopplade till sändaktionen, vilket minskar glapp där något är ”skickat men inte loggat”. Zapier eller Make kan fortfarande fungera för enklare outreach, som ett mejl per trigger med en enda uppföljning. Om din sekvenslogik redan är lite av ett monster kommer det här arbetsflödet kännas mer stabilt. Prata med en automationsexpert om du är osäker på vad som passar.
När det här väl rullar slutar uppföljningar vara ett dagligt måste och blir ett system. Du kommer märka lugnet direkt, helt ärligt.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.