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

# अपने सिस्टम पर webhooks भेजें

> जब Foliant कोई दस्तावेज़ बनाता है या कोई एक्सपोर्ट पूरा करता है, तब Webhooks इंटीग्रेशन आपके अपने endpoint पर एक साइन किया हुआ JSON इवेंट भेजता है।

**Webhooks** इंटीग्रेशन डेवलपर्स के लिए है। जब भी Foliant में कुछ होता है, यह आपके चुने हुए HTTPS पते पर एक JSON इवेंट भेजता है। इससे आपका अपना सिस्टम उस पर कार्रवाई कर सकता है, जैसे हर इनवॉइस PDF को सहेजना या पूरा हुआ एक्सपोर्ट उठाना।

Webhooks अभी बीटा में है। अगर आपको यह **सेटिंग्स › इंटीग्रेशन** में नहीं दिखता, तो यह अभी आपके स्टोर के लिए उपलब्ध नहीं है। एक्सेस के बारे में पूछने के लिए सपोर्ट से संपर्क करें।

## इवेंट

| इवेंट | कब भेजा जाता है |
| - | - |
| `document.generated` (**Document generated**) | जब Foliant किसी ऑर्डर के लिए दस्तावेज़ बनाता है: डाउनलोड, एक्सपोर्ट या PDF डिलीवरी ईमेल। |
| `export.completed` (**Export completed**) | जब कोई बल्क एक्सपोर्ट तैयार हो जाता है। |

## Webhooks कनेक्ट करें

1. Foliant में, **सेटिंग्स › इंटीग्रेशन** पर जाएँ।

2. **Webhooks** पर, **कनेक्ट करें** पर क्लिक करें।

3. सेटिंग्स भरें:

   | फ़ील्ड | क्या डालें |
   | - | - |
   | **Endpoint URL** | वह पता जिस पर Foliant इवेंट भेजता है। इसमें HTTPS होना ज़रूरी है, जैसे `https://example.com/webhooks/foliant`। |
   | **Signing secret** | वैकल्पिक। secret होने पर हर अनुरोध साइन किया जाता है, ताकि आप जाँच सकें कि वह Foliant से आया है। |
   | **Events** | भेजे जाने वाले इवेंट। डिफ़ॉल्ट रूप से दोनों चुने होते हैं। |

4. **कनेक्ट करें** पर क्लिक करें।

आप बाद में इंटीग्रेशन के पेज पर **सेटिंग्स** में URL, secret और इवेंट बदल सकते हैं।

## हर अनुरोध में क्या होता है

Foliant JSON body के साथ एक `POST` अनुरोध भेजता है:

```json theme={null}
{
  "id": "a unique delivery id",
  "event": "document.generated",
  "created_at": "2026-10-11T09:30:00+00:00",
  "shop": "your-store.myshopify.com",
  "data": { }
}
```

### `document.generated` डेटा

* `template`: टेम्पलेट का `uuid` और `name`।
* `document_type`: `invoice`, `credit_note`, `quote`, या दूसरे दस्तावेज़ों के लिए खाली।
* `order`: उसका `id`, `name` और `type` (ऑर्डर या ड्राफ़्ट ऑर्डर)।
* `refund_id` और `fulfillment_id`, जब दस्तावेज़ किसी रिफ़ंड या शिपमेंट के लिए हो।
* `document_number` और `issued_at`, नंबर वाले दस्तावेज़ों के लिए।
* `source`: दस्तावेज़ कैसे बना, जैसे `download`, `admin_download`, `export` या `email`।
* `export`: एक्सपोर्ट की ID, जब दस्तावेज़ किसी एक्सपोर्ट का हिस्सा हो।
* `generated_at`।

### `export.completed` डेटा

* `export`: उसका `uuid`, `order_type`, `template_uuids`, `orders` की संख्या, `orders_skipped` (चुने जाने के बाद डिलीट किए गए) और `documents`, `requested_by` (`merchant` या `customer`) और `completed_at`।
* `download_url`: एक्सपोर्ट डाउनलोड करने का लिंक, और `download_url_expires_at`, यानी वह लिंक कब काम करना बंद करेगा।
* `download_expires_at`: एक्सपोर्ट खुद कब एक्सपायर होगा।

इवेंट में ID और संख्याएँ होती हैं, ग्राहकों के ईमेल पते नहीं।

### हेडर

| हेडर | क्या होता है |
| - | - |
| `X-Foliant-Event` | इवेंट, जैसे `document.generated`। |
| `X-Foliant-Delivery` | डिलीवरी की यूनिक ID (body में `id` के समान)। |
| `X-Foliant-Timestamp` | भेजे जाने का समय, Unix सेकंड में। |
| `X-Foliant-Signature` | `sha256=` और उसके बाद सिग्नेचर। केवल तब, जब आपने signing secret सेट किया हो। |

## सिग्नेचर जाँचें

सिग्नेचर timestamp, एक पूर्ण विराम (full stop) और raw request body (`<timestamp>.<body>`) का hex HMAC-SHA256 है, जिसमें आपका signing secret key के रूप में इस्तेमाल होता है। इसे अपनी तरफ़ से कंप्यूट करें और `X-Foliant-Signature` में `sha256=` के बाद वाली वैल्यू से मिलाएँ। raw body ठीक वैसे ही इस्तेमाल करें, जैसी आपको मिली है।

## रिस्पॉन्स और दोबारा कोशिश

* कोई भी 2xx रिस्पॉन्स डिलीवर माना जाता है।
* अगर आपका endpoint 5xx एरर, 408 या 429 लौटाता है, या 10 सेकंड में जवाब नहीं देता, तो Foliant बाद में फिर से कोशिश करता है। हर बार वह थोड़ा ज़्यादा इंतज़ार करता है, अधिकतम 5 कोशिशों तक।
* दूसरे 4xx रिस्पॉन्स अंतिम होते हैं: Foliant उन पर दोबारा कोशिश नहीं करता।
* हर इवेंट प्रति दस्तावेज़ या एक्सपोर्ट एक बार डिलीवर होता है। सफल होने के बाद दोबारा कोशिश उसे कभी दो बार नहीं भेजती।

हर डिलीवरी इंटीग्रेशन के पेज पर **गतिविधि** में दिखती है, जहाँ आप किसी विफल डिलीवरी के लिए **फिर से कोशिश करें** पर क्लिक कर सकते हैं। [इंटीग्रेशन गतिविधि](https://foliant-help.iforiti.com/hi/integrations/integration-activity.md) देखें।

## संबंधित लेख

* [इंटीग्रेशन कनेक्ट और मैनेज करें](https://foliant-help.iforiti.com/hi/integrations/connect-an-integration.md)
* [इंटीग्रेशन गतिविधि](https://foliant-help.iforiti.com/hi/integrations/integration-activity.md)
* [Shopify Flow से ऑटोमेट करें](https://foliant-help.iforiti.com/hi/integrations/shopify-flow.md)
* [PDF एक्सपोर्ट करें](https://foliant-help.iforiti.com/hi/exports/export-pdfs.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.