Zum Hauptinhalt springen

Abonnement Webhook-Ereignisse

Die folgenden Webhook-Ereignisse stehen zur Verfügung, um Änderungen im Lebenszyklus von Abonnements zu verfolgen:
EreignisBeschreibung
subscription.activeAbonnement wurde erfolgreich aktiviert
subscription.updatedAbonnement-Objekt wurde aktualisiert (jede Feldänderung löst dieses Ereignis aus)
subscription.on_holdAbonnement wurde aufgrund fehlgeschlagener Verlängerung pausiert
subscription.renewedAbonnement wurde für den nächsten Abrechnungszeitraum verlängert
subscription.plan_changedAbonnement-Plan wurde aktualisiert, herabgestuft oder geändert
subscription.cancelledAbonnement wurde storniert
subscription.failedErstellung des Abonnements ist während der Mandatserstellung fehlgeschlagen
subscription.expiredAbonnement hat das Ende seiner Laufzeit erreicht

Verwendung von subscription.updated für Echtzeitsynchronisierung

Der subscription.updated Webhook wird ausgelöst, wenn sich ein beliebiges Abonnementfeld ändert, sodass Sie den Status Ihrer Anwendung ohne Polling synchron halten können:
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 });
});
Abonnieren Sie subscription.updated, um Echtzeitbenachrichtigungen über Änderungen an Abonnements zu erhalten, wodurch die Notwendigkeit entfällt, die API auf Updates zu überprüfen.

Webhook-Nutzlastschema

Response struct representing subscription details

addons
Addon Cart Response Item · object[]
required

Addons associated with this subscription

billing
object
required

Billing address details for payments

cancel_at_next_billing_date
boolean
required

Indicates if the subscription will cancel at the next billing date

created_at
string<date-time>
required

Timestamp when the subscription was created

currency
enum<string>
required

Currency used for the subscription payments

Verfügbare Optionen:
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
required

Customer details associated with the subscription

metadata
object
required

Additional custom data associated with the subscription

meters
object[]
required

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

next_billing_date
string<date-time>
required

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

on_demand
boolean
required

Wether the subscription is on-demand or not

payment_frequency_count
integer<int32>
required

Number of payment frequency intervals

payment_frequency_interval
enum<string>
required

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

Verfügbare Optionen:
Day,
Week,
Month,
Year
previous_billing_date
string<date-time>
required

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

product_id
string
required

Identifier of the product associated with this subscription

quantity
integer<int32>
required

Number of units/items included in the subscription

recurring_pre_tax_amount
integer<int32>
required

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

status
enum<string>
required

Current status of the subscription

Verfügbare Optionen:
pending,
active,
on_hold,
cancelled,
failed,
expired
subscription_id
string
required

Unique identifier for the subscription

subscription_period_count
integer<int32>
required

Number of subscription period intervals

subscription_period_interval
enum<string>
required

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

Verfügbare Optionen:
Day,
Week,
Month,
Year
tax_inclusive
boolean
required

Indicates if the recurring_pre_tax_amount is tax inclusive

trial_period_days
integer<int32>
required

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)