Connect the Apple App Store
Connecting App Store Connect gives Pulse your iOS revenue from dailySales & Trends reports, and — optionally — real-time subscription events forMRR and LTV. Five values get you revenue; Server Notifications are a separate, optional step.
Pulse only reads. It does not change prices, submit builds, edit metadata or touch anything in your App Store Connect account.
1. Create an App Store Connect API key
App Store Connect → Users and Access → Integrations → App Store Connect API → create ateam key with App Manager access. Note the Issuer IDand Key ID, and download the .p8 private key. Apple lets you download it once — if you lose it, revoke the key and make a new one.
2. Find your Vendor Number
App Store Connect → Payments and Financial Reports → the roughly 8-digit number shown top-left. This is required: Sales & Trends reports are addressed by vendor number, so without it there is no revenue to read, whatever else is configured.
3. Paste it into Pulse
Open Connections → App Store and enter the Issuer ID, Key ID, the contents of the .p8 (PEM, including the BEGIN/END lines), yourBundle ID and the Vendor Number. This alone brings revenue, with the 24–48 hour delay Apple’s reports have.
4. Optional: real-time subscription events
For subscription state as it happens — the input to MRR and LTV — set theServer Notifications URL Pulse shows in App Store Connect → your app →App Information → Server Notifications, Version 2 (production and sandbox).
Read this before you paste it: Apple allows exactly one notifications URL per app. If your own backend already consumes it, do not replace it — you would break your own subscription handling. Forward a copy instead. Pulse re-verifies Apple’s signature on the payload, so a forwarded copy is accepted as genuine.
// Apple → your backend → Pulse. Forward the raw { signedPayload } body.
app.post('/your/app-store/notifications', (req, res) => {
res.sendStatus(200); // ack Apple first — never block on us
fetch('https://hooks.pulse.pulsecircle.studio/hooks/app-store/YOUR_CONNECTION_ID', {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify(req.body), // exactly what Apple sent
}).catch(() => {}); // best effort; Sales & Trends still covers revenue
});Copy YOUR_CONNECTION_ID from the Server Notifications URL on the App Store card in Connections, and forward from your sandbox handler too. Skipping this step entirely is a valid choice — revenue still flows via Sales & Trends, only the real-time subscription detail is missing.
5. Verify
Ask “verify my data sources” in chat, or run pulse_verify from your agent. Because Sales & Trends lags, expect the latest metrics day to sit a day or two behind today — that is Apple’s delay, not a broken connection.
Related
- Connect RevenueCat — if you already use it, subscriptions come from there instead.
- All connections.