An app webhook is tied to a specific OAuth 2.0 application. Lumin delivers events only for users who have authorized your app, and only for the event types covered by the OAuth scopes they granted.Documentation Index
Fetch the complete documentation index at: https://developers.luminpdf.com/llms.txt
Use this file to discover all available pages before exploring further.
Only the Workspace Owner can configure or update the app webhook URL. App webhooks are only available for Private (Server) application types.
How app webhooks differ from account webhooks
| Account webhooks | App webhooks | |
|---|---|---|
| Scope | All events, all users in the workspace | Events from users who authorized your app |
| Filtering | None — you receive everything | Limited to the OAuth scopes the user granted |
| Signing secret | Primary API key | App signing secret |
| Use case | Internal integrations, workspace monitoring | Third-party OAuth integrations |
Configure an app webhook
Select your app
Click the app you want to configure. If you haven’t created one yet, click Create app.
Enter your webhook URL
Under the Receive events on behalf of users section, enter your endpoint URL. The URL must use HTTPS.
Events received
Your app webhook receives events based on the OAuth scopes users have granted your app. For example, if a user does not grant thesign:requests.read or sign:requests scope, your app will not receive signature request events for that user.
For the full list of available event types, see Supported event types.
| Delivery behavior | Detail |
|---|---|
| One request per event | Each event triggers a separate HTTP POST |
| Real-time delivery | Events are sent as they occur |
| User-scoped coverage | Only events from users who authorized your app |
| Scope-dependent filtering | Events limited to the OAuth scopes the user granted |
Verify webhook signatures
Every request Lumin sends includes the following headers:User-Agent: AlwaysLumin Sign APIX-Signature: An HMAC-SHA256 hex digest of the request body, signed with your app’s signing secret
Compute the expected signature
Compute HMAC-SHA256 of the raw request body using your app’s signing secret.
Compare
Compare your computed value to the
X-Signature header. Use a constant-time comparison to avoid timing attacks.Respond to events
Your endpoint must return HTTP200 OK within 30 seconds of receiving a request. No response body is required.
Error handling and retries
If your endpoint does not return200 OK, Lumin retries the delivery. The following conditions trigger a retry:
- HTTP
4xxor5xxresponse - No response within 30 seconds (timeout)
- Connection failure