Add custom code to your Bubble app. Buildprint builds it, hosts it and plugs it into your app.
Extensions are websites and API endpoints that run next to your Bubble app, with their own database, file storage and secrets.
Create an endpoint that receives Stripe webhooks, verifies them, and marks the order as paid in Bubble.

I need your Stripe signing secret. It stays on the server.
Published stripe-webhook
Verifies Stripe events and marks the order as paid in Bubble.
Build the parts that are slow or hard in Bubble. Ask for a webhook, an API or a whole website.
Describe the result you want. Buildprint Agent picks the structure, asks for anything it needs, and gives you a URL to use from your app.
Take Stripe webhooks
Check each event's signature and mark the order as paid in your Bubble app.
export default {async fetch(request: Request, env: Env) {const event = await verifyStripe(request, env.STRIPE_WEBHOOK_SECRET);if (event.type === "checkout.session.completed") {await markOrderPaid(event.data.object.metadata.order_id, env);}return new Response("ok");},};
Rate limit checkout
Stop people guessing discount codes, without filling your Bubble database.
- POST/check?code=SUMMER10200
- POST/check?code=SUMMER11200
- POST/check?code=SUMMER12200
- POST/check?code=SUMMER13429
- POST/check?code=SUMMER14429
Give customers a portal
A site where customers see their orders and update their details.
- #1042£86.40Paid
- #1038£24.00Shipped
- #1031£112.50Shipped
Handle big files
Take large uploads and build data exports, kept in the Extension's own file storage.
- exports/orders-2026-10.csv4.2 MB
- exports/customers-2026-10.csv1.8 MB
- uploads/product-demo.mp4640 MB
Each Extension can have a database, file storage and secrets. Trying a change never touches real data.
Test and live are separate
Each has its own data. Agent works on test, and checks with you before changing live data.
Agent asks for your keys
Agent asks for API keys and tokens through a secure prompt, and sets them for test, live or both.
Secrets stay on the server
Only server code can read them. They're never sent to a visitor's browser.
Deletes can be undone
Data and files are kept for 30 days after you delete an Extension, so Agent can bring them back.
- DatabaseLiveTest
- StorageLiveTest
- STRIPE_WEBHOOK_SECRET••••••••Test
- STRIPE_WEBHOOK_SECRET••••••••Live
- BUBBLE_API_TOKEN••••••••Test
- BUBBLE_API_TOKEN••••••••Live
Every publish gets its own URL. Test runs the new code while live keeps the old.
A new publish never changes an older URL, and both keep their data. Tell Agent where you're using the Extension and it picks the right one.
Ship to live when you're ready
See what's on test and what's on live, and who published each version.
c93e1b7TestRetry when Bubble is slow to answer12m agoa41f9c2LiveVerify Stripe signatures2d ago7d20e58First version3d ago
See how it's running
Every Extension shows its requests, errors and response times, with logs from the last 24 hours.
Common questions, answered.
Do I need to know how to code?
No. Tell Buildprint Agent what you want. It writes the code, sets up the database and storage, and publishes it.
How does my Bubble app use an Extension?
Every Extension has a URL. Call it from the API Connector, point a service like Stripe at it, or link to it from a page. Agent gives you the test or live URL depending on where you'll use it.
Can anyone call my Extension?
Extension URLs are public unless the Extension checks who's calling. For private data or protected actions, ask Agent to add authentication.
Can I use my own domain?
Extensions are published on a buildprintusercontent.com subdomain. You can change it to your project's name, and it applies to every Extension in the project.
How much does it cost?
Extension use is charged at Cloudflare's list prices, and paid plans include $5 a month of usage. Most projects never go over it. See the pricing table.
Build the part Bubble can't. Describe it, and Agent publishes it.
Connect your Bubble app, then ask Buildprint Agent for the webhook, API or site you need.