Custom EmDash plugin development

You need something the ecosystem does not have yet. We build it as a sandboxed Worker plugin and hand you the repo.

From
$2,500
starting price
Ships in
4 weeks
from kickoff
Booking
Open
Q2 2026
Reply within
1 day
business hours

A plugin engagement is a different shape from a site engagement: you bring a specific gap — a custom form, a third-party sync, a content automation, the thing the EmDash ecosystem does not have yet — and four weeks later you own the repo, the docs, and (by default) a public release that doubles as marketing. The work is bounded by a written spec signed off in week one, against the EmDash plugin API and the Cloudflare Worker isolate model: declared permissions, no filesystem access, no surprise side effects on your customers’ sites. Weeks two and three are iterative builds against a staging EmDash instance you install at every milestone. Week four hardens the plugin, writes the README, and ships the release — to your GitHub org, ours, or the EmDash plugin index, your call. The same engagement covers the dual-use case: agencies who keep hitting the same gap across client sites and want it solved once, and in-house teams who would rather use a sandboxed plugin than maintain a one-off integration. Starting at $2,500, with an optional $500-per-month maintenance retainer for plugin-API breaking changes.

For analytics-flavored plugin work specifically — UTM persistence, GTM injection, event taxonomies — our open-source GA4 + GTM + UTM recipe is the reference implementation we usually fork on day one. Greenfield builds where the plugin ships alongside the rest of the stack are covered in the vibecoding marketing-site post.

Who this is for

Built for the team that wants this solved.

  • Agencies who keep hitting the same gap on every client site (custom forms, third-party syncs, content automations) and want it solved once.
  • In-house teams whose CMS workflow needs an integration that does not exist on EmDash yet.
  • Anyone who wants to ship the plugin to the EmDash community as marketing.
What's included

6 things, in scope from day one.

  • 01 Discovery: scoping doc with API surface, permissions, and edge cases.
  • 02 Plugin scaffold (sandboxed Worker isolate, EmDash plugin API, permissions declared up front).
  • 03 Admin UI components matched to EmDash visual conventions.
  • 04 Tests + GitHub Actions CI.
  • 05 Public open-source release on your org or ours, your call.
  • 06 30 days of bug-fix support.
Timeline

3 phases over 4 weeks, then you ship.

Week 1

Discovery + spec sign-off.

01
Week 2–3

Build. You see preview installs against a staging EmDash instance.

02
Week 4

Hardening, docs, release. 30-day support window opens.

03
From $2,500

Investment

Starting price, fixed scope.

Plus $500/mo optional maintenance retainer. Final scope after intro call.

Starting at
$2,500
Plus $500/mo optional maintenance retainer. Final scope after intro call.
Timeline
4 weeks
from kickoff to handoff
Intro call
Free · 30 min
no obligation, no pitch deck
How we work

3 steps. No surprises.

— 01
Scope
A written spec — we agree what the plugin does and does not do before any code.
— 02
Build
Iterative builds against a staging EmDash. You install at every milestone.
— 03
Ship
Public repo, README, and (if you want) a launch post and submission to the EmDash plugin index.
Tech stack

The tools we'll be using.

— 01
EmDash plugin API.
— 02
Cloudflare Workers (sandboxed isolates).
— 03
TypeScript end-to-end.
FAQ

Frequently asked.

Can the plugin stay private?

Yes — you own the repo. We default to public so the work doubles as marketing for both of us, but private is fine.

What if EmDash changes their plugin API?

Plugins on Cloudflare-sandboxed Workers are isolated. Breaking changes happen but are rare and documented; the maintenance retainer covers them.

Will it work on someone else's EmDash site?

Yes if you publish it. The plugin format is the same across instances.

Ready to talk?

30 minutes, no obligation. We'll either tell you it makes sense — or that it doesn't.