Skip to main content
Webhook Omslagsbild
Webhooks levererar aviseringar i realtid när händelser inträffar i ditt Dodo Payments-konto. Använd dem för att automatisera arbetsflöden, uppdatera din databas, skicka aviseringar och hålla dina system synkroniserade.
Dodo Payments webhooks följer specifikationen Standard Webhooks för signaturverifiering och payload-struktur.

Key Features

Webhooks erbjuder leverans i realtid med inbyggd säkerhet, automatiska omförsök och händelsefiltrering. Alla officiella SDK:er innehåller hjälpfunktioner för signaturverifiering, och instrumentpanelen erbjuder verktyg för testning, övervakning och återuppspelning.

Getting Started

1

Go to Developer → Webhooks

I Dodo Payments Dashboard går du till Developer → Webhooks.
2

Click Add Endpoint

Klicka på Add endpoint för att skapa en ny webhook-mottagare.
3

Enter Your Endpoint URL

Ange den HTTPS-URL där Dodo Payments ska skicka webhook-händelser, eller välj en integrationsanslutning (Slack, Discord, Zapier, Resend med flera) för att vidarebefordra händelser till en tredjepartstjänst utan att skriva kod.
4

Select Events

Välj vilka händelser du vill ta emot. Händelserna är organiserade efter resurs (payment, subscription, dispute med flera). Du kan välja enskilda händelser eller en hel resurs för att ta emot alla relaterade händelser.
5

Save

Klicka på Create endpoint. Din webhook-signaturhemlighet visas på endpointens flik Overview.
Förvara din webhook-hemlighet säkert. Exponera den aldrig i klientkod eller versionshantering.
Om du vill rotera din webhook-hemlighet öppnar du endpointen och klickar på Rotate secret bredvid hemligheten på fliken Overview. Den gamla hemligheten förblir giltig i 24 timmar efter rotationen.

Integrationsanslutningar

Vidarebefordra webhook-händelser direkt till tredjepartstjänster med hjälp av integrationsanslutningar, så att du slipper bygga och underhålla anpassade webhook-hanterare.

Så fungerar anslutningar

En anslutning omvandlar Dodo Payments-händelser till det format som destinationen förväntar sig. Vilka uppgifter du behöver ange beror på destinationen: Instrumentpanelen visar alla anslutningar som är tillgängliga för ditt företag. Se External Integrations för information om vad varje destination kan göra med händelserna.

Konfigurera en anslutning

När du skapar eller redigerar en endpoint väljer du en anslutning, varpå sidopanelen visar konfigurationsinstruktioner för destinationen. Testa omvandlingen innan du sparar för att bekräfta att händelserna konverteras korrekt.
Använd en anslutning för att nå en destination som stöds utan att skriva kod. Om du behöver anpassad logik använder du en standard-endpoint med en transformation i stället.

Konfigurera prenumererade händelser

Konfigurera vilka händelser varje webhook-endpoint tar emot.
1

Navigate to Webhook Endpoints

Gå till Developer → Webhooks och klicka på din endpoint.
2

Open Event Configuration

Klicka på Edit för att öppna sidopanelen för endpoint-konfiguration.
3

Select Events

Väljaren för händelsetyp visar alla tillgängliga webhook-händelser i ett sökbart träd, grupperade efter resurs (till exempel payment, subscription, dispute). Markera rutorna bredvid de händelser du vill ta emot. Du kan välja enskilda händelser, en hel resurs eller kombinera olika val.
4

Save Configuration

Klicka på Save för att tillämpa ändringarna.
Om du avmarkerar alla händelser tar din webhook-endpoint emot alla händelsetyper. Välj endast de händelser som din applikation behöver.

Händelsekatalog

Gå till Developer → Webhooks och öppna fliken Event catalog för att se alla händelsetyper som Dodo Payments kan skicka. Välj en händelse för att visa dess schema och exempelpayload.

Webhook Events Guide

Bläddra bland händelserna som referensdokumentation, grupperade efter resurs.

Webhook-leverans

Tidsgränser

Webhooks har en timeout på 30 sekunder för både anslutnings- och läsoperationer. Bearbeta webhooks asynkront genom att omedelbart returnera en 200-statuskod och sedan hantera händelsen i bakgrunden.

Automatiska omförsök

Misslyckade leveranser försöks om med exponentiell backoff, upp till totalt 8 försök: Använd dashboarden för att manuellt spela upp misslyckade meddelanden igen eller massåterställa meddelanden från ett specifikt tidsintervall.

Idempotens

Varje webhook innehåller en unik webhook-id-header. Spara detta ID för att upptäcka och hoppa över duplicerade händelser, eftersom omförsök kan leverera samma händelse flera gånger.
Implementera alltid idempotenskontroller. På grund av omförsök kan du ta emot samma händelse flera gånger.

Händelseordning

Händelser kan komma i fel ordning på grund av omförsök eller nätverksförhållanden. Varje webhook innehåller ett timestamp-fält; använd det för att ordna händelser om din applikation kräver det. Du får alltid den senaste payload-statusen vid leveranstillfället.

Skydda webhooks

Validera alltid webhook-payloads och använd HTTPS.

Verifiera signaturer

Varje webhook innehåller en webhook-signature-header: en HMAC SHA256-signatur av payloaden och tidsstämpeln, signerad med din hemliga nyckel.

SDK-verifiering (rekommenderas)

Alla officiella SDK:er innehåller inbyggda hjälpfunktioner. Ange DODO_PAYMENTS_WEBHOOK_KEY när klienten initieras och anropa sedan unwrap() för att verifiera och parsa payloaden. Två metoder är tillgängliga:
  • unwrap — Verifierar signaturen med din webhook-hemliga nyckel och parsar sedan payloaden.
  • unsafe_unwrap — Parsar payloaden utan att verifiera den. Använd den endast för testning.
Metodnamnen följer konventionerna för respektive språk: unwrap / unsafeUnwrap i TypeScript, unwrap / unsafe_unwrap i Python och Unwrap / UnsafeUnwrap i Go.
Ange din webhook-hemlighet via DODO_PAYMENTS_WEBHOOK_KEY när Dodo Payments-klienten initieras.

Manuell verifiering (alternativ)

Om du inte använder ett SDK verifierar du signaturen själv:
  1. Skapa det signerade innehållet genom att sammanfoga webhook-id, webhook-timestamp och den råa request body:n med punkter: {id}.{timestamp}.{body}. Använd body:n exakt som den togs emot, innan någon JSON-parsning.
  2. Ta din webhook-hemlighet. Om den börjar med whsec_ tar du bort det prefixet och base64-avkodar sedan resten för att få signeringsnyckeln.
  3. Beräkna HMAC-SHA256 för det signerade innehållet med signeringsnyckeln och base64-koda resultatet.
  4. webhook-signature-headern innehåller en eller flera blankstegsseparerade signaturer, var och en i formatet v1,<base64-signature>. Requesten är giltig om någon v1-signatur matchar din. Jämför med en constant-time-funktion.
  5. Avvisa requesten om webhook-timestamp avviker för mycket från aktuell tid, för att förhindra replay-attacker. Standard Webhooks-biblioteken tillåter 5 minuter.
Se Standard Webhooks-biblioteken för referensimplementationer. Information om event-payload-format finns i Webhook Payload.

Käll-IP-adresser

Signaturverifiering är den autentiseringsmetod som stöds. Den bevisar att requesten signerades med din webhook-hemlighet, vilket en kontroll på nätverksnivå inte kan göra. Webhook-leveranser kommer från en pool av IP-adresser som ändras över tid. Förlita dig inte på IP-allowlistor för autentisering. Verifiera alltid webhook-signature-headern i stället, enligt beskrivningen i Verifiera signaturer. Om din brandvägg kräver en allowlista:
  • Hårdkoda inte adresser permanent. Intervall ändras över tid och inaktuella regler blockerar leveranser utan tydlig indikation.
  • Begär aktuella intervall från support@dodopayments.com innan du låser ner en brandvägg.
  • Var uppmärksam på ändringsmeddelanden. När leveransadresser ändras meddelar vi berörda merchants via e-post — tillämpa uppdateringarna före det angivna datumet.
  • Behåll signaturverifiering aktiverad oavsett vilka nätverksregler du lägger till.
På serverless- och managed hosting-plattformar är inkommande IP-filtrering ofta inte tillgänglig eller praktisk. Signaturverifiering är rätt kontroll i dessa miljöer.
En blockerad leverans behandlas som ett fel och försöks om enligt schemat som beskrivs i Automatiska omförsök. Om brandväggsregler gjorde att leveranser misslyckades kan du skicka dem igen när reglerna har korrigerats — se Spela upp och återställ meddelanden.

Svara på webhooks

Din webhook-handler måste returnera en 2xx status code för att bekräfta mottagandet. Alla andra svar behandlas som ett fel och webhooken försöks om.

Bästa praxis

  • Använd endast HTTPS. HTTP-endpoints är sårbara för avlyssning.
  • Svara omedelbart. Returnera en 200-statuskod direkt och bearbeta sedan händelsen asynkront.
  • Implementera idempotens. Använd webhook-id-headern för att upptäcka och hoppa över duplicerade händelser.
  • Skydda din hemlighet. Lagra DODO_PAYMENTS_WEBHOOK_KEY i miljövariabler eller en secrets manager, aldrig i versionshantering.

Webhook-payloadens struktur

Request-format

Headers

string
obligatorisk
Unik identifierare för denna webhook-händelse. Använd den för idempotenskontroller.
string
obligatorisk
HMAC SHA256-signatur för att verifiera webhookens äkthet.
string
obligatorisk
Unix-tidsstämpel (i sekunder) för när webhooken skickades.

Request body

string
obligatorisk
Din Dodo Payments-företagsidentifierare.
string
obligatorisk
Händelsetypen som utlöste denna webhook (t.ex. payment.succeeded, subscription.active).
string
obligatorisk
ISO 8601-formaterad tidsstämpel för när händelsen inträffade.
object
obligatorisk
Händelsespecifik payload med detaljerad information om händelsen.

Exempel på payload

Event Types

Bläddra bland alla tillgängliga webhook-händelsetyper

Event Payloads

Visa detaljerade payload-scheman för varje händelse

Handle Payment Failures

Reagera på payment.failed och återställ nekade betalningar

Testa webhooks

Skicka en exempelhändelse

Testa din webhook-integration direkt från dashboarden:
1

Navigate to Webhooks

Gå till Developer → Webhooks och klicka på din endpoint.
2

Open Testing Tab

Klicka på fliken Testing.
3

Send Example

Välj en händelsetyp och klicka på Send example. Exempelpayloaden levereras till din endpoint-URL precis som en verklig händelse och signeras på samma sätt.
4

Check Your Endpoint

Bekräfta att händelsen kom fram, att signaturverifieringen lyckades och att du returnerade en 2xx-statuskod.
Misslyckade meddelanden som skickas från fliken Testing försöks om enligt det normala omförsöksschemat, precis som alla andra webhooks.

Implementeringsexempel

Fullständig Express.js-implementation med webhook-verifiering och hantering:
Testa din webhook-handler noggrant med dashboardens testgränssnitt innan du bearbetar produktionshändelser. Det hjälper dig att identifiera och åtgärda problem tidigt.

Testa webhooks med CLI

Dodo Payments CLI har två kommandon för att testa webhooks under lokal utveckling.

Lyssna efter live-webhooks lokalt

Vidarebefordra verkliga webhook-händelser från ditt testlägeskonto till din lokala utvecklingsserver:
CLI:t öppnar en WebSocket-anslutning och vidarebefordrar varje webhook-händelse till din lokala endpoint (t.ex. http://localhost:3000/webhook) och bevarar alla headers för testning av signaturverifiering.
Lyssnaren fungerar endast med API-nycklar i testläge. Kör dodo login och välj Test Mode först.

Utlös simulerade webhook-händelser

Skicka simulerade webhook-payloads till valfri endpoint utan att skapa riktiga transaktioner:
Med detta interaktiva verktyg kan du välja en händelsetyp och skicka en realistisk simulerad payload till din endpoint. Det körs i en loop så att du kan testa flera händelser i samma session. Trigger-kommandot omfattar familjerna subscription, payment, refund, dispute, license key, payout, credit, abandoned checkout, dunning och entitlement grant. Det skickar inte subscription.past_due eller subscription.unpaused. Se Supported Webhook Events för den exakta listan.
Simulerade webhook-payloads från dodo wh trigger är inte signerade. Använd den overifierade parse-metoden (unsafeUnwrap i TypeScript, unsafe_unwrap i Python och UnsafeUnwrap i Go) i din webhook-handler endast under testning.

CLI Webhook Testing Docs

Se den fullständiga dokumentationen om webhook-testning med CLI

Avancerade inställningar

Fliken Advanced innehåller ytterligare konfigurationsalternativ för finjustering av webhook-endpointens beteende.

Hastighetsbegränsning (throttling)

Styr hastigheten med vilken webhook-händelser levereras till din endpoint. Som standard har webhooks ingen hastighetsbegränsning och händelser levereras så snart de inträffar.
1

Open Advanced Tab

Klicka på fliken Advanced på endpointens detaljsida.
2

Configure Rate Limit

Expandera avsnittet Endpoint throttling.
3

Set Your Limit

Ange det maximala antalet meddelanden per sekund och klicka sedan på Save. Leveranser som överskrider denna hastighet köas i stället för att tas bort.

Anpassade headers

Lägg till anpassade HTTP-headers i alla webhook-requests som skickas till din endpoint. Användbart för autentisering, routing eller för att lägga till metadata.
1

Add Headers

Ange ett header-namn och ett värde i avsnittet Custom headers.
2

Add Multiple Headers

Klicka på Add header för varje ytterligare header och klicka sedan på Save.

Transformationer

Med transformationer kan du ändra en webhooks payload och valfritt omdirigera den till en annan URL. Använd transformationer för att:
  • Ändra payload-strukturen före bearbetning
  • Routa webhooks till olika endpoints baserat på innehåll
  • Lägga till eller ta bort fält från payloaden
  • Transformera dataformat
1

Enable Transformations

Aktivera Enable transformation i avsnittet Transformation.
2

Configure Transformation

Skriv dina transformationsregler i JavaScript i kodeditorn och klicka sedan på Save. Koden måste returnera webhook-objektet från handler().
3

Test Transformation

Använd gränssnittet för transformationstestning för att verifiera att transformationen fungerar korrekt innan den tas i drift.
Transformationer kan påverka webhook-leveransens prestanda. Testa noggrant och håll transformationslogiken enkel och effektiv.

Övervaka webhook-loggar

Fliken Logs ger insyn i statusen för dina webhook-leveranser.
1

Navigate to Logs Tab

Gå till Developer → Webhooks och öppna fliken Logs.
2

Browse Delivery History

Visa en tabell över alla webhook-leveransförsök med kolumnerna Event type, Message ID, Event ID, Sent at, Attempted at, Response code och Duration.
3

Search and Filter

Använd sökfältet för att hitta specifika meddelanden efter ID eller händelsetyp. Filtrera efter status (Succeeded, Failed, Pending osv.) för att fokusera på de händelser du behöver undersöka.
4

View Message Details

Klicka på ett meddelande för att öppna meddelandedetaljsidan, som visar:
  • Den fullständiga webhook-payloaden
  • Varje leveransförsök med svarskod och varaktighet
  • Tidsstämpeln för varje försök
  • Eventuella felmeddelanden från din endpoint
Varje försök har åtgärden Replay, som spelar upp just det meddelandet igen utan att du behöver lämna sidan.

Aktivitetsövervakning

Gå till Developer → Webhooks och öppna fliken Activity för att se leveransprestanda för dina endpoints. Leveransaktivitet visar försök över tid, grupperade som Attempts per 5 minutes, Attempts per hour eller Attempts per day beroende på tidsfönstret. Varje stapel delas upp efter resultat och när du håller muspekaren över ett segment visas status, antalet försök och dess andel av totalen. På en endpoint sammanfattar Delivery stats (last 24h) på fliken Overview samma information för det senaste dygnet.
Kolumnen Error rate (24h) på fliken Endpoints visar snabbt vilka endpoints som behöver uppmärksammas.

Spela upp och återställ meddelanden

Hur du skickar ett meddelande igen beror på hur många meddelanden du behöver skicka:
  • Ett meddelande — öppna det från fliken Logs och använd åtgärden Replay på försöket.
  • Ett intervall med meddelanden — öppna endpointen, eftersom masslägena endast gäller en endpoint åt gången.

Massuppspelning

Öppna endpointen från Developer → Webhooks. Tre lägen är tillgängliga och vart och ett gäller endast den endpointen:
1

Open More Actions

Öppna More actions på endpointen och välj ett av de tre lägena ovan.
2

Set the Range

Fyll i det intervall som läget efterfrågar enligt tabellen.
3

Start the Run

Klicka på Recover eller Replay, beroende på vilket läge du valde.
Varje körning visas under Replay history på endpointens flik Overview, med läge, tidsintervall, status och antalet meddelanden som skickades igen.

E-postaviseringar

Webhooks-dashboarden erbjuder inte e-postaviseringar för misslyckade leveranser. Övervaka leveranser genom att gå till Developer → Webhooks och kontrollera flikarna Logs och Activity.

Distribuera till molnplattformar

Plattformsspecifika guider för att distribuera webhook-handlers till populära molnleverantörer:

Vercel

Distribuera webhooks till Vercel med serverless-funktioner

Cloudflare Workers

Kör webhooks på Cloudflares edge-nätverk

Supabase Edge Functions

Integrera webhooks med Supabase

Netlify Functions

Distribuera webhooks som Netlify-serverless-funktioner

Relaterad API-referens

Create Webhook

Skapa och konfigurera webhook-endpoints programmatiskt

List Webhooks

Hämta och hantera dina webhook-endpoints
Senast ändrad 26 september 2026