Specify a webhook-driven task for OpenClaw
Describe event inputs, validation, deduplication, and intended actions before integration work.
354,617 AI resources indexedWorking toward the world’s largest AI resource index.
Complete workflow for integrating Stripe payments (subscriptions or one-time) with Convex + Next.js. Includes hosted checkout, webhooks, UI components, and testing. Use when adding payment functionality to a Convex + Next.js app.
--- name: integrating-stripe-payments description: Complete workflow for integrating Stripe payments (subscriptions or one-time) with Convex + Next.js. Includes hosted checkout, webhooks, UI components, and testing. Use when adding payment functionality to a Convex + Next.js app. version: "1.0.0" dependencies: ["stripe", "convex", "next.js"] allowed-tools: ["stripe-mcp", "convex-mcp", "file_write", "bash"] --- # Integrating Stripe Payments ## Core Workflow When user requests Stripe payment integration for Convex + Next.js: ### 1. Requirements Gathering Ask these questions first: - **Payment type**: Subscription or one-time payment? - **Backend**: Confirm this is Convex (required for this skill) - **Checkout preference**: Hosted Stripe Checkout (recommended) or embedded? - **Pricing**: Amount, currency, billing interval for subscriptions? - **Product**: What does user get after payment? ### 2. API Keys & Environment Setup **CRITICAL**: Gather these FIRST before proceeding - MCP tools require credentials. 1. **Get Stripe API keys from user**: - Ask for Stripe Secret Key (starts with `sk_test_` or `sk_live_`) - Add to `.env.local`: `STRIPE_SECRET_KEY=sk_test_...` 2. **Install dependencies**: `npm install stripe` 3. **Set initial environment variables**: - `STRIPE_SECRET_KEY` (from step 1) - `NEXT_PUBLIC_SITE_URL=http://localhost:3000` (default local development) 4. **Use Stripe MCP tool** to create product/price and get price ID 5. **Use Convex MCP tool** to set remaining environment variables 6. **Manual fallback**: Follow `resources/environment-setup.md` Complete required env vars: - `STRIPE_SECRET_KEY` ✓ (set in step 1) - `STRIPE_PRICE_ID` (from Stripe MCP tool) - `STRIPE_WEBHOOK_SECRET` (set during webhook configuration) - `NEXT_PUBLIC_SITE_URL` ✓ (set in step 1) ### 3. Database Schema Update `convex/schema.ts` with Stripe fields. See `resources/database-schema.ts` for complete schema. ### 4. Backend Implementation Copy and customize these files: - `convex/stripe.ts` ← Use `resources/convex-stripe-actions.ts` - `convex/stripeDb.ts` ← Use `resources/convex-stripe-db.ts` - `convex/http.ts` ← Use `resources/convex-webhook-handler.ts` **Key customizations**: - Update membership tier names (`"pro"` vs `"premium"`) - Adjust auth field names (`clerkId` vs your auth system) - Set correct API version: `2025-08-27.basil` - Enable coupon codes by setting `allow_promotion_codes: true` in checkout session creation ### 5. Frontend Components Create UI components from `resources/ui-components.tsx`: - `UpgradeButton` - Shows different states based on membership - `ManageBillingButton` - Opens customer portal **UI Design Guidelines**: - Match existing app design system - Use gradients and proper state management - Show loading states and error handling - Keep prices in sync with Stripe Dashboard ### 6. Webhook Configuration 1. Get Convex deployment URL (use `.convex.site` domain) 2. Create webhook in Stripe Dashboard: `https://your-deployment.convex.site/stripe/webhook` 3. Select events: `checkout.session.completed`, `customer.subscription.*`, `invoice.*` 4. Copy webhook secret to environment variables ### 7. Testing Follow `resources/testing-checklist.md`: - Test successful payment flow - Test failed payments - Test customer portal - Verify webhook delivery - Use Stripe CLI for local testing ### 8. Production Deployment - Switch to live Stripe keys - Create production webhook endpoint - Configure Customer Portal and Smart Retries - Test with real payment (then refund) ## Best Practices **Always:** - Use hosted checkout for simplicity and security - Use `constructEventAsync` in webhooks (not `constructEvent`) - Include user metadata in checkout sessions - Handle missing `current_period_end` with fallbacks - Keep UI prices synchronized with Stripe prices - Use consistent Stripe API version across all files - Set `allow_promotion_codes: true` to enable coupon code input during checkout **Never:** - Use `.convex.cloud` for webhooks (use `.convex.site`) - Skip webhook idempotency in production - Forget to configure Customer Portal - Deploy without testing webhook delivery ## Common Issues **Webhook not working**: Check domain (`.convex.site`) and webhook secret **Membership not updating**: Verify webhook events and metadata **API errors**: Ensure consistent API version usage ## Documentation References Use **Stripe MCP tool** for latest documentation when: - Checking API changes or new features - Troubleshooting integration issues - Verifying best practices See `resources/` folder for complete code examples and detailed setup instructions.--- name: integrating-stripe-payments description: Complete workflow for integrating Stripe payments (subscriptions or one-time) with Convex + Next.js. Includes hosted checkout, webhooks, UI components, and testing. Use when adding payment functionality to a Convex + Next.js app. version: "1.0.0" dependencies: ["stripe", "convex", "next.js"] allowed-tools: ["stripe-mcp", "convex-mcp", "file_write", "bash"] --- # Integrating Stripe Payments ## Core Workflow When user requests Stripe payment integration for Convex + Next.js: ### 1. Requirements Gathering Ask these questions first: - **Payment type**: Subscription or one-time payment? - **Backend**: Confirm this is Convex (required for this skill) - **Checkout preference**: Hosted Stripe Checkout (recommended) or embedded? - **Pricing**: Amount, currency, billing interval for subscriptions? - **Product**: What does user get after payment? ### 2. API Keys & Environment Setup **CRITICAL**: Gather these FIRST before proceeding - MCP tools require credentials. 1. **Get Stripe API keys from user**: - Ask for Stripe Secret Key (starts with `sk_test_` or `sk_live_`) - Add to `.env.local`: `STRIPE_SECRET_KEY=sk_test_...` 2. **Install dependencies**: `npm install stripe` 3. **Set initial environment variables**: - `STRIPE_SECRET_KEY` (from step 1) - `NEXT_PUBLIC_SITE_URL=http://localhost:3000` (default local development) 4. **Use Stripe MCP tool** to create product/price and get price ID 5. **Use Convex MCP tool** to set remaining environment variables 6. **Manual fallback**: Follow `resources/environment-setup.md` Complete required env vars: - `STRIPE_SECRET_KEY` ✓ (set in step 1) - `STRIPE_PRICE_ID` (from Stripe MCP tool) - `STRIPE_WEBHOOK_SECRET` (set during webhook configuration) - `NEXT_PUBLIC_SITE_URL` ✓ (set in step 1) ### 3. Database Schema Update `convex/schema.ts` with Stripe fields. See `resources/database-schema.ts` for complete schema. ### 4. Backend Implementation Copy and customize these files: - `convex/stripe.ts` ← Use `resources/convex-stripe-actions.ts` - `convex/stripeDb.ts` ← Use `resources/convex-stripe-db.ts` - `convex/http.ts` ← Use `resources/convex-webhook-handler.ts` **Key customizations**: - Update membership tier names (`"pro"` vs `"premium"`) - Adjust auth field names (`clerkId` vs your auth system) - Set correct API version: `2025-08-27.basil` - Enable coupon codes by setting `allow_promotion_codes: true` in checkout session creation ### 5. Frontend Components Create UI components from `resources/ui-components.tsx`: - `UpgradeButton` - Shows different states based on membership - `ManageBillingButton` - Opens customer portal **UI Design Guidelines**: - Match existing app design system - Use gradients and proper state management - Show loading states and error handling - Keep prices in sync with Stripe Dashboard ### 6. Webhook Configuration 1. Get Convex deployment URL (use `.convex.site` domain) 2. Create webhook in Stripe Dashboard: `https://your-deployment.convex.site/stripe/webhook` 3. Select events: `checkout.session.completed`, `customer.subscription.*`, `invoice.*` 4. Copy webhook secret to environment variables ### 7. Testing Follow `resources/testing-checklist.md`: - Test successful payment flow - Test failed payments - Test customer portal - Verify webhook delivery - Use Stripe CLI for local testing ### 8. Production Deployment - Switch to live Stripe keys - Create production webhook endpoint - Configure Customer Portal and Smart Retries - Test with real payment (then refund) ## Best Practices **Always:** - Use hosted checkout for simplicity and security - Use `constructEventAsync` in webhooks (not `constructEvent`) - Include user metadata in checkout sessions - Handle missing `current_period_end` with fallbacks - Keep UI prices synchronized with Stripe prices - Use consistent Stripe API version across all files - Set `allow_promotion_codes: true` to enable coupon code input during checkout **Never:** - Use `.convex.cloud` for webhooks (use `.convex.site`) - Skip webhook idempotency in production - Forget to configure Customer Portal - Deploy without testing webhook delivery ## Common Issues **Webhook not working**: Check domain (`.convex.site`) and webhook secret **Membership not updating**: Verify webhook events and metadata **API errors**: Ensure consistent API version usage ## Documentation References Use **Stripe MCP tool** for latest documentation when: - Checking API changes or new features - Troubleshooting integration issues - Verifying best practices See `resources/` folder for complete code examples and detailed setup instructions.
Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.
Resource notes updated 2026-10-27 · Original instructions by bountydotnew