HomeProduct DocsAPI ReferenceChangelog
RecurlyAPI GuidesRecurly.jsWebhooksAPI ReferenceSupportBook demo
Product Docs

API support and webhooks

Use Recurly's REST API endpoints and webhooks to programmatically retrieve mobile app subscription data and respond to subscription lifecycle events.

App Management exposes REST API endpoints that let you pull mobile app subscription data from Recurly in JSON, plus webhooks that fire on key subscription lifecycle events. Together they let you build cross-platform workflows — query external products and subscriptions on demand, and react in real time when a subscriber cancels, renews, or upgrades.
Additional cost
This feature requires an additional cost. Contact Recurly Sales for pricing details.

REST API endpoints

These REST API endpoints let you programmatically pull information about your mobile app subscriptions from Recurly in JSON format.

External products

Use these endpoints to view information about the external products you configured during setup.

External subscriptions

Use these endpoints to view information about external subscriptions — the Apple or Google subscriptions your customers have purchased.

Entitlements

Use this endpoint to view the entitlements granted to a specific customer (account).

For the complete list of endpoints specific to App Management, start at External Subscription and scroll down.

Webhooks

For key events in the subscription lifecycle, Recurly triggers a webhook so you can take follow-up action — like emailing your customer — based on the notification.

ImportantWebhooks are configured via the Recurly Admin UI and can't be configured via API.

Recurly webhook payloads are lightweight by design and require a follow-up call to the REST API to get the most up-to-date information about an app store subscription. The JSON and XML examples below show a notification for a new external subscription. To get more detail, call the Fetch an External Subscription endpoint with the id provided in the webhook.

{
  "id": "s0lo0hdfmauc",
  "object_type": "external_subscription",
  "site_id": "qpem7fkwr763",
  "event_type": "created",
  "event_time": "2022-12-06T22:19:15Z"
}
<new_external_subscription_notification>
  <external_subscription>
    <id>uuid</>
  </external_subscription>
  <external_resource>
    <id></id>
    <external_object_reference></external_object_reference>
  </external_resource>
  <external_product_reference>
    <id></id>
    <reference_code></reference_code>
    <created_at></created_at>
    <updated_at></updated_at>
  </external_product_reference>
</new_external_subscription_notification>

Configuring Recurly to send webhooks

To configure webhooks for App Management, navigate to Integrations → Webhooks in Recurly and select Configure at the top right. You can either create a New Endpoint or select Options → Edit for an existing one. When configuring the endpoint, scroll to the External Subscription section and select the checkbox for any event you're interested in. The next section covers those events in detail. To learn more about Recurly webhooks in general, see the Webhooks developer documentation.

Complete list of webhook events

The table below lists every webhook Recurly sends related to mobile app subscriptions. Each one maps to a specific Apple or Google notification. For JSON and XML examples of each webhook, see the External Subscription Notifications section of the Webhooks page in the Recurly Development Hub.

Recurly eventApple eventGoogle event
canceledDID_CHANGE_RENEWAL_STATUS > AUTO_RENEW_DISABLEDSUBSCRIPTION_CANCELED
consumption_requestedCONSUMPTION_REQUESTN/A
created (new subscription)SUBSCRIBED > INITIAL_BUYSUBSCRIPTION_PURCHASED
downgradedDID_CHANGE_RENEWAL_PREF > DOWNGRADEN/A
downgrade_canceledDID_CHANGE_RENEWAL_PREFN/A
expiredEXPIRED > VOLUNTARY
EXPIRED > BILLING_RETRY
EXPIRED > PRICE_INCREASE
SUBSCRIPTION_EXPIRED
extended_renewalRENEWAL_EXTENDEDSUBSCRIPTION_DEFERRED
failed_renewalDID_FAIL_TO_RENEWSUBSCRIPTION_ON_HOLD
failed_renewal_with_grace_periodDID_FAIL_TO_RENEW > GRACE_PERIODSUBSCRIPTION_IN_GRACE_PERIOD
grace_period_expiredGRACE_PERIOD_EXPIREDN/A
pause_schedule_changedN/ASUBSCRIPTION_PAUSE_SCHEDULE_CHANGED
pausedN/ASUBSCRIPTION_PAUSED
plan_changedN/ASUBSCRIPTION_PURCHASED
price_change_confirmedN/ASUBSCRIPTION_PRICE_CHANGE_CONFIRMED
reactivatedDID_CHANGE_RENEWAL_STATUS > AUTO_RENEW_ENABLEDSUBSCRIPTION_RESTARTED
recoveredN/ASUBSCRIPTION_RECOVERED
refundedREFUNDN/A
refund_declinedREFUND_DECLINEDN/A
refund_reversedREFUND_REVERSEDN/A
renewedDID_RENEW
DID_RENEW > BILLING_RECOVERY
SUBSCRIPTION_RENEWED
resubscribedSUBSCRIBED > RESUBSCRIBEN/A
resubscribed_incorrect_accountSUBSCRIBED > RESUBSCRIBEN/A
revokedN/ASUBSCRIPTION_REVOKED
upgradedDID_CHANGE_RENEWAL_PREF > UPGRADEN/A
voidedN/ASUBSCRIPTION_VOIDED

Viewing triggered webhooks

All triggered webhooks are viewable in Recurly under Integrations → Webhooks. You can also reach a filtered view of triggered webhooks from the Webhooks link when viewing the details of an account or external subscription.