What Are App Store Server Notifications V2
App Store Server Notifications V2 (ASN V2) are Apple's system for notifying your server about in-app purchase and subscription lifecycle events. They cover subscriptions, refunds, offer redemptions, revocations, and more. Setting up App Store Server Notifications V2 correctly is essential for any app with subscriptions or in-app purchases.
The Problem
Setting up and processing these notifications requires:
- A server endpoint that handles JWS-signed payloads.
- Signature verification against Apple's certificate chain.
- Parsing logic for every notification type and subtype.
- A way to display or store the information.
Most teams either skip server notifications entirely or build fragile custom solutions.
How to Set Up App Store Server Notifications V2 with Yeethook
Yeethook handles the entire pipeline and delivers every subscription event to Slack with the full story attached:
- Sign up at yeethook.com.
- Upload your p8 key — Yeethook registers the notification URL with Apple automatically and uses the key to enrich events with additional context from Apple's APIs.
- Add your app and select which notification types to monitor.
- Connect Slack and route subscription events to your channels.
Once set up, Yeethook:
- Receives the signed notification from Apple.
- Verifies the JWS signature against Apple's certificate chain.
- Parses the payload, extracting the notification type, subtype, and transaction info.
- Enriches the data by calling Apple's APIs for additional context.
- Formats a readable Slack message with all relevant details.
- Delivers it to the right Slack channel based on your routing rules.
Supported Notification Types
All 18+ App Store Server Notification V2 types are supported, including:
- Subscription lifecycle (SUBSCRIBED, DID_RENEW, EXPIRED, etc.)
- Billing issues (DID_FAIL_TO_RENEW, GRACE_PERIOD_EXPIRED)
- Refunds (REFUND, REFUND_DECLINED, REFUND_REVERSED)
- Offers (OFFER_REDEEMED, PRICE_INCREASE)
- Revocations (REVOKE)
- External purchases (EXTERNAL_PURCHASE_TOKEN)