Set up a Stripe webhook so customer events arrive in real time

Illustrated walkthrough for merchants to add a Stripe webhook so customer charges and subscriptions sync to Deskwoot in real time.

Updated June 2, 2026Also available in: Deutsch, Português

Without a webhook, Deskwoot pulls your Stripe customer data once every 4 hours through a background sync. A customer who paid 2 minutes ago and then opens your live chat to ask about that order may not show up in the conversation sidebar yet, and the AI bot will not see the order either.

Adding a webhook closes that gap. Stripe pushes events to Deskwoot the moment they happen on your account. This guide walks you through every click with screenshots from the actual Stripe Dashboard.

Step 1: Copy your Webhook URL from Deskwoot

Open Settings → Integrations → Stripe in Deskwoot. The Stripe integration card shows your personal Webhook URL. It looks like https://deskwoot.com/api/webhooks/stripe-customer/<your-integration-id>. Click the copy button next to it.

Step 2: Open the Stripe Webhooks page

Log in to dashboard.stripe.com. In the bottom-left corner click Developers, then click Webhooks in the popup.

Stripe Dashboard with the Developers link in the bottom-left and the Webhooks item highlighted in the popup menu

Step 3: Add a destination and select the 8 events

On the Webhooks page click Add destination. In the wizard:

  1. Leave Event destination scope on Your account.
  2. Switch to the All events tab.
  3. In the search field find and check each of these 8 events:
    • charge.succeeded
    • charge.refunded
    • customer.created
    • customer.updated
    • customer.subscription.created
    • customer.subscription.updated
    • customer.subscription.deleted
    • invoice.paid
  4. Leave the API version on the Stripe default. Click Continue.
Stripe wizard 'Configure your event destination' with arrows pointing at the 'Your account' scope, the 'All events' tab, the event search field, and the Continue button

Step 4: Choose the destination type

Pick Webhook endpoint (it is usually pre-selected for you) and click Continue.

Stripe wizard 'Choose where you want to send events' with the Webhook endpoint option selected and the Continue button highlighted

Step 5: Configure the destination

Type Deskwoot as the Destination name, paste the Webhook URL you copied in Step 1 into the Endpoint URL field, and click Create destination. The description is optional.

Stripe 'Configure destination' form with arrows at the Destination name field set to Deskwoot, the Endpoint URL field filled in, and the Create destination button

Step 6: Reveal and copy the signing secret

Stripe now shows the newly created webhook endpoint with an Active badge. In the right column find the Signing secret box, click the eye icon to reveal it, and copy the whsec_ value.

New Stripe webhook endpoint page with an Active badge and the Signing secret box (whsec_...) highlighted on the right side

Step 7: Paste the secret back into Deskwoot

Back in Deskwoot under Settings → Integrations → Stripe, paste the whsec_ value into the Webhook signing secret field and click Save. The integration card status flips to "Connected".

Step 8: Send a test webhook

Back on the Stripe webhook endpoint page, click Send test webhook. Pick charge.succeeded from the dropdown and click Send test webhook. Within a few seconds Stripe shows a 200 response next to the test event. You're done.

Live chat agents and the AI bot will now see new charges, refunds, and subscription changes the moment they hit Stripe instead of waiting for the next sync cycle.

Troubleshooting

The test webhook returns a 4xx error. Open Deskwoot under Settings → Integrations → Stripe and confirm the signing secret matches exactly what Stripe showed you, no leading or trailing spaces. The secret must match for signature verification to succeed.

The endpoint shows a 412 Precondition Failed. Deskwoot has the integration but no signing secret saved yet. Paste the whsec_ value into the Webhook signing secret field and save.

Events arrive but customers still do not appear in Deskwoot. Most likely the events you selected do not include charge.succeeded or customer.created. Open the webhook endpoint in Stripe, click Update details, and confirm the full event list above is selected.

Deskwoot interactive demo