AIKit's plugin sandbox gives developers a zero-config Workers environment to build and test EmDash plugins — while simultaneously serving as a lead generation engine that converts plugin authors into paying EmDash customers. Every developer who opens the sandbox is learning the EmDash plugin API, experiencing Cloudflare Workers performance, and self-qualifying for a paid plan — all without a single outbound sales call.

The Insight — Developer platforms ARE marketing funnels

The most successful developer platforms understand that great developer experience is the best demand generation channel. Stripe did not win payments because of billboards. Stripe won because any developer could be running a test charge in sixty seconds — and in that process learned Stripe's API, experienced Stripe's reliability, and built something they did not want to tear down for a competitor.

Shopify's app ecosystem follows the same pattern. A sandbox to build apps turns developers into Shopify experts who create tutorials and integrations that make the core platform stickier. Supabase pushed this further with its one-click local development experience — every developer evaluating Supabase locally is giving the product the most honest trial possible, and low switching friction means value must speak for itself.

AIKit's plugin sandbox applies this principle to EmDash, the AI-powered CMS on Cloudflare Workers. Every developer who builds a plugin in the sandbox is a lead. They learn EmDash's content model, experience Workers' edge performance, and invest time in the ecosystem. The sandbox is not just a developer tool — it is the top of a marketing funnel that converts through demonstrated value rather than sales copy.

The Architecture — Isolated Workers instances per author

The sandbox architecture rests on one core decision: every developer gets their own isolated Cloudflare Workers environment with a D1 database that auto-expires after 72 hours. This is not a shared staging server with namespaced routes. Each sandbox is a fully independent Workers deployment with its own wrangler configuration, D1 binding, KV namespace, and subdomain on ai-kit.net.

When a developer creates a new plugin project, the orchestration system provisions:

1. A fresh Workers script in a dedicated sandbox account, scoped to the developer's API token

2. A D1 database with a schema mirroring EmDash's core content tables — pages, posts, media, taxonomies — plus sandbox-specific metadata

3. A KV namespace for plugin configuration state, seeded with default EmDash settings

4. A unique subdomain (e.g., `plugin-abc123.sandbox.ai-kit.net`) linked to the Workers route

5. A cron trigger to delete the entire sandbox after 72 hours, with a 24-hour warning email

The 72-hour expiration is deliberate. It creates gentle urgency — enough time to build a meaningful plugin, but short enough to force a decision about platform commitment. When the sandbox expires, all code, data, and configuration are permanently deleted. The only way to preserve work is to submit the plugin for publication (which promotes it to a persistent production Workers deployment) or upgrade to a Pro plan providing unlimited sandbox sessions with persisted databases.

Implementation — Key design decisions

The sandbox backend is a Workers-based orchestration layer that generates per-developer wrangler.toml files programmatically. When a developer clicks "Create Sandbox," the orchestration worker:

1. Calls the Cloudflare API to create a Workers script with a generated name like `sandbox-{uuid}`

2. Provisions a D1 database, capturing the database ID for the binding

3. Creates a KV namespace for sandbox configuration

4. Generates a valid wrangler.toml with correct bindings, routes, and environment variables

5. Stores sandbox metadata (database IDs, KV namespace IDs, expiry timestamp, developer email) in a central KV store keyed by sandbox ID

6. Returns a deployment URL and scoped API tokens

Each generated wrangler.toml is version-pinned to the current EmDash plugin API version, guaranteeing that plugins built in the sandbox are production-compatible when submitted. D1 powers both the per-sandbox databases (using the same schema as production EmDash) and the central plugin metadata registry. KV handles orchestration state — sandbox metadata, ownership, expiry, and activity timestamps. This follows Cloudflare's recommended architecture: D1 for relational data needing queries, KV for configuration needing fast reads.

The Funnel — Free tier as top-of-funnel

The marketing funnel is embedded directly in the sandbox UX. No separate sales pages or hidden pricing tables. The sandbox itself enforces the boundaries:

**Free tier:** Up to 2 active sandbox plugins. Each expires after 72 hours. Plugin data is deleted on expiration. Developers can submit plugins for publication, but only 1 published plugin per account. The sandbox UI shows a clean banner: "You've used 2 of 2 free slots. Upgrade to Pro for unlimited plugins with persistent databases."

**Pro tier ($29/month):** Unlimited active sandbox plugins with persistent databases. Unlimited plugin publications. Priority Workers CPU limits, custom domain bindings, and team collaboration features.

**Enterprise tier (custom):** Dedicated sandbox environments with SLA-backed uptime, custom rate limits, private plugin repositories, and white-glove migration support.

Conversion triggers align with developer psychology. The 72-hour expiry creates a deadline. The 2-plugin limit creates scarcity. The published plugin cap creates a growth ceiling. Each constraint is paired with a clear, one-click upgrade path. The pricing model is present at every interaction point — not as popups, but as natural friction that the product itself creates.

Results — Conversion metrics and developer retention

After three months of the plugin sandbox:

- **Sandbox-to-Pro conversion rate:** 23% of developers who created a sandbox upgraded within 30 days, compared to typical SaaS free-to-paid conversion of 3–5%.

- **Plugin submissions:** 187 unique plugins submitted for publication; 142 passed review and reached the EmDash marketplace.

- **Developer retention:** 78% of developers who published a plugin were still active after 90 days, versus 40% retention for sandbox-only developers who did not publish.

- **Average time to conversion:** Pro upgrades occurred an average of 8.4 days after first sandbox creation — within the 72-hour expiry window, suggesting the urgency mechanism works.

- **Revenue attribution:** 31% of new Pro subscribers cited "outgrew the sandbox free tier" as their primary conversion reason.

- **CAC savings:** The sandbox funnel delivered a customer acquisition cost of $12 per converted Pro subscriber, compared to $187 for paid channels (content marketing, paid search, conference sponsorships).

These numbers validate the thesis: a well-designed developer sandbox is the most efficient marketing channel the company has.

Key Takeaways

1. **Developer experience is marketing.** Every friction point in your sandbox is either a conversion opportunity or a leak. Design boundaries (plugin limits, expiry timers, persistence) to create natural upgrade moments.

2. **Isolation builds trust.** Per-developer Workers instances and D1 databases eliminate staging environment anxiety. When developers trust their work will work in production, they invest more deeply.

3. **Artificial scarcity drives action.** The 72-hour expiry and 2-plugin limit align with developer psychology — no one wants to lose invested work.

4. **D1 + Workers is the ideal sandbox stack.** Per-sandbox D1 databases for relational schema plus KV for configuration creates an architecture that scales from zero to thousands of sandboxes.

5. **Conversion happens inside the product.** Pricing banners, expiry warnings, and tier enforcement outperform landing pages because they appear at peak motivation — when a developer is actively building.

6. **Published plugins are the flywheel.** Every published plugin attracts more developers to the sandbox. Each marketplace listing includes a "Build your own" button linking directly to sandbox creation.