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
- 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.
- The event is recorded. A duplicate
notificationUUIDis acknowledged with a 200 and not processed again. - 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.
- Apple gets its 200.
- 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.
| Status | Meaning |
|---|---|
| RevenueHog | Points at this app's ingest URL. |
| Wrong token | Points at RevenueHog, but with another app's token. |
| Third-party | Points at another server, such as your own or another vendor's. |
| Not set | No URL configured. |
| Unknown | Could 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:
| Outcome | Meaning |
|---|---|
| Apple now posts to RevenueHog | Changed. |
| Already posting to RevenueHog, untouched | No change needed. |
Forwarding to <url> (your previous URL, saved automatically) | Your old endpoint will keep receiving events. |
Forwarding already set to <url>, kept as-is | A forward you set yourself is never overwritten. |
Previous URL was a RevenueHog address (<url>), not saved as a forward target | Saving it would loop events back into RevenueHog. |
| No previous URL to forward to | Nothing 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.
Related
Last updated on
API key roles
What each App Store Connect API key role unlocks in RevenueHog, how the capability sweep detects it, and how to read the KEY CAPABILITIES matrix in Settings.
App Store Connect webhooks
Connect App Store Connect webhooks so App Review, build and TestFlight events reach RevenueHog instantly, using Admin auto-setup or a manual URL and secret.