Hoppa till huvudinnehåll

Prenumerations Webhook Händelser

Följande webhook-händelser är tillgängliga för att spåra förändringar i prenumerationens livscykel:
HändelseBeskrivning
subscription.activePrenumerationen har aktiverats framgångsrikt
subscription.updatedPrenumerationsobjektet har uppdaterats (ändring av något fält utlöser denna händelse)
subscription.on_holdPrenumerationen har satts på paus på grund av misslyckad förnyelse
subscription.renewedPrenumerationen har förnyats för nästa faktureringsperiod
subscription.plan_changedPrenumerationsplanen har uppgraderats, nedgraderats eller modifierats
subscription.cancelledPrenumerationen har avbrutits
subscription.failedSkapandet av prenumerationen misslyckades under skapandet av mandatet
subscription.expiredPrenumerationen har nått slutet av sin period

Använda subscription.updated för Realtids-Synkronisering

Webhooken subscription.updated utlöses när som helst något prenumerationsfält ändras, vilket gör att du kan hålla din applikationsstatus synkroniserad utan att behöva poll:a:
app.post('/webhooks/dodo', async (req, res) => {
  const event = req.body;
  
  if (event.type === 'subscription.updated') {
    const subscription = event.data;
    
    // Sync subscription changes to your database
    await syncSubscription(subscription.subscription_id, {
      status: subscription.status,
      next_billing_date: subscription.next_billing_date,
      metadata: subscription.metadata,
      // ... other fields you want to track
    });
    
    console.log(`Subscription ${subscription.subscription_id} updated`);
  }
  
  res.json({ received: true });
});
Prenumerera på subscription.updated för att få realtidsnotifikationer om eventuella prenumerationsändringar, vilket eliminerar behovet av att poll:a API:et för uppdateringar.

Webhook Payload Schema

Response struct representing subscription details

addons
Addon Cart Response Item · object[]
obligatorisk

Addons associated with this subscription

billing
object
obligatorisk

Billing address details for payments

cancel_at_next_billing_date
boolean
obligatorisk

Indicates if the subscription will cancel at the next billing date

created_at
string<date-time>
obligatorisk

Timestamp when the subscription was created

currency
enum<string>
obligatorisk

Currency used for the subscription payments

Tillgängliga alternativ:
AED,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BWP,
BYN,
BZD,
CAD,
CHF,
CLP,
CNY,
COP,
CRC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HRK,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRU,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SEK,
SGD,
SHP,
SLE,
SLL,
SOS,
SRD,
SSP,
STN,
SVC,
SZL,
THB,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VES,
VND,
VUV,
WST,
XAF,
XCD,
XOF,
XPF,
YER,
ZAR,
ZMW
customer
object
obligatorisk

Customer details associated with the subscription

metadata
object
obligatorisk

Additional custom data associated with the subscription

meters
object[]
obligatorisk

Meters associated with this subscription (for usage-based billing)

next_billing_date
string<date-time>
obligatorisk

Timestamp of the next scheduled billing. Indicates the end of current billing period

on_demand
boolean
obligatorisk

Wether the subscription is on-demand or not

payment_frequency_count
integer<int32>
obligatorisk

Number of payment frequency intervals

payment_frequency_interval
enum<string>
obligatorisk

Time interval for payment frequency (e.g. month, year)

Tillgängliga alternativ:
Day,
Week,
Month,
Year
previous_billing_date
string<date-time>
obligatorisk

Timestamp of the last payment. Indicates the start of current billing period

product_id
string
obligatorisk

Identifier of the product associated with this subscription

quantity
integer<int32>
obligatorisk

Number of units/items included in the subscription

recurring_pre_tax_amount
integer<int32>
obligatorisk

Amount charged before tax for each recurring payment in smallest currency unit (e.g. cents)

status
enum<string>
obligatorisk

Current status of the subscription

Tillgängliga alternativ:
pending,
active,
on_hold,
cancelled,
failed,
expired
subscription_id
string
obligatorisk

Unique identifier for the subscription

subscription_period_count
integer<int32>
obligatorisk

Number of subscription period intervals

subscription_period_interval
enum<string>
obligatorisk

Time interval for the subscription period (e.g. month, year)

Tillgängliga alternativ:
Day,
Week,
Month,
Year
tax_inclusive
boolean
obligatorisk

Indicates if the recurring_pre_tax_amount is tax inclusive

trial_period_days
integer<int32>
obligatorisk

Number of days in the trial period (0 if no trial)

cancelled_at
string<date-time> | null

Cancelled timestamp if the subscription is cancelled

discount_cycles_remaining
integer<int32> | null

Number of remaining discount cycles if discount is applied

discount_id
string | null

The discount id if discount is applied

expires_at
string<date-time> | null

Timestamp when the subscription will expire

payment_method_id
string | null

Saved payment method id used for recurring charges

tax_id
string | null

Tax identifier provided for this subscription (if applicable)