RevenueHogdocs
Data sources

Server notifications

Route App Store Server Notifications V2 through RevenueHog with the per-app ingest URL, the S2S audit, one-step auto-wiring, test sends and history import.

App Store Server Notifications V2 tell you about subscription events the moment they happen. Apple allows one URL per app and environment; pointing it at RevenueHog loses nothing, because RevenueHog forwards Apple's exact signed payload to your own server.

The ingest URL

Each App Store app has an APPLE INGEST URL on its page, of the form:

https://revenuehog.dev/api/s2s/apple/<token>

The same URL serves both Production and Sandbox; Apple marks the environment inside the payload. The token authenticates the app. An unknown token gets a 404 so nobody can probe which tokens exist.

What happens to each notification

  1. The JWS is verified against Apple's root certificates and must match the app's bundle ID and environment. Nothing is recorded or forwarded otherwise.
  2. The event is recorded. A duplicate notificationUUID is acknowledged with a 200 and not processed again.
  3. Jobs are queued for forwarding and for push alerts, MRR milestones and a silent refresh. Queueing happens before the acknowledgement, so if it fails Apple gets an error and retries.
  4. Apple gets its 200.
  5. Forwarding and alerts run asynchronously. A slow forwarding endpoint can never make Apple mark a delivery failed.

S2S CONFIGURATION audit

On the app page, S2S CONFIGURATION shows each environment (PRODUCTION, SANDBOX) with a status. Press Check configuration to read the live value from App Store Connect.

StatusMeaning
RevenueHogPoints at this app's ingest URL.
Wrong tokenPoints at RevenueHog, but with another app's token.
Third-partyPoints at another server, such as your own or another vendor's.
Not setNo URL configured.
UnknownCould not be read (no key, or the read failed).

Fix: point Apple here

When any environment is not RevenueHog, the panel explains the fix and offers Fix: point Apple here & forward to your current URL…, then Confirm: update Apple & save forwarding. For each environment that needs it:

  • Apple is re-pointed at the ingest URL.
  • The URL Apple was using is saved as that environment's forwarding destination.

The outcome is reported per environment:

OutcomeMeaning
Apple now posts to RevenueHogChanged.
Already posting to RevenueHog, untouchedNo change needed.
Forwarding to <url> (your previous URL, saved automatically)Your old endpoint will keep receiving events.
Forwarding already set to <url>, kept as-isA forward you set yourself is never overwritten.
Previous URL was a RevenueHog address (<url>), not saved as a forward targetSaving it would loop events back into RevenueHog.
No previous URL to forward toNothing was configured before.

This needs a key with the App Manager or Admin role. A read-only key gets a permission error; paste the ingest URL into App Store Connect by hand instead.

Bulk wiring

The setup wizard runs the same audit and fix across all apps at once, with per-app selection. With AUTO-CONNECT NEW APPS on, apps discovered later are wired automatically.

Send a test

Send sandbox test and Send production test ask Apple to send a TEST notification to whatever URL is configured. After a few seconds you see "Test sent · Apple delivered: true/false · received by RevenueHog: true/false". Apple delivered is Apple's own view; received by RevenueHog is whether a TEST event arrived in the last two minutes. Errors include "App not found or missing bundle ID." and "App Store Connect credentials are not configured."

Import 180-day history

Import 180-day history replays the notifications Apple stored for the last 180 days through the same verification path, so a newly wired app starts with a populated feed, customer timelines and trial history. Apple keeps exactly 180 days. Replayed events:

  • Are stamped at Apple's original signed date, so they land where they happened.
  • Send no push alerts and are not forwarded.
  • Are deduplicated, so running it again only adds what is missing. One run handles up to 3,000 notifications; run it again to continue.

The result reports how many failed verification, if any.

Last updated on

On this page