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.