---
title: "What does the App Store notification SUBSCRIBED mean?"
description: "SUBSCRIBED means a customer subscribed to an auto-renewable subscription. Subtype INITIAL_BUY is the first time, RESUBSCRIBE a return. Grant access and record the purchase."
url: https://revenuedot.app/docs/notifications/apple-subscribed
---

# What does the App Store notification SUBSCRIBED mean?

The App Store notification SUBSCRIBED means a customer subscribed to an auto-renewable subscription, for the first time or again.

## Quick facts

| | |
|---|---|
| Notification | `notificationType` `SUBSCRIBED` |
| Where | App Store Server Notifications v2 (`responseBodyV2DecodedPayload`) |
| Sent by | The App Store server, to your notification URL |
| What Apple says | The customer subscribed to an auto-renewable subscription. The subtype says whether it is the first purchase or a resubscribe. |

## What triggers it

- Subtype `INITIAL_BUY`: the customer bought or got access through Family Sharing to a subscription in the group for the first time, including by redeeming an offer code.
- Subtype `RESUBSCRIBE`: the customer resubscribed, or got access through Family Sharing, to the same subscription or another one in the same subscription group, including through a promotional, offer code or win-back offer.
- To tell whether an offer was used, Apple says to check `offerType` in the decoded transaction (`JWSTransactionDecodedPayload`).

## What your server should do

1. Verify the `signedPayload` with Apple's App Store Server Library (`SignedDataVerifier.verifyAndDecodeNotification`) before you act on anything in it.
2. Decode `signedTransactionInfo`, find the customer through your own account link (for example the `appAccountToken`) and grant the entitlement until `expiresDate`.
3. Treat `RESUBSCRIBE` as access again, not as a second first purchase, so your counts of new subscribers stay right.
4. Answer HTTP 200 (any code from 200 to 206) once you have stored the notification. Apple retries other answers five times, at 1, 12, 24, 48 and 72 hours after the previous attempt, so make your handler safe to run twice (the payload carries a `notificationUUID`).

## Example

```javascript
// Run on the decoded payload, after you verified Apple's signature.
const notification = {"notificationType":"SUBSCRIBED","data":{"environment":"Sandbox","bundleId":"com.example.app"}};

function decide(n) {
  if (n.notificationType !== "SUBSCRIBED") return "ignore";
  return n.subtype === "RESUBSCRIBE" ? "grant access, count a returning subscriber" : "grant access, count a new subscriber";
}

console.log(decide(notification));
```

*Run-checked: `npm run check:snippets` runs this snippet with Node and compares its output with `count a new subscriber` (checked 2026-10-03).*

## How RevenueDot handles it

RevenueDot verifies Apple's signature, checks the bundle ID, stores the notification and answers 200. A purchase RevenueDot has not seen is applied only when the app's **Track new purchases from server-to-server notifications** setting is on. `SUBSCRIBED` is one of the types that update the stored purchase from the signed transaction and renewal info. A chain RevenueDot has not stored before produces `INITIAL_PURCHASE`; a chain it already holds with a new period produces `RENEWAL`, because RevenueCat reports a lapsed customer who resubscribes as a renewal and RevenueDot copies that. The subtype is not used; the stored state is.

## Related

- [What does the App Store notification DID_RENEW mean?](https://revenuedot.app/docs/notifications/apple-did-renew.md)
- [What does the App Store notification OFFER_REDEEMED mean?](https://revenuedot.app/docs/notifications/apple-offer-redeemed.md)
- [What does the App Store notification EXPIRED mean?](https://revenuedot.app/docs/notifications/apple-expired.md)
- [Which webhook events does RevenueDot send?](https://revenuedot.app/docs/api/webhook-events.md)
- [Set up App Store notifications in RevenueDot](https://revenuedot.app/docs/guides/app-store.md)

## Source

- [Apple: notificationType](https://developer.apple.com/documentation/appstoreservernotifications/notificationtype)
- [Apple: Responding to App Store Server Notifications](https://developer.apple.com/documentation/appstoreservernotifications/responding-to-app-store-server-notifications)
- [Apple: app-store-server-library-node (SignedDataVerifier)](https://github.com/apple/app-store-server-library-node)
- [RevenueDot server: stores/apple/notifications.ts (how the notification is applied)](https://github.com/revenuedot/revenuedot/blob/main/apps/server/src/stores/apple/notifications.ts)
- [RevenueDot server: stores/apple/map.ts (how the transaction becomes a stored purchase)](https://github.com/revenuedot/revenuedot/blob/main/apps/server/src/stores/apple/map.ts)
- [RevenueDot core: events.ts (how a change becomes a webhook event)](https://github.com/revenuedot/revenuedot/blob/main/packages/core/src/events.ts)

Checked: 2026-10-03
