{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-products/wallet/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Configure webhooks","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"configure-webhooks","__idx":0},"children":["Configure webhooks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Webhooks send real-time notifications to your systems when events occur in your Wallet-as-a-Service (Palisade) organization. As an owner or administrator, you create webhook endpoints, choose which events to subscribe to, and verify delivery signatures."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-webhooks-work","__idx":1},"children":["How webhooks work"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a subscribed event occurs (for example, a transaction status changes), Palisade sends an HTTPS POST request to your configured endpoint. The request body contains a JSON payload with the event details. Palisade signs each delivery so you can verify it came from the platform."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"create-a-webhook","__idx":2},"children":["Create a webhook"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Go to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings"]}," > ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhooks"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create webhook"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enter a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["name"]}," (5–100 characters) that describes the webhook's purpose."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enter an optional ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["description"]}," (5–100 characters)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enter the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["URL"]}," — the HTTPS endpoint that receives webhook deliveries. The URL must use HTTPS."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select one or more ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["subscriptions"]}," — the event categories that trigger deliveries:",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Transaction"]}," — \"All transaction events for this organization\""]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Wallet"]}," — \"All wallet events for this organization\""]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Approval"]}," — \"All approval events for this organization\""]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Save"]},"."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"At least one subscription required"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You must select at least one event subscription. You can update the subscriptions at any time after creation."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"verify-webhook-deliveries","__idx":3},"children":["Verify webhook deliveries"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Palisade signs each webhook delivery with an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["ECDSA"]}," private key. Verify the signature on every delivery to confirm it came from Palisade and wasn't tampered with. Palisade retries failed deliveries automatically."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Go to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings"]}," > ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhooks"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select the webhook to view its details."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Copy the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["public key"]}," displayed on the webhook detail page."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In your application, use the public key to verify the signature included in each delivery's headers."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/user-interface/integrations/manage-webhooks"},"children":["Manage webhooks"]}," for code examples in Python, JavaScript, and Go."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"update-a-webhook","__idx":4},"children":["Update a webhook"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Go to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings"]}," > ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhooks"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select the webhook you want to modify."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Edit"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Update the name, description, URL, or event subscriptions."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Save"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"delete-a-webhook","__idx":5},"children":["Delete a webhook"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Go to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings"]}," > ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhooks"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select the webhook."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Delete"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm the deletion."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Palisade stops sending deliveries to the endpoint immediately after deletion."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"webhooks-vs-audit-logging","__idx":6},"children":["Webhooks vs. audit logging"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Palisade offers two notification mechanisms. Use both together for complete visibility."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Feature"},"children":["Feature"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Webhooks"},"children":["Webhooks"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Audit logging"},"children":["Audit logging"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Delivery"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Real-time HTTPS push to your endpoint"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Palisade batches deliveries to AWS Firehose (~15 second buffer)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Scope"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Subscribed event types only (transactions, wallets, approvals)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["All API calls and console actions"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use case"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Trigger downstream workflows, such as updating your database when a transaction confirms"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Compliance reporting, incident investigation, access review"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Retention"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your endpoint processes and stores"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your Firehose destination (S3, Splunk, etc.)"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/admin-guide/configure-audit-logging"},"children":["Configure audit logging"]}," for Firehose setup."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"best-practices","__idx":7},"children":["Best practices"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use HTTPS only"]}," — webhook URLs must use HTTPS. This protects event payloads in transit."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Verify signatures on every delivery"]}," — never process a webhook payload without verifying the signature first."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Implement idempotent processing"]}," — your endpoint may receive the same event more than once. Use the event ID to deduplicate."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Respond with 2xx quickly"]}," — return a 2xx status code as soon as you receive the webhook. Process the payload asynchronously to avoid timeouts."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Monitor for failures"]}," — set up alerting on your endpoint to detect delivery failures or downtime."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use webhooks instead of polling"]}," — for production integrations, webhooks are more efficient and timely than polling the API for status changes."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related-guides","__idx":8},"children":["Related guides"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/user-interface/integrations/manage-webhooks"},"children":["Manage webhooks"]}," — Reference documentation with signature verification code examples"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/user-interface/integrations/integrations-overview"},"children":["Integrations overview"]}," — Overview of integrations"]}]}]},"headings":[{"value":"Configure webhooks","id":"configure-webhooks","depth":1},{"value":"How webhooks work","id":"how-webhooks-work","depth":2},{"value":"Create a webhook","id":"create-a-webhook","depth":2},{"value":"Verify webhook deliveries","id":"verify-webhook-deliveries","depth":2},{"value":"Update a webhook","id":"update-a-webhook","depth":2},{"value":"Delete a webhook","id":"delete-a-webhook","depth":2},{"value":"Webhooks vs. audit logging","id":"webhooks-vs-audit-logging","depth":2},{"value":"Best practices","id":"best-practices","depth":2},{"value":"Related guides","id":"related-guides","depth":2}],"frontmatter":{"title":"Configure webhooks","seo":{"title":"Configure webhooks"}},"lastModified":"2026-05-26T12:21:11.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/wallet/admin-guide/configure-webhooks","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}