Skip to main content

marketplace

Vercel Marketplace expert guidance — discovering, installing, and building integrations, auto-provisioned environment variables, unified billing, and the vercel integration CLI. Use when consuming third-party services, building custom integrations, or managing marketplace resources on Vercel.

Source facts

Repository
zhongjingyun/codex-plugins
Last source activity
June 10, 2026 at 03:40
Detected SKILL.md language
English
Stars
24
Forks
2

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
2 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
marketplace
description
Vercel Marketplace expert guidance — discovering, installing, and building integrations, auto-provisioned environment variables, unified billing, and the vercel integration CLI. Use when consuming third-party services, building custom integrations, or managing marketplace resources on Vercel.
metadata
{"priority":3,"docs":["https://vercel.com/docs/integrations"],"sitemap":"https://vercel.com/sitemap/docs.xml","pathPatterns":["integration.json"],"bashPatterns":["\\bvercel\\s+integration\\b","\\bvercel\\s+integration\\s+add\\b","\\bvercel\\s+integration\\s+discover\\b"]}
# Vercel Marketplace You are an expert in the Vercel Marketplace — the integration platform that connects third-party services to Vercel projects with unified billing, auto-provisioned environment variables, and one-click setup. ## Consuming Integrations ### Linked Project Preflight Integration provisioning is project-scoped. Verify the repository is linked before running `integration add`. ```bash # Check whether this directory is linked to a Vercel project test -f .vercel/project.json && echo "Linked" || echo "Not linked" # Link if needed vercel link ``` If the project is not linked, do not continue with provisioning commands until linking completes. ### Discovering Integrations ```bash # Search the Marketplace catalog from CLI vercel integration discover # Filter by category vercel integration discover --category databases vercel integration discover --category monitoring # List integrations already installed on this project vercel integration list ``` For browsing the full catalog interactively, use the [Vercel Marketplace](https://vercel.com/marketplace) dashboard. ### Getting Setup Guidance ```bash # Get agent-friendly setup guide for a specific integration vercel integration guide <name> # Include framework-specific steps when available vercel integration guide <name> --framework <fw> # Examples vercel integration guide neon vercel integration guide datadog --framework nextjs ``` Use `--framework <fw>` as the default discovery flow when framework-specific setup matters. The guide returns structured setup steps including required environment variables, SDK packages, and code snippets — ideal for agentic workflows. ### Installing an Integration ```bash # Install from CLI vercel integration add <integration-name> # Examples vercel integration add neon # Postgres database vercel integration add upstash # Redis / Kafka vercel integration add clerk # Authentication vercel integration add sentry # Error monitoring vercel integration add sanity # CMS vercel integration add datadog # Observability (auto-configures drain) ``` `vercel integration add` is the primary scripted/AI path. It installs to the currently linked project, auto-connects the integration, and auto-runs environment sync locally unless disabled. If the CLI hands off to the dashboard for provider-specific completion, treat that as fallback: ```bash vercel integration open <integration-name> ``` Complete the web step, then return to CLI verification (`vercel env ls` and local env sync check). ### Auto-Provisioned Environment Variables When you install a Marketplace integration from a linked project, Vercel automatically provisions the required environment variables for that project. **IMPORTANT: Provisioning delay after install.** After installing a database integration (especially Neon), the resource may take **1–3 minutes** to fully provision. During this window, connection attempts return HTTP 500 errors. Do NOT debug the connection string or code — just wait and retry. If local env sync was disabled or skipped, run `vercel env pull .env.local --yes` after a brief wait to get the finalized credentials. ```bash # View environment variables added by integrations vercel env ls # Example: after installing Neon, these are auto-provisioned: # POSTGRES_URL — connection string # POSTGRES_URL_NON_POOLING — direct connection # POSTGRES_USER — database user # POSTGRES_PASSWORD — database password # POSTGRES_DATABASE — database name # POSTGRES_HOST — database host ``` No manual `.env` file management is needed — the variables are injected into all environments (Development, Preview, Production) automatically. ### Using Provisioned Resources ```ts // app/api/users/route.ts — using Neon auto-provisioned env vars import { neon } from "@neondatabase/serverless"; // POSTGRES_URL is auto-injected by the Neon integration const sql = neon(process.env.POSTGRES_URL!); export async function GET() { const users = await sql`SELECT * FROM users LIMIT 10`; return Response.json(users); } ``` ```ts // app/api/cache/route.ts — using Upstash auto-provisioned env vars import { Redis } from "@upstash/redis"; // KV_REST_API_URL and KV_REST_API_TOKEN are auto-injected const redis = Redis.fromEnv(); export async function GET() { const cached = await redis.get("featured-products"); return Response.json(cached); } ``` ### Managing Integrations ```bash # List installed integrations vercel integration ls # Check usage and billing for an integration vercel integration balance <name> # Remove an integration vercel integration remove <integration-name> ``` ## Unified Billing Marketplace integrations use Vercel's unified billing system: - **Single invoice**: All integration charges appear on your Vercel bill - **Usage-based**: Pay for what you use, scaled per integration's pricing model - **Team-level billing**: Charges roll up to the Vercel team account - **No separate accounts**: No need to manage billing with each provider individually ```bash # Check current usage balance for an integration vercel integration balance datadog vercel integration balance neon ``` ## Building Integrations ### Integration Architecture Vercel integrations consist of: 1. **Integration manifest** — declares capabilities, required scopes, and UI surfaces 2. **Webhook handlers** — respond to Vercel lifecycle events 3. **UI components** — optional dashboard panels rendered within Vercel 4. **Resource provisioning** — create and manage resources for users ### Scaffold an Integration ```bash # Create a new integration project npx create-vercel-integration my-integration # Or start from the template npx create-next-app my-integration --example vercel-integration ``` ### Integration Manifest ```json // vercel-integration.json { "name": "my-integration", "slug": "my-integration", "description": "Provides X for Vercel projects", "logo": "public/logo.svg", "website": "https://my-service.com", "categories": ["databases"], "scopes": { "project": ["env-vars:read-write"], "team": ["integrations:read-write"] }, "installationType": "marketplace", "resourceTypes": [ { "name": "database", "displayName": "Database", "description": "A managed database instance" } ] } ``` ### Handling Lifecycle Webhooks ```ts // app/api/webhook/route.ts import { verifyVercelSignature } from "@vercel/integration-utils"; export async function POST(req: Request) { const body = await req.json(); // Verify the webhook is from Vercel const isValid = await verifyVercelSignature(req, body); if (!isValid) { return Response.json({ error: "Invalid signature" }, { status: 401 }); } switch (body.type) { case "integration.installed": // Provision resources for the new installation await provisionDatabase(body.payload); break; case "integration.uninstalled": // Clean up resources await deprovisionDatabase(body.payload); break; case "integration.configuration-updated": // Handle config changes await updateConfiguration(body.payload); break; } return Response.json({ received: true }); } ``` ### Provisioning Environment Variables ```ts // lib/provision.ts async function provisionEnvVars( installationId: string, projectId: string, credentials: { url: string; token: string }, ) { const response = await fetch( `https://api.vercel.com/v1/integrations/installations/${installationId}/env`, { method: "POST", headers: { Authorization: `Bearer ${process.env.VERCEL_INTEGRATION_TOKEN}`, "Content-Type": "application/json", }, body: JSON.stringify({ projectId, envVars: [ { key: "MY_SERVICE_URL", value: credentials.url, target: ["production", "preview", "development"], type: "encrypted", }, { key: "MY_SERVICE_TOKEN", value: credentials.token, target: ["production", "preview", "development"], type: "secret", }, ], }), }, ); return response.json(); } ``` ### Integration CLI Commands The `vercel integration` CLI supports these subcommands: ```bash # Discover integrations in the Marketplace catalog vercel integration discover vercel integration discover --category <category> # Get agent-friendly setup guide vercel integration guide <name> vercel integration guide <name> --framework <framework> # Add (install) an integration vercel integration add <name> # List installed integrations vercel integration list # alias: vercel integration ls # Check usage / billing balance vercel integration balance <name> # Open integration dashboard in browser (fallback when add redirects) vercel integration open <name> # Remove an integration vercel integration remove <name> ``` > **Building integrations?** Use `npx create-vercel-integration` to scaffold, then deploy your > integration app to Vercel normally with `vercel --prod`. Publish to the Marketplace via the > [Vercel Partner Dashboard](https://vercel.com/docs/integrations). ## Common Integration Categories | Category | Popular Integrations | Auto-Provisioned Env Vars | | --------------------- | --------------------------------------------- | --------------------------------------- | | Databases | Neon, Supabase, PlanetScale, MongoDB, Turso | `POSTGRES_URL`, `DATABASE_URL` | | Cache/KV | Upstash Redis | `KV_REST_API_URL`, `KV_REST_API_TOKEN` | | Auth | Clerk, Auth0, Descope | `CLERK_SECRET_KEY`, `AUTH0_SECRET` | | CMS | Sanity, Contentful, Storyblok, DatoCMS | `SANITY_PROJECT_ID`, `CONTENTFUL_TOKEN` | | Monitoring | Datadog, Sentry, Checkly, New Relic | `SENTRY_DSN`, `DD_API_KEY` | | Payments | Stripe | `STRIPE_SECRET_KEY` | | Feature Flags | LaunchDarkly, Statsig, Hypertune | `LAUNCHDARKLY_SDK_KEY` | | AI Agents & Services | CodeRabbit, Braintrust, Sourcery, Chatbase | varies by integration | | Video | Mux | `MUX_TOKEN_ID`, `MUX_TOKEN_SECRET` | | Messaging | Resend, Knock, Novu | `RESEND_API_KEY` | | Searching | Algolia, Meilisearch | `ALGOLIA_APP_ID`, `ALGOLIA_API_KEY` | | Commerce | Shopify, Swell, BigCommerce | `SHOPIFY_ACCESS_TOKEN` | ## Observability Integration Path Marketplace observability integrations (Datadog, Sentry, Axiom, Honeycomb, etc.) connect to Vercel's **Drains** system to receive telemetry. Understanding the data-type split is critical for correct setup. ### Data-Type Split | Data Type | Delivery Mechanism | Integration Setup | | ------------------ | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | | **Logs** | Native drain (auto-configured by Marketplace install) | `vercel integration add <vendor>` auto-creates drain | | **Traces** | Native drain (OpenTelemetry-compatible) | Same — auto-configured on install | | **Speed Insights** | Custom drain endpoint only | Requires manual drain creation via REST API or Dashboard (`https://vercel.com/dashboard/{team}/~/settings/log-drains`) | | **Web Analytics** | Custom drain endpoint only | Requires manual drain creation via REST API or Dashboard (`https://vercel.com/dashboard/{team}/~/settings/log-drains`) | > **Key distinction:** When you install an observability vendor via the Marketplace, it auto-configures drains for **logs and traces** only. Speed Insights and Web Analytics data require a separate, manually configured drain pointing to a custom endpoint. See `⤳ skill: observability` for drain setup details. ### Agentic Flow: Observability Vendor Setup Follow this sequence when setting up an observability integration: #### 1. Pick Vendor ```bash # Discover observability integrations vercel integration discover --category monitoring # Get setup guide for chosen vendor vercel integration guide datadog ``` #### 2. Install Integration ```bash # Install — auto-provisions env vars and creates log/trace drains vercel integration add datadog ``` #### 3. Verify Drain Created ```bash # Confirm drain was auto-configured curl -s -H "Authorization: Bearer $VERCEL_TOKEN" \ "https://api.vercel.com/v1/drains?teamId=$TEAM_ID" | jq '.[] | {id, url, type, sources}' ``` Check the response for a drain pointing to the vendor's ingestion endpoint. If no drain appears, the integration may need manual drain setup — see `⤳ skill: observability` for REST API drain creation. #### 4. Validate Endpoint ```bash # Send a test payload to the drain curl -X POST -H "Authorization: Bearer $VERCEL_TOKEN" \ "https://api.vercel.com/v1/drains/<drain-id>/test?teamId=$TEAM_ID" ``` Confirm the vendor dashboard shows the test event arriving. #### 5. Smoke Log Check ```bash # Trigger a deployment and check logs flow through vercel logs <deployment-url> --follow --since 5m # Check integration balance to confirm data is flowing vercel integration balance datadog ``` Verify that logs appear both in Vercel's runtime logs and in the vendor's dashboard.
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub