# Stay up-to-date proactively with Product Change Notifications

{% hint style="warning" %}
This section describes Tiqets ***new*** Product Change Notifications system, launched in November 2025.&#x20;

We are still supporting the old PCN system for now, and if you still use it and need help you can find its description there: [\[Deprecated\] PCN  API](/basics/openapi/deprecated-pcn-api.md)
{% endhint %}

### Introduction

By explicitly subscribing to PCN for specific products you ensure notifications are relevant for your business.

Each notification informs you about what type of change a product has undergone, and includes helpful type-specific information, such as estimated reopening time frames or a suggested fallback product you can promote. This allows you to keep your catalogue and content accurate, avoid promoting unavailable options, and continue offering relevant alternative.

Read the guideline below to find 1- what notifications are sent, 2- how to subscribe to notifications, and 3- how to handle the notifications & web-hook security.

## Which notifications are sent?

When a product’s **content or sale status changes,** notifications are sent. This typically means:

* the product's description, or another aspect such as variants, has changed;
* a product that was available for booking becomes unavailable;
* a previously unavailable product becomes available again.

We send one separate notification per product when something changes, but if a product undergoes multiple changes at once the notification can contain multiple `changes` objects.

For each change, the type of event is described by the `change_type` field. The type can be `checkout_disabled`, `checkout_enabled` and `product_details_update`. Each type comes with its own set of relevant fields:

* when a product becomes unbookable, we also provide you with a reason, an expected reopening timeframe, and an alternative product so you don't waste time trying to sell a disabled product and can instead switch to an available similar product;
* when a product becomes bookable again, there's no additional information;
* when a product content is changed, we give you the field's name & type, and the old & new values so you can easily update your website. These can cover description, what's included, variant list, tags, exhibitions, starting time, languages, etc.

#### Example

Here's an example of a `checkout_disabled` type change notification.

```json
{
          "change_type": "checkout_disabled",
          "reason_code": "out_of_season",
          "expected_reopening": "more_than_month",
          "recommended_alternative_product_id": 1038000
        }
```

{% hint style="info" %}

## Notification delays

Notifications are not sent instantly.\
The notifications for products will be held for several minutes, to avoid spamming you when multiple mutations are being done to the same product. Only the last mutation of the same type will be sent to you.
{% endhint %}

See full description of the webhooks here: [\[new\] Product Change Notifications](/basics/openapi/webhooks/new-product-change-notifications.md)<br>

## Subscribing to PCN

To start receiving product change updates, you need to create a subscription. Subscriptions define which products you want to monitor, which notifications you're interested in, and where Tiqets should send the notifications.

#### Create a subscription

```
PUT /v2/product-change-notification/<your_chosen_id>
```

Example:

```json
{
    "subscription_type": "product_ids", 
    "entity_ids": [123456], 
    "change_types": ["product_details_update", "checkout_enabled", "checkout_disabled"],
    "callback_url": "https://mydomain.com/webhooks/tiqets/ieAsjDlcm67hJacH643Ahc/"
}
```

Each subscription specifies:

* a Subscription ID that you choose yourself and that allows you to track your subscriptions;
* where you want to receive our notifications: the `callback_url`;
* which change types you're interested in, with the field  `change_types` (you can select the types `checkout_disabled`, `checkout_enabled` and/or `product_details_update`);
* which products you want to receive notifications about. There's different ways you can select one or multiple products: with the field `subscription_type` *you* can choose how to select products.
  * Use `product_ids` if you want to receive notifications only on specific products. You'll have to provide the IDs of these products in `entity_ids`;
  * Use `experience_ids` if you want to receive notifications for all products in specific venues or activities. You'll have to provide the IDs of the experiences in `entity_ids`;&#x20;
  * Use `products_i_sell` if you want to receive notifications for *all* the products that you have sold more than 5 times in the past 12 months. This list is kept up to date automatically. You don't need to provide `entity_ids`.

You can create one subscription with multiple products, or multiple subscriptions. For example, you might want separate subscriptions for your different markets or to separate high-priority and low-priority products.&#x20;

After creating the subscription, you will start receiving notifications for the selected products.

#### Manage your subscriptions&#x20;

You can also manage your existing PCN subscription using the Tiqets Distributor API.&#x20;

See endpoints full technical description here: [\[New\] Product Change Notifications API](/basics/openapi/new-product-change-notifications-api.md).<br>

## How to handle the notifications

When a product change is detected, Tiqets sends a `POST` request to the endpoint you specified while subscribing. This request contains a JSON payload such as this one:

{% code overflow="wrap" %}

```json
{ "subscription_id": "1234",
  "products": [
    {
      "product_id": 1098863,
      "changes": [
        {
          "change_type": "product_details_update",
          "field_name": "whats_included",
          "type": "string",
          "old_value": "* Access to Aquarium Tunnel\r\n
                        * Access to Underwater Zoo\r\n
                        * Access to Penguin Cove",
          "new_value": "* Access to Aquarium Tunnel\r\n
                        * Access to Underwater Zoo\r\n
                        * AED20 Aquarium retail shop voucher"}]}]}
```

{% endcode %}

Your system should be prepared to:

1. **Acknowledge the notification**\
   Return an **HTTP 200** response to confirm successful delivery.\
   If your server does not respond with a 200 status code, Tiqets will retry a few times and if it keeps failing we'll mark your subscription as `degraded`. After a month in this status, your subscription will be `cancelled`.\
   Note: the response body is ignored; only the HTTP status code matters.
2. **Update your catalog based on the notification**\
   The notification payload contains all the information needed to update the product’s content or sale status immediately. You should deactivate products that became unavailable, and when a `recommended_alternative_product_id` is provided, consider promoting the suggested fallback product to maintain your conversion flow and avoid losing sales.
3. **Use the additional context to plan ahead**\
   You can also make use of the following fields to improve your catalog management:
   * **`reason`**: Optionally display or log why the product is unavailable (e.g., seasonal closure).
   * **`expected_reopening`**: Plan when to relist the product based on its expected return timeframe (and/or just watch out for the `checkout_enabled` notification).

#### Webhook Security

Managing subscriptions requires you to [sign your requests](/integration-guides/jwt-signing-for-secure-api-requests.md), but *no authentication mechanism applies to the HTTP calls Tiqets performs to you*. For webhooks to work you need to open up one or multiple endpoints that are publicly accessible.

To ensure those endpoint(s) don't get abused, here are two suggestions for increased security:

1. Whitelist our outgoing IP addresses (see list below);
2. Use very hard-to-guess URLs when subscribing to notifications, such as `https://mydomain.com/webhooks/tiqets/ieAsjDlcm67hJacH643Ahc/`. You could even update that URL periodically.

| Tiqets IPs - API sandbox                                                                                                                                                                                                                                                                 | Tiqets IPs - Production environment                                                                                                                                                                                                         |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <ul><li>99.80.191.99 (<a href="http://out.acceptance.steq.it/">out.acceptance.steq.it</a>)</li><li>63.35.71.28 (<a href="http://out.acceptance.steq.it/">out.acceptance.steq.it</a>)</li><li>63.35.56.49 (<a href="http://out.acceptance.steq.it/">out.acceptance.steq.it</a>)</li></ul> | <ul><li>99.81.16.132 (<a href="http://out.tiqets.com/">out.tiqets.com</a>)</li><li>54.77.55.83 (<a href="http://out.tiqets.com/">out.tiqets.com</a>)</li><li>34.246.210.158 (<a href="http://out.tiqets.com/">out.tiqets.com</a>)</li></ul> |


---

# 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://developers.tiqets.dev/integration-guides/webhooks/stay-up-to-date-proactively-with-product-change-notifications.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.
