Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

webhook.site + Slack för lokal webhooktestning

Rickard Andersson Partner, Nodenordic.se

Du försöker testa ”riktiga” webhooks, men din app kör på localhost. Så du slutar med att öppna portar, pilla med routrar eller spinna upp en tillfällig server du inte litar på. Det går långsamt. Det är skört.

Det här är den typen av smärta som drabbar en utvecklare mitt i en build, men byråteam och drift känner av det också när kundintegrationer snabbt behöver bevis. Med den här automatiseringen för webhook Slack testing kan du ta emot webhook-händelser i produktionsklass publikt och vidarebefordra dem säkert till ditt lokala n8n-flöde.

Nedan ser du hur flödet beter sig, vad det automatiserar och de praktiska uppsättningsdelarna som gör det pålitligt för upprepad testning.

Så fungerar automatiseringen

Hela n8n-flödet, från trigger till slutresultat:

n8n Workflow Template: webhook.site + Slack för lokal webhooktestning

Problemet: testa webhooks från publika webben mot localhost

Webhook-testning låter enkelt tills du gör det under verkliga förhållanden. Din leverantör kan bara skicka till en publik URL, men din kod kör lokalt, och att exponera din maskin är både en säkerhets- och nätverksmässig huvudvärk. Även om du får till en tunnel slåss du fortfarande med instabila anslutningar, URL:er som ändras och problemet ”har vi redan processat den här händelsen?” som orsakar dubbla körningar och förvirring. Och så har du kontextbytena: kopiera payloads, köra om tester, scrolla loggar, upprepa. Det som borde vara snabb validering blir en hel eftermiddag.

Det växer snabbt. Här är var det vanligtvis faller isär i praktiken.

  • Du slösar cirka 1–2 timmar per integration bara på att få en stabil publik-till-lokal väg att fungera.
  • Dubbla webhook-leveranser skapar ”spökbuggar” eftersom ditt lokala flöde bearbetar samma händelse två gånger.
  • Tokens och auth-headers hanteras fel, så tester lyckas en gång och misslyckas sedan när du kör om dem.
  • När något fallerar får du ofta veta det för sent eftersom du inte bevakar körningar varje minut.

Lösningen: fånga på webhook.site, vidarebefordra till din lokala webhook

Det här flödet ger dig ett stabilt, repeterbart sätt att testa riktiga webhooks mot en lokal n8n-instans utan att exponera din dev-server. Det startar på schema, kontrollerar (och lagrar) autentiseringstoken som behövs för att prata med webhook.site och hämtar sedan de senaste förfrågningarna som träffat din webhook.site-URL. Därefter filtrerar det bort allt du redan har behandlat genom att jämföra tidsstämplar och spara det senaste ”senast behandlad”-värdet till nästa gång. Till sist vidarebefordrar det endast nya webhook-payloads till din lokala n8n-webhookadress, vilket gör att ditt lokala flöde kan bete sig som om det tar emot publika webhooks direkt.

Flödet startar när den schemalagda triggern kör. Därefter säkerställer det att webhook.site-auth finns tillgänglig, hämtar senaste webhook-förfrågningar och deduplicerar dem med en sparad tidsstämpel. I slutet skickar det vidare nya händelser till din localhost-webhookendpoint så att din lokala build kan svara normalt.

Vad du får: automatisering vs resultat

Exempel: så här ser det ut

Säg att du validerar Stripe-liknande händelser från en leverantör som bara stödjer publika webhook-URL:er. Manuell väg kan du lägga cirka 30 minuter på att sätta upp en tunnel, ytterligare 30 minuter på att konfigurera om den efter en omstart och sedan 20 minuter på att jaga dubbletter i loggar. Det är ungefär 1–2 timmar innan du ens fixar den faktiska buggen. Med det här flödet pekar du leverantören mot din webhook.site-URL en gång, och sedan hämtar den schemalagda körningen nya händelser och vidarebefordrar dem till localhost i bakgrunden. Du väntar mest på exekveringstid, inte på setup-arbete.

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)
  • webhook.site för att ta emot publika webhook-förfrågningar
  • Slack för att varna dig när vidarebefordringar misslyckas
  • webhook.site API-token (hämta den i webhook.site-kontots inställningar)

Svårighetsnivå: Medel. Du klistrar in URL:er/tokens och förstår vad en webhook-endpoint är.

Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

En schemalagd kontroll startar allt. n8n kör på en timer så att du kan polla webhook.site regelbundet utan att ha en webbläsarflik öppen hela dagen.

Din lokala webhookadress sätts. Flödet laddar URL:en till din localhost-webhook (den som ditt lokala n8n-flöde exponerar) så att destinationen för vidarebefordran är konsekvent.

Auth- och dedupe-logik kör tyst. Det laddar den sparade webhook.site-tokenen från en nyckel-värde-lagring, hämtar förfrågningar och filtrerar sedan till endast de som är nyare än din senast behandlade tidsstämpel. Det är ärligt talat det som gör den användbar i vardagen, eftersom du inte konstant behöver hantera repetitioner.

Nya händelser skickas vidare till localhost. Flödet skickar den råa payloaden till din lokala webhook-endpoint via HTTP och sparar sedan den senaste tidsstämpeln så att nästa körning bara skickar vidare leveranser som faktiskt är nya.

Du kan enkelt justera pollningsschemat så att det kör snabbare (eller långsammare) efter behov. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: Konfigurera den schemalagda triggern

Ställ in schemat som driver arbetsflödet så att det kontrollerar nya webhook.site-förfrågningar med ett regelbundet intervall.

  1. Lägg till och öppna Scheduled Automation Start.
  2. Ställ in regelintervallet på Seconds och sätt Seconds Interval till 10.
  3. Bekräfta att Scheduled Automation Start skickar utdata parallellt till både Define Local Webhook och Load Last Processed.
Korta pollingintervall (som 10 sekunder) kan generera många HTTP-förfrågningar. Öka intervallet om ni blir rate-limitade av webhook.site.

Steg 2: Anslut webhook och lokal tillståndslagring

Definiera webhook-URL:en för målet och läs in cachade värden för autentisering och senast behandlad tidsstämpel.

  1. Öppna Define Local Webhook och sätt värdet webhook till http://localhost:5678/webhook/[YOUR_ID].
  2. Öppna Load Auth Token och sätt Key till auth_token, File Name till savefile och Operation till read.
  3. Öppna Load Last Processed och sätt Key till last_processed, File Name till savefile och Operation till read.
⚠️ Vanlig fallgrop: Om ni glömmer att ersätta [YOUR_ID] i Define Local Webhook kommer Relay to Local Webhook att posta till en ogiltig URL.

Steg 3: Sätt upp logik för hämtning av token

Använd kontrollen för om token finns för att antingen återanvända en befintlig webhook.site-token eller hämta och spara en ny.

  1. Öppna Check Token Presence och bekräfta att villkoret använder {{ $json.value }} med operatorn exists.
  2. Öppna Fetch Auth Token och sätt URL till https://webhook.site/token och Method till POST.
  3. Öppna Persist Auth Token och sätt Key till auth_token, Value till {{ $json.uuid }} och File Name till savefile.
  4. Öppna Retrieve Recent Requests och sätt URL till =https://webhook.site/token/{{ $json.value }}/requests.
Check Token Presence routar true/false automatiskt: om token finns går den till Retrieve Recent Requests, om token saknas går den till Fetch Auth Token och sedan Persist Auth Token.

Steg 4: Konfigurera logik för sammanslagning och filtrering

Slå ihop den senaste listan med förfrågningar med den senast behandlade tidsstämpeln och filtrera därefter till endast nya POST-förfrågningar.

  1. Öppna Combine Streams och sätt Mode till combine och Combine By till combineByPosition.
  2. Öppna Filter New Requests och klistra in hela JavaScript-koden från arbetsflödet, inklusive filter_method satt till POST och logiken för konvertering av datum/tid.
  3. Bekräfta körordningen: Retrieve Recent Requests och Load Last Processed går in i Combine Streams, och därefter Filter New Requests.
⚠️ Vanlig fallgrop: Om inkommande payload inte innehåller created_at eller method kommer filterlogiken i Filter New Requests att returnera en tom mängd.

Steg 5: Spara den senaste tidsstämpeln och vidarebefordra payloaden

Beräkna den senaste tidsstämpeln från de filtrerade förfrågningarna, spara den och vidarebefordra sedan varje förfrågan till er lokala webhook.

  1. Öppna Compute Latest Timestamp och sätt JavaScript till var datetimes = $('Filter New Requests').all().map(x=>x.json.created_at) return {last_time: Math.max(...datetimes)}.
  2. Öppna Save Last Processed och sätt Key till last_processed, Value till {{ $json.last_time }} och File Name till savefile.
  3. Öppna Relay to Local Webhook och sätt URL till {{ $('Define Local Webhook').first().json.webhook }}.
  4. I Relay to Local Webhook, sätt Body till {{ $('Filter New Requests').item.json.content }}, Method till POST, Send Body till On, Content Type till raw och Raw Content Type till =application/json.
Om ni behöver vidarebefordra headers eller fullständig metadata för förfrågan kan ni utöka Relay to Local Webhook-body så att den inkluderar fler fält från Filter New Requests.

Steg 6: Testa och aktivera ert arbetsflöde

Kör ett manuellt test för att bekräfta att data flödar genom varje gren och att er lokala webhook tar emot nya POST-förfrågningar.

  1. Klicka på Execute Workflow och bekräfta att Scheduled Automation Start triggar både Define Local Webhook och Load Last Processed parallellt.
  2. Skicka en POST-förfrågan till er webhook.site-endpoint och bekräfta att den syns i Retrieve Recent Requests och passerar genom Filter New Requests.
  3. Verifiera att Save Last Processed uppdaterar nyckeln last_processed och att Relay to Local Webhook postar JSON till er lokala webhook-URL.
  4. Aktivera arbetsflödet med reglaget Active för att köra enligt schema.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • webhook.site-credentials kan gå ut eller kräva specifika behörigheter. Om det strular, kontrollera först din sparade token i n8n-noden för nyckel-värde-lagring.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströms noder fallerar på tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in ert varumärkets tonalitet tidigt, annars kommer du redigera utdata i all evighet.

Vanliga frågor

Hur lång tid tar det att sätta upp den här automatiseringen för webhook Slack testing?

Cirka 30 minuter om du redan har din lokala webhook-URL och webhook.site-token.

Behöver jag kodkunskaper för att automatisera webhook Slack testing?

Nej. Du kopplar in credentials, klistrar in din lokala webhookadress och aktiverar flödet.

Är n8n gratis att använda för det här flödet för webhook Slack testing?

Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna med webhook.site-kostnader om din kontonivå begränsar historiken för förfrågningar.

Var kan jag hosta n8n för att köra den här automatiseringen?

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.

Kan jag anpassa det här flödet för webhook Slack testing för nästan realtids-vidarebefordran?

Ja, men. Du kan minska schemaintervallet så att det kontrollerar webhook.site oftare, och du kan även justera ”senast behandlad”-logiken till att använda ett event-ID istället för tidsstämplar om din leverantör skickar ett sådant. Vissa team vidarebefordrar till olika lokala endpoints genom att ändra fältet ”Define Local Webhook”. Om du vill ha Slack-varningar vid fel, lägg till ett Slack-meddelandesteg efter vidarebefordran när HTTP-svaret inte är lyckat.

Varför misslyckas min webhook.site-anslutning i det här flödet?

Oftast handlar det om en utgången eller saknad token i noden för nyckel-värde-lagring. Skapa en ny webhook.site-token, uppdatera sedan det sparade värdet och kör schemat en gång. Kontrollera också att flödet läser rätt tokenfält, eftersom ett tomt värde skickar det till grenen ”fetch token” och ändå kan misslyckas om den uppströms förfrågan blockeras. Rate limits kan också dyka upp om du pollar väldigt aggressivt.

Hur många webhook-förfrågningar kan den här automatiseringen för webhook Slack testing hantera?

Många, inom rimliga gränser. Den största begränsningen är hur många förfrågningar webhook.site håller tillgängliga för dig att hämta, plus dina n8n-exekveringsgränser om du kör en cloud-plan. Om du hostar själv beror exekveringsvolymen mest på serverstorlek och hur ofta du pollar. För typisk testning (dussintals till några hundra händelser) flyter det på.

Är den här automatiseringen för webhook Slack testing bättre än att använda Zapier eller Make?

För just den här uppgiften är n8n oftast bättre, eftersom du kan köra lokalt, lagra tillstånd som ”senast behandlad” utan fulhack och lägga till branchlogik utan att betala per väg. Zapier och Make kan absolut fånga webhooks, men de är inte byggda för att vidarebefordra in i en lokal dev-miljö på ett kontrollerat sätt. En annan praktisk fördel är portabilitet: du kan exportera flödet och dela det mellan kundprojekt. Om ditt team vill ha Slack-varningar när något går sönder kan du lägga in dem exakt där felen uppstår. Prata med en automationsexpert om du vill ha hjälp att välja den enklaste vägen.

När detta väl rullar slutar webhook-testning att vara ett ”setup-projekt” och blir det det ska vara: snabb validering. Sätt upp det en gång och fortsätt bygga.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal