# How to implement webhooks?

{% hint style="info" %}
**Note:** The Webhooks are only functional for Plum Pro APIs but not with Storefront Integration, Plum Pro Dashboard & Xoxo Link Integrations
{% endhint %}

**Step 1:** To receive the updated ('delivered' or 'canceled') reward delivery status, you will have to set up your callback URL for the listener to push the status to the required platforms.

<figure><img src="/files/va5MPrSyizp6i1kju6IS" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Important** <br>

**Note 1:** These statuses are asynchronous, and to ensure that they aren't blocked, **it's vital to whitelist Xoxoday's callback URL IP: 52.76.120.90**. Doing so will help facilitate uninterrupted callback notifications from this IP.

**Note 2:** Our systems will send an attempt to post to a registered webhook URL thrice, after which the webhook URL will be ‘disabled’. However, this can be ‘enabled’ through our dashboard again.
{% endhint %}

## Payload

```
{
'id': orderID<Number(20)>,
'data': {
  'orderId': <Number(11)>,
  'poNumber': <String(100)>, 
  'orderDate': <String(19)>, 
  'deliveryStatus': <String(9)[delivered|Canceled]>
 },
  'createdAt': <String(19)> 
}

Legend: <DataType(size)>
```

## Parameters

<table><thead><tr><th width="202">Parameter Name</th><th width="140">Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>ID</strong></td><td>Integer(20)</td><td>Unique Webhook ID to identify that the webhook is thrown</td></tr><tr><td><strong>Order ID</strong></td><td>Integer(11)</td><td>Unique Xoxo Order ID whenever an order is placed via the Plum API</td></tr><tr><td><strong>PO number</strong></td><td>String(100)</td><td>PoNumber if provided by the client while placing an order</td></tr><tr><td><strong>OrderDate</strong></td><td>String(19)</td><td>Date when an order is placed</td></tr><tr><td><strong>Delivery Status</strong></td><td>String(9)</td><td>Order delivery status. Can be delivered or canceled</td></tr><tr><td><strong>CreatedAt</strong></td><td>String(19)</td><td>When callback was invoked</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://xoxoday.gitbook.io/plum/developer-resources/overview-of-reward_api/webhooks/how-to-implement-webhooks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
