renewal_extended

Learn about the RENEWAL_EXTENDED App Store Server Notification V2. Fired when a subscription renewal date is extended.

App Store Server Notifications V2Other
renewal_extended

The RENEWAL_EXTENDED notification fires when a subscription's renewal date is extended, giving the customer additional time before their next billing date. This can happen through the App Store Server API or through Apple's support processes.


When does it fire?


This notification triggers when:


  • You extend the renewal — using the Extend a Subscription Renewal Date endpoint in the App Store Server API (for service outages, goodwill gestures, etc.)
  • Apple extends the renewal — Apple's support team extends the subscription as part of a customer service interaction

Payload highlights


The signed transaction info carries the new expiration date. Apple does not send the previous one, so calculating how much time was granted means comparing against the date you had already stored for that subscriber.


How Yeethook helps


Renewal extensions affect your billing timeline and revenue forecasts. Yeethook delivers these notifications with the extension details clearly formatted, so your team knows which subscribers received extra time.


Common use cases


  • Track renewal extensions granted for service outages
  • Monitor Apple-initiated extensions from customer support
  • Update billing forecasts when renewals are pushed back
  • Audit extension usage for compliance

Example payload

The decoded body for a single subscriber whose renewal date moved, sent with no subtype. The new date is the expiresDate inside signedTransactionInfo; the previous one is not included anywhere in the payload.

{
  "notificationType": "RENEWAL_EXTENDED",
  "notificationUUID": "6ea209cb-47d3-4185-9f02-38c7b1e5a06d",
  "version": "2.0",
  "signedDate": 1790494745000,
  "data": {
    "appAppleId": 1234567890,
    "bundleId": "com.example.app",
    "bundleVersion": "142",
    "environment": "Production",
    "signedTransactionInfo": "eyJhbGciOiJFUzI1NiIsIng1YyI6...",
    "signedRenewalInfo": "eyJhbGciOiJFUzI1NiIsIng1YyI6...",
    "status": 1
  }
}

What it looks like in Slack

Info

Renewal date extended

Product
com.example.app.pro.monthly
Transaction
2000000798765432
Expires
2026-12-05T09:34:13.000Z
Auto-renew
On
Subscription status
Active
Environment
Production

Questions about renewal_extended

What is the difference between RENEWAL_EXTENDED and RENEWAL_EXTENSION?

RENEWAL_EXTENDED reports one subscriber whose date actually moved and uses the data object. RENEWAL_EXTENSION reports the outcome of a batch job and uses the summary object instead, which is why the two produce completely different field rows in the message.

How much time was added?

The payload only states the new expiresDate, so the size of the extension is the difference against the date you had previously stored for that originalTransactionId. If you do not keep the old value, the notification alone cannot tell you whether a day or a month was granted.

Does the extension change the amount the customer pays?

No. It shifts when the next charge happens, so the following DID_RENEW simply arrives at the new expiresDate with the same price. Revenue is deferred rather than discounted, which matters if you are reconciling extension grants against MRR.

Related Events

Get this event in Slack or Discord

Connect Yeethook to receive renewal_extended notifications in your team's Slack or Discord channels.

Get Started Free