Hi everyone,
I’m currently integrating Stripe into my Bubble app (using the API Connector and backend workflows) to handle payments and webhook confirmations. However, I’m stuck on an issue where the Stripe webhook doesn’t trigger my Bubble backend workflow unless I add /initialize at the end of the webhook URL.
I’ve set up a backend workflow in Bubble like this:
- Endpoint name:
stripe_webhook Expose as public API workflow:
Can be run without authentication:
- Method:
POST - Parameter definition: Manual definition
- Response type: JSON
When I send test webhooks from Stripe to:
https://myapp.bubbleapps.io/version-test/api/1.1/wf/stripe_webhook
I consistently get:
{
"statusCode": 404,
"body": {
"status": "NOT_FOUND",
"message": "Workflow stripe_webhook not in initialization mode"
}
}
BUT, when I change the URL to:
https://myapp.bubbleapps.io/version-test/api/1.1/wf/stripe_webhook/initialize
…the request is captured, Bubble lets me see the data structure, and I can save it.
What I’ve Tried
- Added required parameters like
id,object,type,data, etc. - Tried setting
Parameter Definitionto both manual and detected modes - Recreated the endpoint from scratch
- Tested with real and test webhook events from Stripe
- Confirmed headers are
Content-Type: application/json - Ensured I’m using the correct Stripe API version (2024-06-20)
What I Need Help With
- Why does Bubble only capture webhook data via
/initialize?
Is that expected behavior — or is my setup flawed? - After structure is saved, the webhook URL (without
/initialize) still fails to trigger the workflow. It returns 404 and doesn’t show anything in the Logs. - How do I properly set up the backend workflow to listen for Stripe events like
payment_intent.succeededand update my database?
Notes
- Stripe confirms the events are being sent (I can see them in the Dashboard logs).
- In Bubble, no workflow logs appear unless
/initializeis used. - My goal is to update a
Purchasedrecord’s status once a payment succeeds.
Any insight or fixes would be really appreciated! Happy to share screenshots or logs if needed.
Thanks ![]()
Mike