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 TypeTriggerExample
com.statused.app.status.updatedApp review status changes"In Review" → "Approved"
com.statused.build.status.updatedBuild processing status changes"Processing" → "Valid"
com.statused.account.status.updatedAccount status changesApple 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

FieldDescription
specversionCloudEvents specification version (always "1.0")
typeEvent type identifier
sourceEvent source (always "statused")
idUnique event identifier (UUID)
timeEvent timestamp in ISO 8601 format
datacontenttypeContent 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

FieldTypeDescription
messagestringHuman-readable status change description
versionstringApp version number
statusstringNew app status
trackstringRelease track (Android only)
user_distributionstringRollout percentage (Android only)
store_namestring"App Store Connect" or "Google Play Console"
status_colorstringHex color for status visualization
app_namestringApplication name
app_icon_urlstringURL to app icon image
internal_store_urlstringLink to store console
timestampstringEvent 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

FieldTypeDescription
messagestringHuman-readable account status description
statusstringAccount status
store_namestringAlways "App Store Connect"
status_colorstringHex color for status visualization
internal_store_urlstringLink to App Store Connect
timestampstringEvent timestamp in ISO 8601 format

Status Values

See platform-specific statuses below:

HTTP Headers

Statused includes additional headers with webhook requests:

HeaderDescription
Content-Typeapplication/json
User-AgentStatused-Webhooks/1.0
X-Statused-SignatureHMAC-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:

  1. In your Destinations list, find your new webhook destination
  2. Click the menu and select Send Test Notification
  3. 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.