Wire up the product ID & webhook.
The checkout demo needs two things from your Dodo dashboard: a product to sell, and a webhook endpoint to hear back from. Five minutes, no code.
Create a product, copy the ID.
- Open app.dodopayments.com/products ↗ and hit New product.
- Pick a one-time product, set the price (the demo assumes $9), save it.
- Copy the ID from the product page — it starts with
pdt_. - Paste it into the
DODO_PRODUCT_IDsecret in Lovable under Settings → Secrets.
Products created in Dodo test mode only work while the app runs in test mode (the default). Recreate the product in live mode before flipping DODO_MODE=live.
In this deployment the demo product is IKF 14 Krump Workshop ($9).
Register the webhook endpoint.
Dodo posts payment.succeeded to your app. Our route verifies the Svix signature and flips an httpOnly cookie so the return page can reveal the download.
https://<your-app>.lovable.app/api/public/dodo-webhookReplace <your-app> with your published or preview hostname (both work — the /api/public/* prefix bypasses auth).
- Open app.dodopayments.com/webhooks ↗ and hit Add endpoint.
- Paste the URL above.
- Subscribe to
payment.succeeded(addsubscription.activelater if you build a subscription flow). - Copy the signing secret Dodo shows you — it looks like
whsec_…. - Paste it into the
DODO_WEBHOOK_SECRETsecret in Lovable.
Three secrets, one endpoint.
DODO_API_KEYRequiredDashboard → Developers → API Keys
DODO_WEBHOOK_SECRETRequiredShown once when you create the webhook
DODO_PRODUCT_IDRequiredProduct page — starts with pdt_
DODO_MODEOptionalSet to `live` to charge real cards. Defaults to test.