# Customer notifications

You'll need to send messages (typically emails) to your customers throughout an eCommerce transaction. These notifications provide customers with information on their purchases and inform them of important events. They also help keep your customers engaged throughout the process, leading to a more positive shopping experience and potentially increasing brand loyalty.

{% hint style="success" %}
You must send certain notifications to customers to access Digital River's [MOR/SOR](https://docs.digitalriver.com/digital-river-api/general-resources/glossary#merchant-of-record-seller-of-record-mor-sor) business model.
{% endhint %}

In many cases, you can [configure webhook(s)](https://docs.digitalriver.com/digital-river-api/administration/dashboard/developers/webhooks/creating-a-webhook) to listen for [events](https://docs.digitalriver.com/digital-river-api/order-management/events-and-webhooks-1/events-1) created by Digital River and use the data in these events to populate the emails before they get pushed to customers.

On this page, you'll find information on [order notifications](#order-notifications) and [subscription notifications](#subscription-notifications), as well as the events in the Digital River APIs (when available) that can be used to trigger them.

## Order notifications

In this section, you'll find basic information on what notifications to send to customers throughout an [order's lifecycle](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/orders/order-basics#the-order-lifecycle):

* [Order confirmation](#order-confirmation)
* [Shipment notification](#shipment-notification)
* [Successful cancellations](#successful-cancellation)
* [Failed cancellations](#failed-cancellation)
* [Delayed shipments, right to cancel](#delayed-shipment-right-to-cancel-1st-and-2nd-notices)
* [Refund confirmation](#refund-confirmation)
* [Product return instructions](#product-return-instructions)

### Order confirmation

This notification informs your customers that their order has been approved and is being processed. It provides customers with a record of their purchase and assures them that the transaction is authentic.

{% hint style="info" %}
In [Required Purchase Notifications](https://digitalriver.service-now.com/kb?sys_kb_id=801ab0c1dbe99910df9cddf5f49619b5\&id=kb_article_view\&sysparm_rank=1\&sysparm_tsqueryId=7f6979591b516d500af5524f034bcbd9) (refer to [Learning tools](https://docs.digitalriver.com/digital-river-api/general-resources/standards-and-certifications/compliance-requirements#accessing-the-learning-tools) for access information), you'll find a comprehensive list of what to include in this notification.
{% endhint %}

**Recommended** [**`type`**](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) **of triggering event**: [`order.accepted`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1/event-types#order.accepted)

{% hint style="success" %}
This same event type can also be used for [subscription acquisition notifications](#acquisition-confirmation).
{% endhint %}

Use the following table to learn which attributes in the [event's ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/events)[`data.object`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-data) contain values that can be used to populate the notification.

<table><thead><tr><th width="281">Notification information</th><th>Relevant attribute</th></tr></thead><tbody><tr><td>The identifier of the order</td><td><code>id</code></td></tr><tr><td>A description of each product</td><td><code>name</code>, (and optionally <code>description</code>, <code>image</code>, and <code>url)</code> in <code>items[].productDetails</code></td></tr><tr><td>The cost of each product</td><td><code>items[].amount</code></td></tr><tr><td>Assessed taxes</td><td><code>totalTax</code></td></tr><tr><td>Applied discounts</td><td><code>totalDiscount</code></td></tr><tr><td>Shipping costs</td><td><code>totalShipping</code></td></tr><tr><td>Total amount of order</td><td><code>totalAmount</code></td></tr></tbody></table>

### Shipment notification

Send this notification to customers when some or all of an order's goods have shipped. The message must indicate which items are in the shipment and ideally include delivery tracking information.

{% hint style="info" %}
In [Required Purchase Notifications](https://digitalriver.service-now.com/kb?id=kb_article_view\&sysparm_article=KB0010538) (refer to [Learning tools](https://docs.digitalriver.com/digital-river-api/general-resources/standards-and-certifications/compliance-requirements#accessing-the-learning-tools) for access information), you'll find a comprehensive list of what to include in this notification.
{% endhint %}

**Recommended** [**`type`**](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) **of triggering event**: [`fulfillment.created`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1/event-types#fulfillment.created)

Use the following table to learn which attributes in the [event's](https://www.digitalriver.com/docs/digital-river-api-reference/#tag/Events) [`data.object`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-data) contain values that can be used to populate the notification.

<table><thead><tr><th width="286">Notification information</th><th>Relevant attribute</th></tr></thead><tbody><tr><td>The identifier of the order</td><td><code>orderId</code> or <code>orderDetails.id</code></td></tr><tr><td>A description of each shipped product</td><td><code>name</code>, (and optionally <code>description</code>, <code>image</code>, and <code>url)</code> in <code>orderDetails.items[].productDetails</code></td></tr><tr><td>The quantity of each shipped product</td><td><code>items[].quantity</code></td></tr><tr><td>The name of the designated carrier</td><td><code>trackingCompany</code></td></tr><tr><td>The designated carrier's tracking number</td><td><code>trackingNumber</code></td></tr><tr><td>A url that allows customers to access tracking details</td><td><code>trackingUrl</code></td></tr></tbody></table>

### Successful cancellation

This notification informs customers that their order has been partially or fully cancelled. Regardless of the reason for the cancellation or who initiated the request, purchasers must be notified which items will not be fulfilled.

{% hint style="info" %}
In [Required Purchase Notifications](https://digitalriver.service-now.com/kb?id=kb_article_view\&sysparm_article=KB0010538) (refer to [Learning tools](https://docs.digitalriver.com/digital-river-api/general-resources/standards-and-certifications/compliance-requirements#accessing-the-learning-tools) for access information), you'll find a comprehensive list of what to include in this notification.
{% endhint %}

**Recommended** [**`type`**](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) **of triggering event**: [`fulfillment.created`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1/event-types#fulfillment.created) or [`order.cancelled`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1/event-types#order.cancelled)

If your application supports partial order cancellations, then we recommend listening for `fulfillment.created` and using it to trigger this message.

This is because the `state` of each `items[]` in an [order ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/orders)must be `cancelled` before Digital River creates an [event ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/events)with a [`type`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) of `order.cancelled`.

For example, if an [order](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/orders) contains multiple `items[]`, each with a `quantity` of `2`, and a customer uses your site’s UI to request that only one of those line items be fully cancelled, and, after approving that request, your system sends a [`POST /fulfillments`](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/fulfillments#fulfillments-1) with an `items[].cancelQuantity` of `2`, then Digital River generates `fulfillment.created` but not `order.cancelled`.

Use the following tables to learn which attributes in the [event's ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/events)[`data.object`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-data) contain values that can be used to populate the notification.

{% tabs %}
{% tab title="order.cancelled" %}

<table><thead><tr><th width="240">Notification information</th><th width="425">Relevant attribute</th></tr></thead><tbody><tr><td>The identifier of the order</td><td><code>id</code></td></tr><tr><td>A description of each cancelled product</td><td><code>name</code>, (and optionally <code>description</code>, <code>image</code>, and <code>url)</code> in <code>items[].productDetails</code></td></tr><tr><td>The quantity of each cancelled product</td><td><code>items.quantity</code></td></tr></tbody></table>
{% endtab %}

{% tab title="fulfillment.created" %}

<table><thead><tr><th width="235">Notification information</th><th>Relevant attribute</th></tr></thead><tbody><tr><td>The identifier of the order</td><td><code>orderId</code> or <code>orderDetails.id</code></td></tr><tr><td>A description of each cancelled product</td><td><code>name</code>, (and optionally <code>description</code>, <code>image</code>, and <code>url)</code> in <code>orderDetails.items[].productDetails</code></td></tr><tr><td>The quantity of each cancelled product</td><td><code>items.cancelQuantity</code></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Failed cancellation

If customers request to have an order partially or fully cancelled but you can't honor their request, send a notification informing them that their goods are still scheduled for fulfillment.

{% hint style="info" %}
In [Required Purchase Notifications](https://digitalriver.service-now.com/kb?id=kb_article_view\&sysparm_article=KB0010538) (refer to [Learning tools](https://docs.digitalriver.com/digital-river-api/general-resources/standards-and-certifications/compliance-requirements#accessing-the-learning-tools) for access information), you'll find a comprehensive list of what to include in this notification.
{% endhint %}

Unless [Digital River coordinates a fulfillment](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/handling-digital-river-coordinated-fulfillments), there are no [events ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/events)in the Digital River APIs that can be used to trigger this failed cancellation message.

### Delayed shipment, right to cancel (1st and 2nd notices)

If a shipment is delayed, notify customers and provide a revised date of when the goods are scheduled for delivery. If additional delays cause that date to be pushed out even further, send customers a second notice. In both messages, you must give customers the option to cancel their purchase.

{% hint style="info" %}
In [Physical Goods Required Purchase Notifications](https://digitalriver.service-now.com/kb?id=kb_article_view\&sysparm_article=KB0010540) (refer to [Learning tools](https://docs.digitalriver.com/digital-river-api/general-resources/standards-and-certifications/compliance-requirements#accessing-the-learning-tools) for access information), you'll find a comprehensive list of what to include in this notification.
{% endhint %}

Currently, no events in the Digital River APIs can trigger these delayed shipment notifications.

### Refund confirmation

This notification confirms that a customer's refund request has been successfully processed.

{% hint style="info" %}
In [Required Purchase Notifications](https://digitalriver.service-now.com/kb?sys_kb_id=801ab0c1dbe99910df9cddf5f49619b5\&id=kb_article_view\&sysparm_rank=1\&sysparm_tsqueryId=7f6979591b516d500af5524f034bcbd9) (refer to [Learning tools](https://docs.digitalriver.com/digital-river-api/general-resources/standards-and-certifications/compliance-requirements#accessing-the-learning-tools) for access information), you'll find a comprehensive list of what to include in this message.
{% endhint %}

**Recommended** [**`type`**](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) **of triggering event**: [`order.refunded`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1/event-types#order.refunded)

Use the following table to learn which attributes in the [event's ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/events)[`data.object`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-data) contain values that can be used to populate the notification.

<table><thead><tr><th width="234">Notification information</th><th>Relevant attribute</th></tr></thead><tbody><tr><td>The order identifier</td><td><code>id</code></td></tr><tr><td>Total amount refunded on order</td><td><code>refundedAmount</code></td></tr><tr><td>The amount of each individual refund on the order (optional)</td><td><code>payment.charges[].refunds[].amount</code></td></tr></tbody></table>

### Product return instructions

This message instructs customers on how to return [physical products](https://docs.digitalriver.com/digital-river-api/product-management/skus#how-products-are-classified-as-physical-or-digital) they've purchased.

{% hint style="info" %}
In [Recommended Purchase Notifications](https://digitalriver.service-now.com/kb?id=kb_article_view\&sysparm_article=KB0010539) (refer to [Learning tools](https://docs.digitalriver.com/digital-river-api/general-resources/standards-and-certifications/compliance-requirements#accessing-the-learning-tools) for access information), you'll find a comprehensive list of what to include in this notification.
{% endhint %}

Unless [Digital River coordinates a fulfillment](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/handling-digital-river-coordinated-fulfillments), no [events](https://docs.digitalriver.com/digital-river-api/order-management/events-and-webhooks-1/events-1) currently exist in the Digital River APIs that can be used to trigger this message.

## Subscription notifications

This section provides basic information on what notifications to send customers throughout a subscription's lifecycle and provides guidance on each notification's potential [triggering event](#triggering-events).

{% hint style="info" %}
Refer to [Subscription Purchase Notifications](https://digitalriver.service-now.com/kb?id=kb_article_view\&sysparm_article=KB0012073) (see [Learning tools](https://docs.digitalriver.com/digital-river-api/general-resources/standards-and-certifications/compliance-requirements#accessing-the-learning-tools) for access information) to be provided with a comprehensive list of what's required and what's recommended in these messages.
{% endhint %}

* [Acquisition confirmation](#acquisition-confirmation)
* [Trial conversion notification](#trial-conversion-notification)
* [Renewal reminder](#renewal-reminder)
* [Renewal confirmation](#renewal-confirmation)
* [Subscription cancelled notification](#subscription-cancelled-notification)
* [Updated terms](#updated-terms)
* [Billing failed notification](#billing-failed-notification)
* [Subscription failed notification](#subscription-failed-notification)
* [Payment method expiration](#payment-method-expiration)

### Triggering events

If you're using [Digital River's subscription service](https://docs.digitalriver.com/digital-river-api/using-our-services/subscriptions), we indicate which [`type`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) of [event](https://docs.digitalriver.com/digital-river-api/order-management/events-and-webhooks-1/events-1) can be used to trigger each [subscription notification](#subscription-notifications). However, if you engage a third-party subscription service (except for [acquisition confirmation notifications](#acquisition-confirmation)), you'll need to listen for relevant triggering events emanating from that service.

### Acquisition confirmation

This notification informs customers that they have successfully acquired one or more subscription-based products.

**Recommended** [**`type`**](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) **of** [**triggering event**](#triggering-events): [`order.accepted`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1/event-types#order.accepted)

Use the following table to learn which attributes in the [event's ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/events)[`data.object`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-data) contain values that can be used to populate the notification.

<table><thead><tr><th width="269">Notification information</th><th>Relevant attribute</th></tr></thead><tbody><tr><td>The identifier of the acquisition order</td><td><code>id</code></td></tr><tr><td>A description of each subscription product</td><td><p>For each <code>items[]</code> with <code>subscriptionInfo</code>, the</p><p><code>name</code>, (and optionally <code>description</code>, <code>image</code>, and <code>url)</code> in <code>productDetails</code></p></td></tr><tr><td>The cost of each subscription product</td><td>For each <code>items[]</code> with <code>subscriptionInfo</code>, the <code>amount</code></td></tr><tr><td>Assessed taxes</td><td><code>totalTax</code></td></tr><tr><td>Applied discounts</td><td><code>totalDiscount</code></td></tr><tr><td>Shipping costs</td><td><code>totalShipping</code></td></tr><tr><td>Total amount of order</td><td><code>totalAmount</code></td></tr></tbody></table>

### Trial conversion notification

This notification informs customers that their promotional trial period has ended, and they will be billed regularly for the subscription's products.

**Recommended** [**`type`**](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) **of** [**triggering event**](#triggering-events): [`subscription.extended`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1/event-types#subscription.extended)

Use the following table to learn which attributes in the [event's ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/events)[`data.object`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-data) contain values that can be used to populate the notification.

<table><thead><tr><th width="272">Notification information</th><th>Relevant attribute</th></tr></thead><tbody><tr><td>Description of subscription</td><td><p><code>invoice.description</code></p><p>For details, refer to <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/plans/plan-basics#name"><code>name</code> </a>in <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/plans/plan-basics">Plans basics</a>.</p></td></tr><tr><td>The date the free trial was activated</td><td><code>subscription.stateTransitions.activatedFree</code></td></tr><tr><td>The first scheduled billing date</td><td><code>subscription.nextInvoiceDate</code></td></tr><tr><td>A description of each product in the subscription</td><td><code>name</code>, (and optionally <code>description</code>, <code>image</code>, and <code>url</code>) in <code>invoice.items[].productDetails</code></td></tr><tr><td>The cost and quantity of each product in the subscription</td><td><code>amount</code> and <code>quantity</code> in <code>invoice.items[]</code></td></tr><tr><td>The payment method to be charged</td><td><code>invoice.payment.sources[]</code></td></tr><tr><td>Taxes to be assessed</td><td><code>invoice.totalTax</code></td></tr><tr><td>A subtotal of the amount that the customer is to be charged</td><td><code>invoice.subtotal</code></td></tr><tr><td>The total amount that the customer is to be charged</td><td><code>invoice.totalAmount</code></td></tr></tbody></table>

### Renewal reminder

This notification reminds customers that their recurring products are scheduled to renew soon. It should include the subscription's name and a description of its goods, the amount the customer will be charged, and the upcoming billing date.

**Recommended** [**`type`**](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) **of** [**triggering event**](#triggering-events): [`subscription.reminder`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1/event-types#subscription.reminder)

Use the following table to learn which attributes in the [event's ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/events)[`data.object`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-data) contain values that can be used to populate the notification.

<table><thead><tr><th width="277">Notification information</th><th>Relevant attribute</th></tr></thead><tbody><tr><td>Description of subscription</td><td><code>invoice.description</code><br><br>For details, refer to <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/plans/plan-basics#name"><code>name</code> </a>in <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/plans/plan-basics">Plans basics</a>.</td></tr><tr><td>Start date of subscription</td><td><code>subscription.stateTransitions.activated</code></td></tr><tr><td>The next scheduled billing date</td><td><code>subscription.nextInvoiceDate</code></td></tr><tr><td>A description of each product in the subscription</td><td><code>name</code>, (and optionally <code>description</code>, <code>image</code>, and <code>url</code>) in <code>invoice.items[].productDetails</code></td></tr><tr><td>The cost and quantity of each product in the subscription</td><td><code>amount</code> and <code>quantity</code> in <code>invoice.items[]</code></td></tr><tr><td>Payment method to be charged</td><td><code>invoice.payment.sources[]</code></td></tr><tr><td>Taxes to be assessed</td><td><code>invoice.totalTax</code></td></tr><tr><td>A subtotal of the amount that the customer is to be charged</td><td><code>invoice.subtotal</code></td></tr><tr><td>The total amount that the customer is to be charged</td><td><code>invoice.totalAmount</code></td></tr></tbody></table>

### Renewal confirmation

This notification informs customers that their subscription has been renewed and their designated payment method was successfully charged.

**Recommended** [**`type`**](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) **of** [**triggering event**](#triggering-events): [`subscription.extended`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1/event-types#subscription.extended)

Use the following table to learn which attributes in the [event's ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/events)[`data.object`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-data) contain values that can be used to populate the notification.

<table><thead><tr><th width="276">Notification information</th><th>Relevant attribute</th></tr></thead><tbody><tr><td>The order identifier</td><td><code>invoice.orderId</code></td></tr><tr><td>Description of subscription</td><td><code>invoice.description</code><br><br>For details, refer to <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/plans/plan-basics#name"><code>name</code> </a>in <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/plans/plan-basics">Plans basics</a>.</td></tr><tr><td>Start date of subscription</td><td><code>subscription.stateTransitions.activated</code></td></tr><tr><td>A description of each product in the subscription</td><td><code>name</code>, (and optionally <code>description</code>, <code>image</code>, and <code>url</code>) in <code>invoice.items[].productDetails</code></td></tr><tr><td>The cost and quantity of each product in the subscription</td><td><code>amount</code> and <code>quantity</code> in <code>invoice.items[]</code></td></tr><tr><td>The payment method that was charged</td><td><code>invoice.payment.sources[]</code></td></tr><tr><td>Assessed taxes</td><td><code>invoice.totalTax</code></td></tr><tr><td>Applied discounts</td><td><code>invoice.totalDiscount</code></td></tr><tr><td>A subtotal of the amount charged</td><td><code>invoice.subtotal</code></td></tr><tr><td>The total amount charged</td><td><code>invoice.totalAmount</code></td></tr><tr><td>Next scheduled billing date</td><td><code>subscription.nextInvoiceDate</code></td></tr></tbody></table>

### Subscription cancelled notification

This notification informs customers that their request to cancel a subscription has been successfully processed. It should ideally contain details on the cancelled products.

**Recommended** [**`type`**](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) **of** [**triggering event**](#triggering-events): [`subscription.updated`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1/event-types#subscription.updated)

Use the following table to learn which attributes in the [event's ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/events)[`data.object`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-data) contain values that can be used to populate the notification.

<table><thead><tr><th width="282">Notification information</th><th>Relevant attribute</th></tr></thead><tbody><tr><td>The effective cancellation date</td><td><code>stateTransitions.cancelled</code></td></tr><tr><td>A description of each cancelled subscription product</td><td><code>items[].skuId</code><br><br>To access product details, use this identifier to <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/skus#skus-id">retrieve the SKU</a>.</td></tr></tbody></table>

### Updated terms

This notification informs customers of an update to their subscription's terms and conditions. It should describe the upcoming changes and provide a way for customers to cancel the subscription if they don't agree with them.

**Recommended** [**`type`**](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) **of** [**triggering event**](#triggering-events): [`subscription.updated`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1/event-types#subscription.updated)

Use the following table to learn which attributes in the [event's ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/events)[`data.object`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-data) contain values that can be used to populate the notification.

<table><thead><tr><th width="282">Notification information</th><th>Relevant attribute</th></tr></thead><tbody><tr><td>The updated terms</td><td><code>planId</code><br><br>To access the updated terms and conditions, use this identifier to <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/plans#plans-id">retrieve the plan</a>.</td></tr><tr><td>A description of each product in the description</td><td><code>items[].skuId</code><br><br>To access product details, use this identifier to <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/skus#skus-id">retrieve the SKU</a>.</td></tr></tbody></table>

### Billing failed notification

This notification informs customers that an unsuccessful attempt was made to charge the payment method funding their subscription. To avoid losing access to their recurring products, the message should contain instructions on how customers can update or replace this payment method.

**Recommended** [**`type`**](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) **of** [**triggering event**](#triggering-events): [`subscription.payment_failed`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1/event-types#subscription.payment_failed)

Use the following table to learn which attributes in the [event's](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/events) [`data.object`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-data) contain values that can be used to populate the notification.

<table><thead><tr><th width="286">Notification information</th><th>Relevant attribute</th></tr></thead><tbody><tr><td>Description of subscription</td><td><code>invoice.description</code><br><br>For details, refer to <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/plans/plan-basics#name"><code>name</code> </a>in <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/plans/plan-basics">Plans basics</a>.</td></tr><tr><td>Payment method that could not be charged</td><td><code>invoice.payment.sources[]</code></td></tr><tr><td>The number of unsuccessful billing attempts that have been made so far</td><td><code>invoice.attemptCount</code></td></tr><tr><td>A description of the products that customers will lose access to unless they take action</td><td><code>name</code>, (and optionally <code>description</code>, <code>image</code>, and <code>url</code>) in <code>invoice.items[].productDetails</code></td></tr></tbody></table>

### Subscription failed notification

This message informs customers that their subscription has been deactivated because payment couldn't be collected during the designated billing period. You should include instructions on how customers can reactivate their subscriptions.

**Recommended** [**`type`**](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-types) **of** [**triggering event**](#triggering-events): [`subscription.failed`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1/event-types#subscription.failed)

Use the following table to learn which attributes in the [event's ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/events)[`data.object`](https://docs.digitalriver.com/digital-river-api/events-and-webhooks-1/events-1#event-data) contain values that can be used to populate the notification.

<table><thead><tr><th width="286">Notification information</th><th>Relevant attribute</th></tr></thead><tbody><tr><td>Description of failed subscription</td><td><code>planId</code><br><br>Use this identifier to <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/plans#plans-id">retrieve the plan</a> and access description information. For details, refer to <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/plans/plan-basics#name"><code>name</code> </a>in <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/plans/plan-basics">Plans basics</a>.</td></tr><tr><td>Description of products in failed subscription</td><td><code>items[].skuId</code><br><br>To access product details, use this identifier to <a href="https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/skus#skus-id">retrieve the SKU</a>.</td></tr><tr><td>The date that the subscription failed</td><td><code>stateTransitions.failed</code></td></tr></tbody></table>

### Payment method expiration

Before a subscription's renewal, this message informs customers that the designated payment method has either expired or will expire before the scheduled renewal date. The notification should provide customers with a way to either update the subscription's current payment method or replace it with a new one.

In the Digital River APIs, no [events](https://docs.digitalriver.com/digital-river-api/order-management/events-and-webhooks-1/events-1) currently exist that can be used to trigger this notification.
