Use case

Watch every subscription event,
as it happens.

New subscribers, renewals, refunds, billing failures, price-change rejections — every App Store Server Notification V2, decoded and forwarded to your team.

Apple's subscription data is hidden behind JWS

App Store Server Notifications V2 are signed JWS tokens, with the subscription and transaction details further wrapped in more nested JWS payloads. Decoding that yourself means verifying the certificate chain against Apple's Root CA G3, parsing the signed payloads, and writing handlers for ~25 notification types.

Even after that, the raw event is missing the human context (product name, price, currency) — you have to fetch it separately. Most teams either skip the signature check, miss subtypes, or stare at receipts in their Stripe dashboard and hope.

Every subscription event, decoded and enriched

SUBSCRIBED

First-time subscriber and re-subscribers

DID_RENEW

Renewals (auto-renewable subscriptions)

DID_FAIL_TO_RENEW

Billing failures (grace period starts)

GRACE_PERIOD_EXPIRED

Subscriber lost without intervention

REFUND

Apple-issued refunds + revocation reasons

EXPIRED

Subscription ended (with subtype: voluntary, billing retry, price increase, etc.)

PRICE_INCREASE

Customer accepted / rejected your price change

OFFER_REDEEMED

Promotional offer claim with offer identifier

Plus DID_CHANGE_RENEWAL_PREF (upgrade / downgrade), DID_CHANGE_RENEWAL_STATUS (auto-renew on / off), REVOKE, REFUND_REVERSED, RENEWAL_EXTENDED, CONSUMPTION_REQUEST …

What a renewal looks like in Slack

Enriched with product name, currency-aware pricing, and renewal date.

Trailmix — Subscription Renewed

Subscription Renewed

Status
Did Renew
Product
Monthly Pro
Price (Auto-Renewable Subscription)
£4.99
Auto-renew
On

🔄 Subscription renewed successfully.

Added by Juice Machine

All Server Notifications event types · JWS signature verification

Set this up in minutes

Free plan: 250 events per month. No credit card required.