App Webhooks
Receive post and changelog event notifications at your app's webhook URL.
Overview
Your OAuth app can receive event notifications (e.g. a post was created or updated) at a webhook URL, delivered through FeatureOS's standard webhook pipeline — with retries and HMAC signing. This requires the webhooks:manage scope.
The model mirrors scopes: your app subscribes to the events it can handle, and each install grants a subset that's actually delivered.
1. Declare the webhook on your app
Set webhook_url and subscribed_webhook_events when you register (or update) the app. These are only accepted if webhooks:manage is in your declared_scopes.
curl -sX POST https://api.featureos.app/oauth/apps \
-H "Authorization: Bearer <USER_JWT>" \
-H "X-Organization: your-org" \
-H "Content-Type: application/json" \
-d '{
"name": "My Integration",
"redirect_uris": ["https://myapp.com/callback"],
"allowed_actor_modes": ["app"],
"declared_scopes": ["posts:read", "webhooks:manage"],
"webhook_url": "https://myapp.com/webhooks/featureos",
"subscribed_webhook_events": ["post_created", "post_updated"]
}'2. Events are granted per install
At consent, the installing org can restrict which of your subscribed events this install delivers, via granted_webhook_events (a subset of what the app subscribed to):
curl -sX POST https://api.featureos.app/oauth/authorize/consent \
-H "Authorization: Bearer <USER_JWT>" -H "X-Organization: target-org" \
-H "Content-Type: application/json" \
-d '{
"client_id": "foapp_…",
"redirect_uri": "https://myapp.com/callback",
"actor": "app",
"target_organization_id": 7,
"granted_webhook_events": ["post_updated"]
}'Omit granted_webhook_events to grant everything the app subscribed to. When the install completes (token exchange), a webhook is automatically provisioned in the target org subscribed only to the granted events.
Supported events
| Event | Fired when |
|---|---|
post_created |
A feedback post is created |
post_updated |
A feedback post is updated |
post_completed |
A post is marked completed |
changelog_created |
A changelog entry is created |
changelog_updated |
A changelog entry is updated |
changelog_published |
A changelog entry is published |
Lifecycle
- Provisioned automatically on install (token exchange), for the target org, subscribed to the granted events.
- URL changes to your app propagate to all existing installs automatically.
- Removed automatically when the install is revoked or the app is suspended.
For payload format, signing, and retry behavior, see the main Webhooks documentation — app webhooks use the same delivery system.