This project provides a simple, secure Node.js proxy to forward webhook events from App Store Connect to Microsoft Teams and/or Slack, including signature verification and platform-specific formatting.
- ✅ Verifies App Store webhook signatures using HMAC SHA-256
- ✅ Forwards formatted messages to Microsoft Teams and Slack
- ✅ Custom message templates per platform
- ✅ Supports custom timezones for event timestamps
- ✅ Error handling and logging
- ✅ Dockerized and ready for deployment (e.g. Render, Railway)
- ✅ One-click deployable to Render
- App Store Connect access with one of the following roles: Account Holder, Admin, or App Manager to create a webhook.
- A configured workspace in either: Microsoft Teams and/or Slack
End-to-end simple installation guides, from installing the proxy to get the test message to MS Teams / Slack
📘 Step-by-step setup guide: Integrate App Store Webhooks with Microsoft Teams (Medium)
📘 Step-by-step setup guide: Integrate App Store Webhooks with Slack (Medium)
- appStoreVersionAppVersionStateUpdated
- webhookPingCreated
Unknown events will still be delivered in raw JSON.
Here you can find all the available options to run the proxy.
If you'd like to run the app directly with Node.js:
Build and run using Docker:
Click below to deploy instantly to Render:
Make sure to set the following environment variables during setup:
- SHARED_SECRET
- TEAMS_WEBHOOK_URL
- SLACK_WEBHOOK_URL
- APP_STORE_URL (optional)
- TIMEZONE (e.g., Europe/Athens)
Render automatically sets NODE_ENV=production
Create a .env file (or set variables directly in your cloud environment):
You can also copy from the example:
Then send a webhook POST to:
- When setting up the webhook in App Store Connect, Apple will ask for a secret. Use a string of your choice and set it in SHARED_SECRET.
- Official docs:
PRs and feedback welcome! You can help with:
- More supported event types
- Custom Slack/Teams formatting
- Delivery logs and retry support
MIT
.png)



