Quick Start
Subcommands
list- List webhooks for an appget- Get a webhook by IDcreate- Create a webhookupdate- Update a webhookdelete- Delete a webhookserve- Run a local webhook receiver for testingdeliveries- List webhook deliveriesping- Create a webhook ping
Commands
webhooks list
List webhooks for an app:--app- App Store Connect app ID (orASC_APP_ID)--limit- Maximum results per page (1-200)--next- Fetch next page using a links.next URL--paginate- Automatically fetch all pages--output- Output format:json,table,markdown--pretty- Pretty-print JSON output
webhooks get
Get a webhook by ID:--webhook-id- Webhook ID (required)--output- Output format:json,table,markdown--pretty- Pretty-print JSON output
webhooks create
Create a webhook:--app- App Store Connect app ID (orASC_APP_ID)--name- Webhook name (required)--url- Webhook endpoint URL (required)--secret- Webhook secret (required)--events- Webhook event types, comma-separated (required)--enabled- Enable or disable the webhook:trueorfalse(required)--output- Output format:json,table,markdown--pretty- Pretty-print JSON output
webhooks update
Update a webhook:--webhook-id- Webhook ID (required)--name- Webhook name--url- Webhook endpoint URL--secret- Webhook secret--events- Webhook event types, comma-separated--enabled- Enable or disable the webhook:trueorfalse--output- Output format:json,table,markdown--pretty- Pretty-print JSON output
webhooks delete
Delete a webhook:--webhook-id- Webhook ID (required)--confirm- Confirm deletion (required)--output- Output format:json,table,markdown--pretty- Pretty-print JSON output
webhooks serve
Run a local webhook receiver for testing and automation:--host- Host to bind the local webhook receiver (default:127.0.0.1)--port- Port to bind the local webhook receiver (0-65535, default:8787)--dir- Optional directory to write one JSON payload file per event--exec- Optional command to execute per event (payload JSON is piped on stdin)--output- Output format:text(default),json--max-body-bytes- Maximum accepted request body size in bytes (default: 1048576)
- Accepts webhook POSTs at
http://host:port/ - Validates JSON payloads
- Writes timestamped payload files when
--diris set - Executes custom scripts with
--exec(payload on stdin) - Queue-based processing with 4 concurrent workers
- Configurable request body size limits
{timestamp}-{index}-{event-type}.json:
webhooks deliveries
List webhook deliveries:--webhook-id- Webhook ID (required)--created-after- Filter deliveries created after or equal to a timestamp--created-before- Filter deliveries created before a timestamp--limit- Maximum results per page (1-200)--next- Fetch next page using a links.next URL--paginate- Automatically fetch all pages--output- Output format:json,table,markdown--pretty- Pretty-print JSON output
--created-after or --created-before is required (mutually exclusive).
webhooks deliveries relationships
List webhook delivery relationships:--webhook-id- Webhook ID (required)--limit- Maximum results per page (1-200)--next- Fetch next page using a links.next URL--paginate- Automatically fetch all pages--output- Output format:json,table,markdown--pretty- Pretty-print JSON output
webhooks deliveries redeliver
Redeliver a webhook delivery:--delivery-id- Webhook delivery ID (required)--output- Output format:json,table,markdown--pretty- Pretty-print JSON output
webhooks ping
Create a webhook ping:--webhook-id- Webhook ID (required)--output- Output format:json,table,markdown--pretty- Pretty-print JSON output
Event Types
Common webhook event types:SUBSCRIPTION.CREATEDSUBSCRIPTION.UPDATEDSUBSCRIPTION.RENEWEDSUBSCRIPTION.EXPIREDBUILD.PROCESSINGBUILD.PROCESSEDVERSION.REVIEW_STATUS_CHANGED
Local Testing Workflow
-
Start the local webhook receiver:
-
Use a tunnel service (ngrok, Cloudflare Tunnel) to expose the local server:
-
Create a webhook in App Store Connect pointing to the tunnel URL:
- Trigger events in App Store Connect and watch the local receiver log incoming events
-
Clean up:
