# Webhooks

## The Webhook Resource

A `Webhook` resource primarily refers to a certain URL where we send events that are happening from your account. You can check the [webhook](https://developers.paymongo.com/docs/webhooks) section of our integration guide to find out some good use cases for webhooks.

[More Details](https://developers.paymongo.com/reference/webhook-resource)

## Creating a Webhook

```javascript
/**
 * These are the required properties
 * @param {Object} data Data payload
 * @param {Object} data.attributes Payload attributes
 * @param {string} data.attributes.url The destination URL of the events that happened from your account. Please make sure that the URL is publicly accessible in order for you to receive the event.
 * @param {string[]} data.attributes.events The list of events to be sent to this webhook. Possible value in the meantime is source.chargeable.
 */
const result = await paymongo.webhooks.create(data);

```

#### Payload

```javascript
{
  data: {
    attributes: {
      url: 'https://yourwebsite.com/webook-listener', // Developer's note: this is unique in paymongo. You can't create multiple webhooks with same url.
      events: ['source.chargeable'] // The only event supported for now is 'source.chargeable'.
    }
  }
}

```

## Listing Webhooks

```javascript
const result = await paymongo.webhooks.list();
```

#### Resultjavas

```javascript
{
  data: [] // Array of webhooks
}
```

## Retrieving a Webhook

```javascript
/**
 * @param {string} id Webhook id
 */
const result = await paymongo.webhooks.retrieve(id);

```

## Toggling a Webhook

Enable or disable a webhook.

```javascript
/**
 * @param {string} id Webhook id
 * @param {string} action Toggle options 'enable' or 'disable'
 */
const result = await paymongo.webhooks.toggle(id, action);

```
