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

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://docs.goshippo.com/feedback

```json
{
  "path": "/docs/Tracking/CreatingWebhooks",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# Accessing webhook subscriptions

> Register, retrieve, update, and delete webhook subscriptions programmatically using the Shippo Webhooks API.

## Registering a webhook for your account

To register a webhook for your account, make a POST request to the webhooks endpoint `https://api.goshippo.com/webhooks`.

```shell cURL theme={null}
curl --location --request POST 'https://api.goshippo.com/webhooks' \
--header 'Authorization: ShippoToken <API_TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "url": "<CLIENT_OWNED_URL>",
    "event": "<YOUR_EVENT>",
    "is_test": "true" //this value is defaulted to false and is optional
}'
```

The event field can take one of the following five values:

* `transaction_created`
* `transaction_updated`
* `track_updated`
* `batch_created`
* `batch_purchased`

Additionally, you can set the `event` to `all`. This acts as a catch-all for all supported events.

A successful call to the registration endpoint will return a JSON object.

```json theme={null}
{
    "active": true,
    "event": "<YOUR_EVENT>",
    "object_created": "2021-06-28T15:44:11.647Z",
    "object_id": "<WEBHOOK_OBJECT_ID_GUID>",
    "object_updated": "2021-06-28T15:44:11.647Z",
    "object_owner": "<Account Owner Email>",
    "url": "<CLIENT_REGISTERED_URL>",
    "is_test": true
}
```

## Retrieving a single webhook

To retrieve a webhook, make a GET request to the webhooks endpoint with the object ID of your webhook `https://api.goshippo.com/webhooks/<WEBHOOK_OBJECT_ID_GUID>`.

```shell cURL theme={null}
curl --location --request GET 'https://api.goshippo.com/webhooks/<WEBHOOK_OBJECT_ID_GUID>' \
--header 'Authorization: ShippoToken <API_TOKEN>' \
--header 'Content-Type: application/json' 
```

A successful call returns a JSON object similar to this.

```json theme={null}
{
    "active": true,
    "event": "<YOUR_EVENT>",
    "object_created": "2021-06-28T15:44:11.647Z",
    "object_id": "<WEBHOOK_OBJECT_ID_GUID>",
    "object_updated": "2021-06-28T15:44:11.647Z",
    "object_owner": "<Account Owner Email>",
    "url": "<CLIENT_REGISTERED_URL>",
    "is_test": true
}
```

To get a paginated list of all webhooks associated with your account, make a GET request to `https://api.goshippo.com/webhooks` without an object ID.

## Retrieving all active webhooks

To retrieve a list of all webhooks associated with your account, make a GET request to the webhooks endpoint `https://api.goshippo.com/webhooks/`.

```shell cURL theme={null}
curl --location --request GET 'https://api.goshippo.com/webhooks/' \
--header 'Authorization: ShippoToken <API_TOKEN>' \
--header 'Content-Type: application/json' 
```

A successful call returns a JSON object similar to this.

```json theme={null}
{
    {
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "active": true,
      "event": "track_updated",
      "object_created": "2023-01-26T17:37:56.848Z",
      "object_id": "9c9783fa0e1148c98eba040141801119",
      "object_updated": "2023-01-26T17:37:56.848Z",
      "object_owner": "<Account Owner Email>",
      "url": "<CLIENT_REGISTERED_URL>",
      "is_test": false
    },
    {
      "active": true,
      "event": "track_updated",
      "object_created": "2023-01-26T17:36:34.715Z",
      "object_id": "a346d9e481b14dcfb6df48c19bfeacca",
      "object_updated": "2023-01-26T17:36:34.715Z",
      "object_owner": "<Account Owner Email>",
      "url": "<CLIENT_REGISTERED_URL>",
      "is_test": true
    }
  ]
}
}
```

## Deleting a webhook subscription

To delete a webhook subscription, make a DELETE request to the webhook endpoint with the object ID of your webhook `https://api.goshippo.com/webhooks/<WEBHOOK_OBJECT_ID_GUID>`.

```shell cURL theme={null}
curl --location --request DELETE 'https://api.goshippo.com/webhooks/<WEBHOOK_OBJECT_ID_GUID>' \
--header 'Authorization: ShippoToken <API_TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw ''
```

This returns no body but will return a successful **2XX** status.
