Integration

App Store webhooks →
Custom webhooks

Forward every App Store Connect webhook and App Store Server Notification V2 to Custom webhooks. Verified, enriched with app + product context, and formatted natively for the channel.

How custom webhooks work

1

Expose an HTTPS endpoint

Anywhere you can accept a POST — your own Rails/Node back-end, a Zapier webhook trigger, an n8n flow, an AWS Lambda Function URL.

2

Add a generic-webhook destination

In Juice Machine, create a new destination with channel type "Generic webhook" and paste the URL.

3

Receive structured JSON

Each event POSTs as JSON with a schema version, the original Apple payload, and the enriched data. You parse it however you want.

A real payload

What you'll receive at your endpoint, abbreviated.

# POST /your-endpoint HTTP/1.1
# X-JuiceMachine-Event: SUBSCRIBED
# X-JuiceMachine-Schema-Version: 1
# X-JuiceMachine-Signature: sha256=<HMAC of the body, keyed with your signing secret>
# Content-Type: application/json

{
  "schema_version": 1,
  "event": {
    "id": 4291,
    "event_type": "SUBSCRIBED",
    "human_event_type": "New Subscription",
    "received_at": "2026-05-19T19:01:42Z",
    "environment": "Production"
  },
  "app": {
    "id": 17,
    "name": "Trailmix",
    "bundle_id": "com.example.trailmix"
  },
  "enriched_data": {
    "product_name": "Monthly Pro",
    "price_milliunits": 4990,
    "currency": "GBP",
    "transaction_type": "Auto-Renewable Subscription"
  },
  "enriched_user": {
    "name": "Jane Doe",
    "primary_url": "https://your-app.example.com/admin/users/abc",
    "fields": [
      { "label": "Plan", "value": "Pro (annual)" },
      { "label": "MRR",  "value": "$49" }
    ],
    "links": [
      { "label": "Subscription", "url": "https://your-app.example.com/admin/users/abc/sub" }
    ]
  },
  "payload": { /* the original signed Apple body */ }
}

The enriched_user key is populated when you configure a user lookup URL; it's null otherwise. Each delivery is HMAC-signed with a per-destination secret — see Authentication. Full schema in the API reference.

Every Apple webhook, forwarded

Two Apple webhook streams. One destination.

App Store Connect

  • • App review state changes (in review, approved, rejected, ready for sale)
  • • Build uploads + processing state
  • • TestFlight beta build state
  • • TestFlight tester feedback (text, screenshots, crash logs)

App Store Server Notifications V2

  • • New subscriptions and renewals
  • • Failed renewals + billing grace period
  • • Refunds and refund reversals
  • • Price increases, offer redemptions, IAP events

Every App Store Server Notification is signature-verified (JWS against Apple Root CA G3) before Juice Machine forwards it, and every app gets its own secret webhook URL. Read the docs.

Start forwarding in minutes

Free plan: 250 events per month. No credit card required.