framework-adapters

Mount official Dodo Payments checkout, portal, and webhook handlers in web frameworks.

6|1|Updated Apr 21, 2026
One-click install
npx skills add https://github.com/dodopayments/dodo-agent-plugin --skill framework-adapters-dodopayments
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: framework-adapters
Source: https://github.com/dodopayments/dodo-agent-plugin/tree/main/plugins/dodopayments/skills/framework-adapters
Command: npx skills add https://github.com/dodopayments/dodo-agent-plugin --skill framework-adapters-dodopayments

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Integrating Dodo Payments into a web framework normally means writing checkout, customer portal, and webhook routes from scratch, handling raw body preservation, environment variables, and framework-specific request shapes. This Skill guides the use of official @dodopayments/* adapter packages so those routes are mounted correctly without reinventing the plumbing. ## Core Features & Use Cases - Framework-specific handler mounting: Covers Next.js, Express, Fastify, Hono, Astro, Remix, SvelteKit, Nuxt, TanStack Start, Bun, and Convex, with correct export names and handler shapes for each. - Checkout, portal, and webhook setup: Explains static, dynamic, and session checkout modes, customer portal session endpoints, and signature-verified webhook handlers. - Environment configuration: Documents standard, Nuxt, and Convex environment variable conventions, including safe narrowing of the test_mode/live_mode literal type. - Use Case: You are building a Next.js app and need a checkout route, a customer portal endpoint, and a webhook receiver. The Skill provides the exact route files, imports, and config for @dodopayments/nextjs, plus warnings about common mistakes like duplicate POST handlers. ## Quick Start Ask your agent to add Dodo Payments checkout, customer portal, and webhook routes to your project using the official adapter for your framework.

Frequently Asked Questions about framework-adapters

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add Dodo Payments checkout to Next.js?▼

Install @dodopayments/nextjs and create app/api/checkout/route.ts exporting GET or POST from the Checkout handler. Choose one checkout mode per route: static for GET-only links, dynamic for POST carts, or session for pre-built sessions.

Which Dodo Payments adapter package should I use for my framework?▼

Each framework has a dedicated package: @dodopayments/nextjs, express, fastify, hono, astro, remix, sveltekit, nuxt, tanstack, bun, or convex. Export names differ, so check the adapter table before writing imports, since Express and Nuxt use lowercase checkoutHandler.

Why does Dodo Payments webhook verification fail in Express or Fastify?▼

Webhook handlers must receive the raw request body, not re-parsed JSON. Express needs express.raw({ type: "application/json" }) and Fastify requires a string content type parser; other frameworks preserve the raw body automatically.

Does the Dodo Payments Nuxt adapter require manual imports?▼

No. The Nuxt module auto-imports checkoutHandler, customerPortalHandler, and Webhooks inside the server directory via addServerImportsDir. Importing them from @dodopayments/nuxt fails because that entry point only exports the module itself.

Why is passing process.env.DODO_PAYMENTS_ENVIRONMENT a type error?▼

Adapter configs type environment as the literal union "test_mode" | "live_mode", while process.env values are string | undefined. Narrow it with a helper that returns "live_mode" only when the variable matches, defaulting to "test_mode".

What are the limitations of the Convex Dodo Payments integration?▼

Convex uses a component-based architecture registered in convex.config.ts rather than route handlers. It only supports session checkout, not static or dynamic modes, and uses dashboard environment variables instead of local .env files.