Outbound går sönder på de tråkiga ställena. En lead svarar, ditt CRM uppdateras inte, tråden missas och plötsligt blir den ”enkla uppföljningen” en rörig, manuell jakt.
Den här automatiseringen för Gmail-svarsutkast träffar SDR:er först, ärligt talat. Men grundare som kör sin egen outreach och byråansvariga som jonglerar flera kampanjer känner samma friktion. Du får konsekventa uppföljningar utan att ge upp mänsklig granskning.
Du får se hur det här flödet skickar personaliserade sekvenser via Mailgun, bevakar Gmail-svar från kända kontakter och sedan skapar färdiga svarsutkast, samtidigt som lead-status hålls uppdaterad.
Så fungerar automatiseringen
Här är hela arbetsflödet du kommer att sätta upp:
n8n Workflow Template: Mailgun + Gmail: skickat ut, svar som utkast
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["Gmail Flow"]
direction LR
n84@{ icon: "mdi:play-circle", form: "rounded", label: "Gmail Trigger", pos: "b", h: 48 }
n85@{ icon: "mdi:message-outline", form: "rounded", label: "Get a message", pos: "b", h: 48 }
n86["<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/>Execute a SQL query"]
n87["<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/>Set replied = Yes "]
n88@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Only from email campaigns", pos: "b", h: 48 }
n89["<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/>extract email"]
n90@{ icon: "mdi:message-outline", form: "rounded", label: "Get Email History", pos: "b", h: 48 }
n91@{ icon: "mdi:message-outline", form: "rounded", label: "Check Sent History", pos: "b", h: 48 }
n92@{ icon: "mdi:robot", form: "rounded", label: "Email Response Parser", pos: "b", h: 48 }
n93@{ icon: "mdi:robot", form: "rounded", label: "Professional Email Response ..", pos: "b", h: 48 }
n94@{ icon: "mdi:message-outline", form: "rounded", label: "Create Draft Response", pos: "b", h: 48 }
n95@{ icon: "mdi:brain", form: "rounded", label: "Anthropic Chat Model1", pos: "b", h: 48 }
n85 --> n93
n84 --> n89
n89 --> n86
n90 -.-> n93
n91 -.-> n93
n87 --> n85
n86 --> n88
n95 -.-> n93
n92 -.-> n93
n88 --> n87
n93 --> n94
end
subgraph sg6["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,n84 trigger
class n67,n80,n83,n13,n59,n60,n92,n93,n22 ai
class n70,n15,n95 aiModel
class n71 ai
class n65,n69,n81,n26,n32,n44,n48,n10,n4,n18,n88 decision
class n72,n86,n87 database
class n63,n27,n45,n2,n3,n23,n89 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,n86,n87,n89 customIcon
Varför det här spelar roll: svar faller mellan stolarna och intäkter läcker
Outbound är inte svårt för att själva utskicken är svåra. Det är svårt för att du driver ett minisystem: timing, personalisering, statusuppdateringar, routing och hantering av svar. När systemet sitter i någons minne (eller i ett halvuppdaterat kalkylblad) syns sprickorna snabbt. Svar kommer vid sämsta möjliga tillfälle, trådar begravs i Gmail och löftet ”vi svarar idag” blir till i morgon. Under tiden har du ingen strukturerad överblick över vem som svarat, vem som studsat och vem som behöver en andra touch.
Friktionen byggs på. Här är var det faller isär i riktiga team.
- Du slutar med att kopiera lead-kontext in i mejlsvar, vilket saktar ner dig och gör tonen inkonsekvent.
- Statusuppdateringar sker i efterhand, så rapporteringen ligger alltid ett steg efter verkligheten.
- Sekvenser fortsätter skicka till personer som redan har svarat eftersom ”stopp”-signalen inte är automatiserad.
- När flera personer delar en inkorg blir ägarskapet otydligt och bra svar blir liggande.
Vad du bygger: Mailgun-sekvenser + skapande av Gmail-svarsutkast
Det här flödet är en pipeline i tre delar som fungerar som en lättviktig outbound-motor. Enligt schema hämtar den leads från din databas (Supabase/Postgres) och skickar personaliserade outreach-sekvenser via Mailgun. När mejlen går iväg loggar flödet vad som hände så att du alltid vet vilket steg en lead befinner sig på. När en lead sedan svarar i Gmail kontrollerar flödet att avsändaren matchar en kontakt i din databas, hämtar trådhistoriken som kontext och använder AI (OpenAI/Anthropic) för att klassificera intent och skriva ett svar. I stället för att autoskicka skapar det ett Gmail-utkast så att du kan granska och godkänna innan något skickas.
Flödet börjar med schemalagda outreach-körningar och kontrollerad throttling (batchning plus väntetider) så att leveransbarheten inte förstörs. Parallellt hanterar en Gmail-lyssnare inkommande svar, uppdaterar lead-status och genererar ett strukturerat, varumärkesanpassat svarsutkast som redan bygger på trådhistoriken.
Det här bygger du
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du skickar 200 outbound-mejl per dag i en sekvens med 3 steg och får 10 svar. Manuellt kan du lägga cirka 2 minuter på att logga aktivitet per svar och ytterligare 6 minuter på att läsa in kontext och skriva, vilket är ungefär 80 minuter bara på svarshantering. Med det här flödet matchas svaren automatiskt mot rätt lead och ett utkast dyker upp i Gmail inom några minuter. Du granskar fortfarande och skickar, men ”tom sida”-tiden försvinner till stor del.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Mailgun för att skicka dina outbound-sekvenser.
- Gmail för att upptäcka svar och skapa utkast.
- OpenAI- eller Anthropic-API-nyckel (hämta den i din modellproviders dashboard).
Kunskapsnivå: Medel. Du kopplar in credentials, mappar några fält och förstår var din lead-data ligger.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Schemalagda outreach-körningar. Enligt schema hämtar flödet leads från dina Supabase/Postgres-tabeller, sorterar och sätter ett tak för batchstorleken och routar sedan leads till rätt sekvenssteg baserat på deras nuvarande status.
Paced utskick via Mailgun. Mejl skickas via Mailgun-noder i delade batcher, med väntetider mellan utskicken. Den pacingen finns av en anledning: den håller volymen kontrollerad och gör det enklare att försöka igen vid fel utan att bomba ut dubbletter.
Upptäckt av svar i Gmail. En Gmail-trigger lyssnar efter nya inkommande meddelanden, plockar ut avsändaradressen, kontrollerar den mot dina kampanj- och databasposter och markerar leaden som svarad i Postgres så att sekvensen kan stoppas.
AI-utkast med kontext. Flödet hämtar trådhistoriken, kör strukturerad parsing och intent-klassificering (OpenAI/Anthropic) och genererar sedan ett svarsutkast som sparas som ett Gmail-utkast. Du granskar, justerar vid behov och trycker på skicka.
Du kan enkelt ändra ton i utkasten och klassificeringsetiketter så att de matchar din säljprocess. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera de schemalagda triggrarna
Det här arbetsflödet använder flera schemabaserade startpunkter för att hämta och bearbeta outreach-data med olika intervall.
- Öppna Scheduled Trigger A och ställ in önskat schema för den initiala lead-hämtningen.
- Öppna Scheduled Trigger B och konfigurera ett schema för pull-baserad generering av outreach-sekvenser.
- Öppna Scheduled Trigger C och ställ in timing för utvärdering av sändtid.
- Öppna Scheduled Trigger D och ställ in timing för den sekundära strömmen för sändtidsutvärdering.
Steg 2: Anslut Supabase-datakällor
Supabase är den centrala datakällan för leads, kampanjstatus och uppdateringar. Flera Supabase-noder hanterar läsningar och skrivningar.
- Öppna Supabase Fetch A, Supabase Fetch B, Supabase Fetch C och Retrieve Many Rows, anslut sedan autentiseringsuppgifter och ange era tabell-/query-inställningar.
- Öppna Leads Table Lookup och mappa uppslagsfälten som används för lead-matchning.
- Öppna alla uppdaterings-/insert-noder (Supabase Update A till Supabase Update F, samt Insert New Leads) och säkerställ korrekt tabell samt fältmappningar.
- Credential Required: Anslut era Supabase-autentiseringsuppgifter till alla Supabase-noder (12+ noder över fetch-, lookup-, insert- och update-steg).
Steg 3: Konfigurera AI/LLM-bearbetning
AI-noder genererar research, analyserar leads, skriver utkast till sekvenser och hjälper till med scraping och svar. Säkerställ att språkmodeller och parsers är korrekt anslutna.
- Öppna Company Research och General Analysis, och anslut sedan OpenAI-autentiseringsuppgifter för varje OpenAI-nod.
- Öppna Compose Email Sequence och bekräfta att OpenAI Chat Core är ansluten som språkmodell; lägg till OpenAI-autentiseringsuppgifter i OpenAI Chat Core.
- Öppna Scraping Agent och bekräfta att OpenAI Chat Assist är ansluten; lägg till OpenAI-autentiseringsuppgifter i OpenAI Chat Assist.
- Öppna Draft Response Agent och säkerställ att Anthropic Chat Core är ansluten som språkmodell; lägg till Anthropic-autentiseringsuppgifter i Anthropic Chat Core.
- För AI-verktyg/under-noder som Structured Parser A, Structured Parser B, Parse Email Response, Retrieve Email History, Review Sent History och Buffer Memory, lägg till autentiseringsuppgifter i föräldranoderna (Compose Email Sequence, Scraping Agent eller Draft Response Agent), inte i under-noderna.
- Credential Required: Anslut era OpenAI-autentiseringsuppgifter till Company Research, General Analysis, OpenAI Chat Core, OpenAI Chat Assist och Audio Transcription.
- Credential Required: Anslut era Anthropic-autentiseringsuppgifter till Anthropic Chat Core.
Steg 4: Konfigurera flödet för lead-berikning och scraping
Den här vägen bygger queries, kör Apify-scraping, validerar e-postadresser och lägger in nya leads.
- Öppna Detect Voice or Text och verifiera routingen till Telegram File Download och Set Text Payload.
- Öppna Telegram File Download och Telegram User Trigger, och anslut sedan Telegram-autentiseringsuppgifter.
- Öppna Generate URL och Run Apify Actor för att ställa in actor och input-schema.
- Bekräfta att Scraping Agent skickar output till både Build Query Payload och Fetch Scraped Emails parallellt.
- Öppna Fetch Scraped Emails, Run SQL Query och Mark Replied Yes för att ansluta PostgreSQL-autentiseringsuppgifter.
- Credential Required: Anslut era Apify-autentiseringsuppgifter i Run Apify Actor.
- Credential Required: Anslut era PostgreSQL-autentiseringsuppgifter i Fetch Scraped Emails, Run SQL Query och Mark Replied Yes.
Steg 5: Konfigurera routing, batchning och logik för sändtid
Sorterings-, routing- och batchningsnoder avgör hur outreach-sekvenser stryps och schemaläggs.
- Verifiera att Branch Check A, Branch Check B, Branch Check C och Branch Check D routar till rätt sorterings- eller hjälpnoder.
- Granska Sort Records A till Sort Records D samt limit-noderna Cap Records, Cap Records B, Cap Records C, Cap Records D och Cap Records E för att bekräfta volymtak.
- Bekräfta att Cap Records skickar output till både Combine Streams och Company Research parallellt.
- Öppna Route by Case, Route by Case B och Route by Case C för att säkerställa att varje case routar in i rätt batch-nod.
- Granska alla batchnings- och fördröjningsnoder (Iterate Batch A–Iterate Batch F och Pause A–Pause F) för att linjera sändtakten.
Steg 6: Konfigurera e-postutskick och uppdateringar
Mailgun hanterar utgående e-postutskick, medan Supabase-uppdateringar spårar resultat.
- Öppna Mailgun Dispatch A till Mailgun Dispatch F och anslut era Mailgun-autentiseringsuppgifter.
- Verifiera att varje Iterate Batch-nod skickar output till både rätt Supabase Update-nod och motsvarande Mailgun Dispatch-nod.
- Bekräfta att Timezone Builder och Sender Address skapar förväntade fält före Leads Table Lookup.
- Credential Required: Anslut era Mailgun-autentiseringsuppgifter till alla Mailgun-noder (6 noder).
Steg 7: Konfigurera svarshantering och skapande av utkast
Inkommande svar parsas och används för att skapa utkast till svar i Gmail.
- Öppna Gmail Trigger Listener och anslut Gmail-autentiseringsuppgifter för att lyssna efter svar.
- Öppna Fetch Email Message och Create Draft Email och anslut Gmail-autentiseringsuppgifter för meddelandehämtning och skapande av utkast.
- Säkerställ att Draft Response Agent tar emot e-postinnehållet från Fetch Email Message och använder Parse Email Response som sin output-parser.
- För Retrieve Email History och Review Sent History (Gmail-verktyg), lägg till Gmail-autentiseringsuppgifter i föräldranoden Draft Response Agent, inte i verktygens under-noder.
- Credential Required: Anslut era Gmail-autentiseringsuppgifter till Gmail Trigger Listener, Fetch Email Message och Create Draft Email.
Steg 8: Konfigurera Telegram-notiser
Telegram används för lead-intag och bekräftelseaviseringar för nyligen inlagda leads.
- Öppna Telegram User Trigger och anslut Telegram-autentiseringsuppgifter för att aktivera inkommande meddelanden.
- Öppna Telegram Confirmation och säkerställ att den är ansluten till Prepare Telegram Message → Cap Records E.
- Credential Required: Anslut era Telegram-autentiseringsuppgifter till Telegram User Trigger, Telegram File Download och Telegram Confirmation.
Steg 9: Testa och aktivera ert arbetsflöde
Testa varje startpunkt för att validera end-to-end-beteende innan ni aktiverar scheman i produktion.
- Använd Execute Workflow med Scheduled Trigger A för att bekräfta att poster flödar genom Supabase Fetch A → Sort Records C → Branch Check B → Route by Case → Iterate Batch A/B → Mailgun Dispatch-noder.
- Kör Gmail Trigger Listener manuellt (eller simulera input) och bekräfta att den når Create Draft Email via Draft Response Agent.
- Trigga Telegram User Trigger med både röst och text för att verifiera att Detect Voice or Text routar korrekt.
- Vid lyckad körning ska ni se skickade e-poståtgärder i Mailgun-noder, uppdateringar i Supabase-noder och skapande av utkast i Gmail.
- När allt är verifierat, slå på varje schemalagd trigger till Active för att köra automatiskt.
Tips för felsökning
- Gmail-credentials kan gå ut eller behöva specifika behörigheter. Om det skapar fel, börja med att kontrollera det anslutna Google-kontot och OAuth-scopes i n8n-credentials.
- Om du använder Wait-noder eller extern bearbetning varierar timing. Öka väntetiden om efterföljande steg fallerar för att en tidigare uppdatering inte hunnit slå igenom ännu.
- Mailgun-utskick kan fallera tyst när domäner inte är verifierade eller när du når kontogränser. Bekräfta status för din sändande domän och granska Mailgun-loggar för studsade mejl innan du ändrar flödet.
Snabba svar
Cirka 60 minuter om Mailgun, Gmail och databasen är redo.
Nej. Du kopplar mest konton och mappar dina lead-fält. Flödet innehåller code-noder, men du kan oftast lämna dem som de är.
Ja. n8n har ett gratis self-hosted-alternativ 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 OpenAI/Anthropic-API-användning, vilket vanligtvis är några cent per skapat svarsutkast.
Två alternativ: n8n Cloud (hanterad, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Vanliga justeringar är att ändra promptarna i Draft Response Agent så att de matchar din röst, byta intent-kategorier i den strukturerade parsern och justera logiken för Mailgun-sekvensen så att den speglar dina steg (till exempel: intro, uppföljning, breakup). Du kan också routa svar om ”priser” till en annan etikett eller en Slack-alert genom att redigera switch/if-grenarna runt klassificeringen.
För det mesta är det en utgången OAuth-session eller saknade Gmail-behörigheter. Anslut Gmail-credential igen i n8n och bekräfta sedan att triggern bevakar rätt brevlåda och att etikettfilter inte exkluderar meddelanden. Om det bara fallerar på vissa trådar, kontrollera att flödet kan hämta hela mejlet och historiken för den konversationen.
På n8n Cloud Starter kan du räkna med några tusen körningar per månad, vilket räcker för många mindre outbound-program.
Det beror på hur strikt du är med kontroll och skala. Zapier/Make kan funka för enkel logik som ”nytt mejl → skapa utkast”, men det här flödet gör mer: batchning, routing med flera grenar, databasuppslag, hämtning av trådhistorik, strukturerade AI-utdata och statusuppdateringar som stoppar sekvenser. n8n hanterar den typen av branching utan att varje väg blir en separat debiterbar task. Self-hosting-alternativet är också viktigt om du kör outreach dagligen. Om du är osäker, prata med en automationsexpert så kvalitetssäkrar vi din setup.
När det här väl rullar känns outbound lugnare. Svar blir hanterade, utkast dyker upp där teamet redan jobbar och dina lead-statusar slutar driva ur synk.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.