> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Recovery

> जब छोड़ी गई गाड़ी की पुनरुद्धार या सब्सक्रिप्शन डनिंग घटनाएँ होती हैं, तो आपके वेबहूक एन्डपॉइंट को भेजे गए पेलोड्स।

## छोड़ी गई गाड़ी पुनरुद्धार घटनाएँ

निम्नलिखित वेबहूक घटनाएँ छोड़ी गई गाड़ी पुनरुद्धार जीवनचक्र को ट्रैक करती हैं:

| घटना                           | विवरण                                                                                                                                         |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `abandoned_checkout.detected`  | एक छोड़ी गई चेकआउट का पता चला है। भेजा जाता है जब कोई भुगतान छोड़ा हुआ (असफल या अधूरा) पहचाना जाता है और पुनरुद्धार कार्यप्रवाह शुरू होता है। |
| `abandoned_checkout.recovered` | ग्राहक ने पुनरुद्धार लिंक के माध्यम से भुगतान पूरा किया। `recovered_payment_id` फ़ील्ड में सफल भुगतान आईडी होती है।                           |

### छोड़ी गई चेकआउट पेलोड फ़ील्ड्स

<ParamField body="payment_id" type="string" required>
  मूल भुगतान जो छोड़ दिया गया था। उत्पाद, राशि और मुद्रा विवरण देखने के लिए इसका उपयोग करें।
</ParamField>

<ParamField body="customer_id" type="string" required>
  ग्राहक जिसने चेकआउट छोड़ दिया।
</ParamField>

<ParamField body="abandonment_reason" type="string" required>
  चेकआउट क्यों छोड़ा गया। इनमें से एक:

  * `payment_failed` — ग्राहक ने भुगतान का प्रयास किया लेकिन यह असफल रहा
  * `checkout_incomplete` — ग्राहक ने चेकआउट देखा लेकिन कभी भुगतान का प्रयास नहीं किया
</ParamField>

<ParamField body="status" type="string" required>
  इस पुनरुद्धार प्रयास का वर्तमान जीवनचक्र स्थिति। इनमें से एक:

  * `abandoned` — पहचान हुआ, अभी तक कोई ईमेल नहीं भेजा गया
  * `recovering` — कम से कम एक पुनरुद्धार ईमेल भेजी गई
  * `recovered` — ग्राहक ने भुगतान पूरा किया
  * `exhausted` — सभी ईमेल भेजी गई या नया चेकआउट मिला
  * `opted_out` — ग्राहक ने अनसब्सक्राइब किया
</ParamField>

<ParamField body="abandoned_at" type="string" required>
  जिस समय चेकआउट को छोड़ा हुआ के रूप में पहचाना गया, उसका ISO 8601 टाइमस्टैम्प।
</ParamField>

<ParamField body="recovered_payment_id" type="string | null">
  सफल पुनरुद्धार भुगतान की भुगतान आईडी। `null` जब तक चेकआउट पुनः प्राप्त न हो।
</ParamField>

### उदाहरण: ACR वेबहूक्स को हैंडल करना

```javascript theme={null}
app.post('/webhooks/dodo', async (req, res) => {
  const event = req.body;

  switch (event.type) {
    case 'abandoned_checkout.detected':
      console.log(`Checkout abandoned: ${event.data.payment_id}`);
      console.log(`Reason: ${event.data.abandonment_reason}`);
      // Track abandonment in your analytics
      await trackAbandonment(event.data);
      break;

    case 'abandoned_checkout.recovered':
      console.log(`Checkout recovered: ${event.data.payment_id}`);
      console.log(`Recovery payment: ${event.data.recovered_payment_id}`);
      // Grant access, update records
      await handleRecovery(event.data);
      break;
  }

  res.json({ received: true });
});
```

***

## डनिंग घटनाएँ

निम्नलिखित वेबहूक घटनाएँ सब्सक्रिप्शन डनिंग जीवनचक्र को ट्रैक करती हैं:

| घटना                | विवरण                                                                                                                         |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `dunning.started`   | एक डनिंग प्रयास की जा रही है जो एक सब्सक्रिप्शन के लिए बनाई गई जो `on_hold` में प्रवेश हुआ या ग्राहक द्वारा रद्द कर दिया गया। |
| `dunning.recovered` | ग्राहक ने अपनी भुगतान विधि को अपडेट किया और परिणामी भुगतान सफल रहा। `payment_id` फ़ील्ड में सफल भुगतान आईडी होती है।          |

### डनिंग प्रयास पेलोड फ़ील्ड्स

<ParamField body="subscription_id" type="string" required>
  सब्सक्रिप्शन जिसने डनिंग प्रयास को ट्रिगर किया।
</ParamField>

<ParamField body="customer_id" type="string" required>
  ग्राहक जो सब्सक्रिप्शन का मालिक है।
</ParamField>

<ParamField body="trigger_state" type="string" required>
  सब्सक्रिप्शन स्थिति जिसने डनिंग को ट्रिगर किया। इनमें से एक:

  * `on_hold` — भुगतान विफलता के कारण सब्सक्रिप्शन रुका
  * `cancelled` — ग्राहक पोर्टल से ग्राहक ने रद्द कर दिया
</ParamField>

<ParamField body="status" type="string" required>
  इस डनिंग प्रयास की वर्तमान जीवनचक्र स्थिति। इनमें से एक:

  * `recovering` — डनिंग ईमेल भेजी जा रही हैं
  * `recovered` — ग्राहक ने भुगतान विधि अपडेट की और भुगतान सफल हुआ
  * `exhausted` — सभी ईमेल भेजी गई या सब्सक्रिप्शन स्थिति बदल गई
</ParamField>

<ParamField body="created_at" type="string" required>
  जिस समय डनिंग प्रयास बनाया गया, उसका ISO 8601 टाइमस्टैम्प।
</ParamField>

<ParamField body="payment_id" type="string | null">
  सफल पुनरुद्धार भुगतान की भुगतान आईडी। `null` पुनः प्राप्त करते समय।
</ParamField>

### उदाहरण: डनिंग वेबहूक्स को हैंडल करना

```javascript theme={null}
app.post('/webhooks/dodo', async (req, res) => {
  const event = req.body;

  switch (event.type) {
    case 'dunning.started':
      console.log(`Dunning started for subscription: ${event.data.subscription_id}`);
      console.log(`Trigger: ${event.data.trigger_state}`);
      // Track dunning in your system
      await trackDunning(event.data);
      break;

    case 'dunning.recovered':
      console.log(`Subscription recovered: ${event.data.subscription_id}`);
      console.log(`Recovery payment: ${event.data.payment_id}`);
      // Reactivate access, update records
      await handleDunningRecovery(event.data);
      break;
  }

  res.json({ received: true });
});
```

<Tip>
  पूरे डनिंग जीवनचक्र को ट्रैक करने के लिए दोनों `dunning.started` और `dunning.recovered` को सब्सक्राइब करें। अपने सिस्टम में नवाज़ेक की अवधि को रोकने या जोखिम में सब्सक्रिप्शन को चिह्नित करने के लिए `dunning.started` का उपयोग करें।
</Tip>

<CardGroup cols={2}>
  <Card title="Abandoned Cart Recovery" icon="cart-shopping" href="/features/recovery/abandoned-cart-recovery">
    ACR ईमेल क्रम और छूट प्रेरणाएँ कॉन्फिगर करें।
  </Card>

  <Card title="Subscription Dunning" icon="rotate" href="/features/recovery/subscription-dunning">
    लुप्त सब्सक्रिप्शन के लिए डनिंग ईमेल क्रम कॉन्फिगर करें।
  </Card>

  <Card title="Subscription Webhooks" icon="repeat" href="/developer-resources/webhooks/intents/subscription">
    संबंधित सब्सक्रिप्शन जीवनचक्र घटनाएँ जैसे `subscription.on_hold` और `subscription.cancelled`।
  </Card>
</CardGroup>

## वेबहूक पेलोड स्कीमा
