Leads trillar in, notiserna staplas, och plötsligt har det gått tre timmar sedan någon frågade om pris på WhatsApp. Du svarar för sent (eller inte alls) och försöker sedan återskapa konversationen för uppföljningar. Det blir rörigt.
Det här problemet med WhatsApp lead logging slår mot marknadschefer först, eftersom svarstid till lead påverkar kampanjens ROI. Men grundare och byråägare känner av det också, särskilt när ”vi svarar inom 5 minuter” blir ”i morgon bitti”.
Det här n8n-flödet svarar direkt i WhatsApp, Instagram, Facebook, LinkedIn och webbformulär, och loggar sedan varje interaktion i Google Sheets så att inget försvinner. Du får se hur det fungerar, vad du behöver och var team oftast går fel.
Så här fungerar automatiseringen
Hela n8n-flödet, från trigger till slutligt resultat:
n8n Workflow Template: WhatsApp + Google Sheets: besvarade och loggade leads
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0@{ icon: "mdi:database", form: "rounded", label: "google-sheet-name", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Normalize Lead Data5", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch2", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch3", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Send Instagram Message1"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Send Facebook Messages1"]
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Send Linkdin Messages1"]
n7@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message1", 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/code.svg' width='40' height='40' /></div><br/>Extract Day and Hours1"]
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Is Working Day and Working H..", pos: "b", h: 48 }
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/>Code in JavaScript3"]
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/code.svg' width='40' height='40' /></div><br/>Code in JavaScript4"]
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/code.svg' width='40' height='40' /></div><br/>Code in JavaScript5"]
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/webhook.dark.svg' width='40' height='40' /></div><br/>Incomming Lead whatsapp1"]
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/>Incomming Lead facebook1"]
n15["<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/>Incomming Lead instagram1"]
n16["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Incomming Lead linkdin1"]
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/webhook.dark.svg' width='40' height='40' /></div><br/>Incomming Lead Website1"]
n18@{ icon: "mdi:swap-vertical", form: "rounded", label: "Normalize Lead Data6", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "Normalize Lead Data7", pos: "b", h: 48 }
n20@{ icon: "mdi:swap-vertical", form: "rounded", label: "Normalize Lead Data8", pos: "b", h: 48 }
n21@{ icon: "mdi:swap-vertical", form: "rounded", label: "Normalize Lead Data9", pos: "b", h: 48 }
n22["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Ai Response1"]
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/whatsapp.svg' width='40' height='40' /></div><br/>Send message"]
n2 --> n8
n3 --> n23
n3 --> n4
n3 --> n5
n3 --> n6
n3 --> n7
n23 --> n12
n7 --> n12
n22 --> n11
n10 --> n22
n11 --> n3
n12 --> n0
n1 --> n2
n18 --> n2
n19 --> n2
n20 --> n2
n21 --> n2
n8 --> n9
n6 --> n12
n17 --> n1
n16 --> n21
n5 --> n12
n4 --> n12
n14 --> n19
n13 --> n18
n15 --> n20
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 n2,n3,n9 decision
class n0 database
class n4,n5,n6,n13,n14,n15,n16,n17,n22 api
class n8,n10,n11,n12 code
classDef customIcon fill:none,stroke:none
class n4,n5,n6,n8,n10,n11,n12,n13,n14,n15,n16,n17,n22,n23 customIcon
Problemet: snabba svar är svåra att hålla över tid
Att svara snabbt låter enkelt tills du jonglerar fem inkorgar och ett dussin kontextbyten. En WhatsApp-lead vill ha en offert, ett Instagram-DM frågar om tillgänglighet, ett LinkedIn-meddelande kommer in via en rekommendation och ditt webbformulär landar tyst i mejlen. Lägg till verkligheten: möten, leveransjobb, överlämningar i teamet, helger. Då blir svaren inkonsekventa, du copy-pastar halvdana mallar och tappar bort vem som faktiskt fick ett svar. Det värsta är uppföljningskaoset. Om första svaret inte loggas korrekt blir din ”pipeline” en minneslek.
Det eskalerar snabbt. Här är var det brukar haverera i det dagliga arbetet.
- Folk svarar från fel ställe, så teamet ser inte vad som lovats.
- Manuell loggning i Google Sheets sker ”senare”, vilket oftast betyder att det aldrig blir av.
- Leads efter arbetstid får antingen inget svar eller ett stelt svar som inte sätter förväntningar.
- När du väl behöver rapportering sitter du och pusslar ihop trådar mellan appar.
Lösningen: en omedelbar SDR som svarar och loggar allt
Det här flödet gör dina inkommande lead-meddelanden till ett enda, pålitligt system. Det börjar med att lyssna efter nya leads från WhatsApp, Instagram, Facebook, LinkedIn och webbformulär via webhooks. Varje källa har sina egna röriga fält, så flödet normaliserar datan till en gemensam, strukturerad modell (namn, meddelande, kanal, tidsstämpel och eventuell extra kontext). Sedan konverteras tiden till IST, arbetsdagar och arbetstider kontrolleras och en AI-prompt byggs som tar hänsyn till både leadens fråga och när de kontaktade dig. AI:n genererar ett kort, mänskligt svar, och flödet skickar det tillbaka till rätt kanal automatiskt. Till sist loggas hela interaktionen, svarsstatus och timing i Google Sheets så att du har en korrekt historik för uppföljning och rapportering.
Inkommande lead triggar en webhook, sedan struktureras och slås datan ihop till ett enda flöde. AI:n utformar svaret med tidskontext, och n8n skickar tillbaka det via rätt kanal. Efter det får Google Sheets en uppdaterad loggrad du faktiskt kan lita på.
Det du får: automatisering vs. resultat
| Det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du får 10 inkommande leads per dag via WhatsApp och Instagram, plus några via LinkedIn och din webbplats. Manuellt tar även ett ”snabbt” första svar och loggning kanske 10 minuter per lead när du räknar in kontextbyten och uppdatering av Sheets, så du tappar runt 2 timmar per dag. Med det här flödet triggar leaden automatiseringen direkt, AI-svaret genereras och skickas, och konversationen loggas utan att du rör något. Du kanske fortfarande hoppar in för leads med hög intent, men då gör du det medvetet, inte för att inkorgen brinner.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra din lead- och svarlogg.
- WhatsApp + sociala lead-källor för att ta emot inkommande meddelanden via webhooks.
- OpenAI API-nyckel (hämta den i din OpenAI API-dashboard).
Kunskapsnivå: Medel. Du klistrar mest in inloggningsuppgifter och testar webhooks, men du bör vara bekväm med att mappa fält och göra några testrundor.
Vill du inte sätta upp detta själv? Prata med en automations-expert (gratis 15-minuters konsultation).
Så fungerar det
Ett nytt lead-meddelande kommer in. En webhook fångar det inkommande meddelandet från WhatsApp, Instagram, Facebook, LinkedIn eller inskick från ditt webbformulär och skickar in det i flödet.
Flödet standardiserar lead-datan. Varje kanal har olika fält, så n8n mappar dem till en strukturerad modell och slår sedan ihop allt till en enda rutt så att efterföljande steg inte bryr sig om var det kom ifrån.
Logik för arbetstid + AI-generering av svar. Flödet konverterar tidsstämplar till IST, kontrollerar om det är en arbetsdag och inom arbetstid och bygger sedan en prompt som inkluderar lead-detaljer och tidskontext. OpenAI genererar ett kort svar som låter som om en mänsklig SDR skrev det (inte en textvägg).
Svaret skickas och interaktionen loggas. En switch routar meddelandet tillbaka till rätt kanal (WhatsApp-sändning, HTTP-requests för sociala svar, Gmail för webbplatsleads), och till sist sätts en slutlig post ihop och skrivs till Google Sheets med svarsstatus och timing.
Du kan enkelt ändra reglerna för arbetstid så att de matchar din tidszon och dina arbetsdagar utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera webhook-triggern
Det här arbetsflödet startar från flera inkommande leadkällor. Ni kommer att sätta upp varje webhook-endpoint så att externa plattformar kan skicka leaddata till n8n.
- Öppna Webhook WhatsApp Lead och ställ in Path till
incoming-leads-whatsappmed HTTP Method inställd på POST. - Öppna Webhook Facebook Lead och ställ in Path till
incoming-leads-facebookmed HTTP Method inställd på POST. - Öppna Webhook Instagram Lead och ställ in Path till
incoming-leads-instagrammed HTTP Method inställd på POST. - Öppna Webhook LinkedIn Lead och ställ in Path till
incoming-leads-linkdinmed HTTP Method inställd på POST. - Öppna Webhook Website Lead och ställ in Path till
incoming-leads-websitemed HTTP Method inställd på POST.
Steg 2: Normalisera inkommande leaddata
De fem mappningsnoderna standardiserar fälten så att resten av arbetsflödet kan arbeta med ett konsekvent schema.
- I Map WhatsApp Fields ställer ni in tilldelningar som body.lead_name till
{{ $json.body.ProfileName }}, body.contact_phone till{{ $json.body.From }}och body.message_text till{{ $json.body.Body }}. - I Map Facebook Fields och Map Instagram Fields speglar ni samma tilldelningar och ställer in body.source_channel till
facebookrespektiveinstagram. - I Map LinkedIn Fields mappar ni namn, telefon och meddelande på samma sätt och ställer in body.source_channel till
linkdin. - I Map Web Lead Fields mappar ni body.lead_name till
{{ $json.body.lead_name }}, body.contact_phone till{{ $json.body.contact_phone }}, body.message_text till{{ $json.body.message_text }}, body.source_channel till{{ $json.body.source_channel }}och body.contact_email till{{ $json.body.contact_email }}.
LinkedIn men Map LinkedIn Fields sätter linkdin. Gör värdena konsekventa för att undvika missad routning.Steg 3: Routa leads och kontrollera kontorstider
Det här avsnittet skickar alla normaliserade leads in i en och samma processväg och avgör om leadet kom in under arbetstid.
- I Route Source Channel säkerställer ni att varje regel jämför leftValue med
{{ $json.body.source_channel }}och routar förwhatsapp,Instagram,Facebook,LinkedInochwebsite. - Bekräfta att Route Source Channel skickar vidare till Compute Day Hour Info för varje regel (centraliserad bearbetning).
- Behåll koden i Compute Day Hour Info som den är för att beräkna IST-värden och is_working_hours från
$json.body.submitted_at. - I Validate Business Hours behåller ni villkoren som använder
{{ $json.ist_dayOfWeek }},{{ $json.isWorkingDay }}och{{ $json.is_working_hours }}.
Steg 4: Sätt upp generering av AI-svar
Arbetsflödet skapar en prompt, anropar Groq:s chat completion-endpoint och slår ihop AI-svaret med leaddata.
- I Compose AI Prompt behåller ni modellen och reglerna som definierats, särskilt användarprompten som innehåller
${$input.item.json.body.source_channel}och${$input.item.json.is_working_hours}. - I Request AI Completion ställer ni in URL till
https://api.groq.com/openai/v1/chat/completions, Method till POST och JSON Body till{{ $json.requestBody }}. - I Request AI Completion ställer ni in headers till Authorization med
[CONFIGURE_YOUR_TOKEN]och Content-Type medapplication/json. - I Merge AI Result behåller ni koden som läser
$input.item.json.choices[0].message.contentoch slår ihop den med data från Compose AI Prompt.
choices[0].message.content.Steg 5: Konfigurera kanalsvar och loggning
AI-svar skickas baserat på källkanal och konsolideras sedan till en enskild loggpost.
- I Dispatch Channel Reply bekräftar ni att varje regel kontrollerar leftValue
{{ $json.body.source_channel }}förwhatsapp,Instagram,Facebook,LinkedInochwebsite. - I Send WhatsApp Reply ställer ni in Operation till send, Text Body till
{{ $json.ai_response }}, Recipient Phone Number till{{ $json.body.contact_phone }}och fyller i Phone Number ID med ert värde. - I Post Instagram Reply ställer ni in URL till
your-instagram-api-endpoint. Gör samma sak för Post Facebook Reply medyour-facebook-api-endpointoch Post LinkedIn Reply medyour-linkdin-api-endpoint. - I Send Email Reply ställer ni in Send To till
{{ $json.body.contact_email }}, Message till{{ $json.ai_response }}och Subject tillWebsite developement Pricing Inquiry. - Behåll koden i Assemble Log Record som den är för att fånga sändningsstatus, leadmetadata och tidsstämplar, och skicka sedan vidare till kalkylarksloggen.
Steg 6: Koppla in Google Sheets-loggning
Den slutliga loggposten läggs till eller uppdateras i ert kalkylark för rapportering och uppföljning.
- Öppna Update Lead Spreadsheet och ställ in Operation till appendOrUpdate.
- Ställ in Document till ert kalkylarks-ID (för närvarande
[YOUR_ID]) och Sheet Name till målfliken (för närvarandegid=0). - Verifiera kolumnmappningar som Email till
{{ $json.email }}, Lead Name till{{ $json.lead_name }}, AI Response till{{ $json.ai_response }}och Source Channel till{{ $json.source_channel }}.
Steg 7: Testa och aktivera ert arbetsflöde
Kör kontrollerade tester för att verifiera kanalroutning, AI-svar och loggning.
- Använd knappen Execute Workflow och skicka en exempel-payload till varje webhook-URL för WhatsApp, Facebook, Instagram, LinkedIn och Website.
- Bekräfta att varje payload flödar från Route Source Channel → Compute Day Hour Info → Validate Business Hours → Compose AI Prompt → Request AI Completion → Merge AI Result.
- Verifiera att rätt utgående nod triggas från Dispatch Channel Reply och att Assemble Log Record fångar en status som
Sent Successfully. - Kontrollera Update Lead Spreadsheet för att säkerställa att en rad läggs till eller uppdateras med AI-svaret och tidsstämplar.
- När ni är nöjda, växla arbetsflödet till Active så att webhooks tar emot live-trafik.
Vanliga fallgropar
- Google Sheets-inloggningar kan gå ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera fliken Credentials i n8n och bekräfta först att kalkylarket är delat med det anslutna Google-kontot.
- Om du använder Wait-noder eller extern rendering varierar processingtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera outputs i all evighet.
Vanliga frågor
Cirka 45 minuter om dina kanal-webhooks redan är klara.
Nej. Du kommer främst koppla ihop konton och mappa några fält. JavaScript-noderna är redan inbyggda i flödet.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis testperiod i 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 API, som vanligtvis landar på några ören per dag vid låg lead-volym.
Två alternativ: n8n Cloud (hanterat, 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 obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det borde du sannolikt göra. Kontroll av arbetstid sker i logiken ”Validate Business Hours”, och AI-prompten byggs i ”Compose AI Prompt”, så du kan ha en ton för arbetstid och en annan för kvällar och helger. Vanliga justeringar är att lägga till en rad som ”Vi återkommer kl. 10.00 IST”, routa leads efter arbetstid till en annan flik i sheetet och tagga meddelanden med hög intent så att en människa får en ping.
Oftast handlar det om en utgången token eller att webhooken pekar på en gammal n8n-URL. Kontrollera inställningarna hos din WhatsApp-leverantör och bekräfta sedan att din n8n-webhook-URL går att nå från publika internet. Leta också efter saknade behörigheter i WhatsApp-appen, eftersom vissa leverantörer begränsar utskick om inte mall- eller sessionsregler uppfylls.
För de flesta små team är hundratals leads per dag inga problem om dina API:er tillåter det.
Det beror på hur strikt du är med logik och loggning. Det här flödet använder routning med flera grenar, regler för arbetstid och ett tydligt ”normalisera allt först”-mönster, vilket är mycket enklare att förvalta i n8n när du har fler än två kanaler. Du får också möjlighet till self-hosting, vilket spelar roll om du inte vill att prissättning per uppgift ska smyga upp när volymerna växer. Zapier eller Make kan gå snabbare för en enkel tvåstegs ”nytt meddelande → skicka svar”, men så fort du lägger till AI-prompter, statustracking och flera källor blir det pilligt. Vill du ha en second opinion på val av plattform, prata med en automations-expert.
När det här väl rullar slutar teamet släcka bränder och börjar följa ett system. Flödet tar hand om det repetitiva, och du kan fokusera på de leads som faktiskt förtjänar ett mänskligt svar.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.