Webhook Reference
Complete reference for Statused webhook event types, payload formats, and CloudEvents specification
Statused webhooks follow the CloudEvents specification and provide detailed information about app status changes. This reference covers all available event types and their payload structures.
Event Types
Statused sends three types of webhook events:
Event Type | Trigger | Example |
---|---|---|
com.statused.app.status.updated | App review status changes | "In Review" → "Approved" |
com.statused.build.status.updated | Build processing status changes | "Processing" → "Valid" |
com.statused.account.status.updated | Account status changes | Apple releases new developer agreement requiring acceptance |
CloudEvents Structure
All webhook payloads follow the CloudEvents v1.0 specification:
{
"specversion": "1.0",
"type": "com.statused.app.status.updated",
"source": "statused",
"id": "6af15d63-dc69-4088-8adf-cdbb7d204eb4",
"time": "2025-01-12T22:12:03Z",
"datacontenttype": "application/json",
"data": {
// Event-specific payload
}
}
CloudEvents Headers
Field | Description |
---|---|
specversion | CloudEvents specification version (always "1.0") |
type | Event type identifier |
source | Event source (always "statused") |
id | Unique event identifier (UUID) |
time | Event timestamp in ISO 8601 format |
datacontenttype | Content type of the data field |
Payload Formats
App Status Updated
Sent when an app's review status changes:
{
"specversion": "1.0",
"type": "com.statused.app.status.updated",
"source": "statused",
"id": "6af15d63-dc69-4088-8adf-cdbb7d204eb4",
"time": "2025-01-12T22:12:03Z",
"datacontenttype": "application/json",
"data": {
"message": "The status of your app Markdown Email changed to Ready for Sale",
"version": "1.2.3",
"status": "Ready for Sale",
"track": "Production",
"user_distribution": "30%",
"store_name": "App Store Connect",
"status_color": "#1eb6fc",
"app_name": "Markdown Email",
"app_icon_url": "https://example.com/app-icon.png",
"internal_store_url": "https://appstoreconnect.apple.com/...",
"timestamp": "2025-01-12T22:12:03Z"
}
}
App Status Fields
Field | Type | Description |
---|---|---|
message | string | Human-readable status change description |
version | string | App version number |
status | string | New app status |
track | string | Release track (Android only) |
user_distribution | string | Rollout percentage (Android only) |
store_name | string | "App Store Connect" or "Google Play Console" |
status_color | string | Hex color for status visualization |
app_name | string | Application name |
app_icon_url | string | URL to app icon image |
internal_store_url | string | Link to store console |
timestamp | string | Event timestamp in ISO 8601 format |
Build Status Updated
Sent when a build's processing status changes:
{
"specversion": "1.0",
"type": "com.statused.build.status.updated",
"source": "statused",
"id": "7bf25e74-ed70-5199-9bee-eeccdd8e295f",
"time": "2025-01-12T22:15:47Z",
"datacontenttype": "application/json",
"data": {
"message": "The status of build 1.0 (5) of Markdown Email changed to Valid",
"version": "1.2.3",
"status": "Valid",
"store_name": "App Store Connect",
"status_color": "#1eb6fc",
"app_name": "Markdown Email",
"app_icon_url": "https://example.com/app-icon.png",
"internal_store_url": "https://appstoreconnect.apple.com/...",
"timestamp": "2025-01-12T22:15:47Z"
}
}
Build Status Fields
Build status payloads include the same fields as app status, except:
- No
track
field (not applicable to builds) - No
user_distribution
field (not applicable to builds) message
refers to build instead of app
Account Status Updated
Sent when your App Store Connect account status changes:
{
"specversion": "1.0",
"type": "com.statused.account.status.updated",
"source": "statused",
"id": "8cg36f85-fe81-6200-acff-ffddeeff9f406g",
"time": "2025-01-12T22:20:15Z",
"datacontenttype": "application/json",
"data": {
"message": "Action Needed: You Have Pending Agreements",
"status": "Pending Agreement Acceptance",
"store_name": "App Store Connect",
"status_color": "#ff6b6b",
"internal_store_url": "https://appstoreconnect.apple.com/...",
"timestamp": "2025-01-12T22:20:15Z"
}
}
Account Status Fields
Field | Type | Description |
---|---|---|
message | string | Human-readable account status description |
status | string | Account status |
store_name | string | Always "App Store Connect" |
status_color | string | Hex color for status visualization |
internal_store_url | string | Link to App Store Connect |
timestamp | string | Event timestamp in ISO 8601 format |
Status Values
See platform-specific statuses below:
App Store Connect
Track build statuses, app review progress, and pending account agreements — all in real-time.
Google Play Console
Monitor phased rollouts, app approvals, rejections, and track releases across all your deployment stages.
HTTP Headers
Statused includes additional headers with webhook requests:
Header | Description |
---|---|
Content-Type | application/json |
User-Agent | Statused-Webhooks/1.0 |
X-Statused-Signature | HMAC-SHA256 signature (when secret is configured) |
Delivery & Retries
- Events are delivered within 30 seconds for iOS and 150 seconds for Android (due to API rate limits)
- Failed deliveries are automatically retried with exponential backoff up to 5 times
- Webhooks timeout after 30 seconds and expect a 2xx response code
Test Your Webhook
After adding your webhook, test it to ensure everything works correctly:
- In your Destinations list, find your new webhook destination
- Click the menu and select Send Test Notification
- Check your endpoint logs to verify the test payload was received
What to Test
- ✅ Endpoint receives the request
- ✅ Signature validation works (if using secrets)
- ✅ Response time is under 30 seconds
- ✅ Returns appropriate status codes
Questions about the webhook format?
If you need clarification about any payload fields or have questions about implementing webhook parsing, reach out to us — we're happy to help with your integration.