If your agency builds sites for dental practices, law firms, nonprofits, real estate brokerages, or any other vertical where every client looks 80% the same by the time you ship — you're rebuilding the same starter every project. Different logo, different copy, different domain, the same content model, the same hero section, the same "meet the team" grid, the same "schedule a consultation" CTA.
That repeated work is a cost you're absorbing on every engagement, and it's a cost that compounds. The tenth dental practice site isn't 10x faster than the first because the hard part isn't the code — it's the decisions, the opinionated structure, the content model that works for that specific kind of business.
Decoupled.io's Templates feature is designed to let you stop paying that tax. You build the starter once, point the dashboard at the GitHub repo, and it shows up in the Full Stack starter picker for everyone in your agency — ready to provision a new client site in minutes.
What a vertical template actually is
A template in Decoupled.io is a GitHub repository the dashboard can provision as the frontend for a new site. Not a zip file, not a snapshot — a live repo that you keep maintaining. When you push a fix, improvement, or new feature to the template repo, the next client site you provision picks it up automatically.
For a vertical agency, that repo might contain:
- A Drupal content model tuned to the business — a dental practice template ships a
Servicecontent type (cleaning, whitening, implants) with fields for "procedure duration," "insurance accepted," and "before/after photos." A law firm template shipsPractice Areawith fields for "jurisdiction," "case types," and "fee structure." - Pre-wired page templates — the Homepage, About, Services index, Individual Service detail, Contact, and usually one or two vertical-specific pages like "New Patient Forms" or "Client Portal."
- Brand-neutral design tokens — colors, fonts, and spacing set up to be overridden at client-onboarding time via Decoupled's Brand Settings, so the 10th site doesn't look exactly like the 9th.
- Integrations you always wire up — contact form handler, review schema markup, Google Business integration, appointment scheduler embed — all in the template, turned off by default, flipped on per client.
- Sample content that makes the site demo-able on day one — every client wants to see something before they've written their copy. A populated template closes deals.
Why private
The private part matters. Public starter repos are great for attracting new agency leads — a "we built this open-source starter for dental practices" repo on your GitHub is legitimate marketing. But the actual template you hand to paying clients should be private. That's where the accumulated IP lives:
- Years of refinements from production sites — the fix you made after a client's lawyer reviewed the privacy policy, the accessibility remediation from the WCAG audit, the SEO structured-data schema you tuned after watching 20 clients' Google rankings.
- Client feedback baked into the content model — the custom field you added to
Serviceafter the third dental office asked how to display "new patient specials." - Integration credentials and environment wiring that assumes your internal infrastructure — a Slack webhook, a Sentry project, a Sanity asset CDN, internal analytics.
- Design language that's your agency's house style, not something you want every competitor to clone and undercut you with.
When you save a private repo as a template in Decoupled.io, the dashboard uses a GitHub OAuth connection scoped to your organization. Tokens are AES-256-GCM encrypted at rest. Nobody outside your org sees the template.
What changes for the agency
Three things shift when you stop rebuilding from scratch.
1. New-client onboarding collapses to a provision step
The typical agency onboarding flow before templates:
- Kickoff call, requirements gathering (1 week)
- Clone last project's repo, strip client-specific content (half a day — error-prone, you always miss something)
- Set up hosting, DNS, Drupal instance, deploy keys (half a day)
- Spin up staging, onboard client editors (1 day)
- Build site (2-8 weeks depending on scope)
With a private template:
- Kickoff call (same)
- Click "Create Space" in the dashboard, pick your template — Drupal tenant provisions, Netlify deploys, Puck visual editor wires up, preview iframe configures, sample content imports. 2 minutes.
- Hand the client dashboard access for editing, focus on customization work that actually varies per-client (8-16 weeks reduced to 2-6).
You're not eliminating the 8 weeks of real design/content/strategy work. You're eliminating the 1-2 weeks of environment setup and boilerplate that used to eat the front of every project.
2. Fixes propagate
When you find a bug — a broken form validation, an accessibility issue, an SEO miss — you fix it in the template repo. Every new client site provisions with the fix. Existing client sites can pull it in on their own cadence (or not — some clients lock versions intentionally). The "fix it in 12 places across 12 client repos" antipattern goes away.
This also changes what fixes are worth making. When the cost of propagating a fix is 12×, you only fix things that are egregious. When the cost is 1×, you fix things that are merely annoying. The quality floor of your agency's work rises because the cost of maintaining it dropped.
3. Junior developers can deliver
The "put the senior on the boilerplate for the first two weeks" pattern ends. A junior can provision a template-based site and start working on the actual client-specific customization immediately, with an opinionated starting point that reflects the senior's judgment about how things should be structured. The template is the agency's accumulated expertise, written down in code.
The case for specializing harder
Vertical agencies usually under-invest in their templates because the value only compounds after the fifth or sixth project. The first few clients, it feels like overhead.
But the economics flip hard once you cross that threshold. An agency doing 20 dental sites a year with a good template is doing 20 customization-and-content projects — maybe 4-8 weeks each. An agency doing 20 dental sites a year without a template is doing 20 rebuild projects, and each one contains a week of undifferentiated boilerplate someone's paying for, even if that someone is the agency eating margin.
The pattern that emerges: the more verticals you try to serve, the less each template can invest in vertical-specific opinions, and the less leverage you get. Agencies that try to serve "anyone who needs a website" end up with a generic template that's not much better than a default starter. Agencies that go deep on one vertical and build a template that knows what a dental practice needs on day one extract 10x more leverage from the same template work.
This is a different take on the old "specialize or generalize" debate for agency positioning. With templates, specialization isn't just a sales advantage — it's an operational advantage that shows up in every project's margin.
How to actually ship a template
You don't need to build the perfect vertical starter on day one. The realistic path:
- Finish your next client project normally. Commit everything to a repo you own.
- Fork it into a template repo. Strip out that client's specific content (replace with sample content), logos (replace with placeholder), domain references. Keep the content model, the component library, the integration scaffolding.
- Add it to Decoupled.io as a private template. Verify the repo passes the preflight checks on the template card — branch reachable,
package.jsonpresent, for Next.js the Netlify plugin wired up, content payload JSON with the right shape. - Use it on your next project. Notice what you changed. Push those changes back to the template. Repeat.
After 3-4 client projects, your template is probably better than anything you could have designed upfront, because it's shaped by real client feedback rather than your best guess about what a client needed.
After 10 projects, you have a genuine competitive moat — and new hires can ship their first client site in the same time it used to take to set up local dev.
Further reading
- Templates docs — the full repo checklist, provisioning flow, and private-repo OAuth story.
- Getting Started — if you haven't created your first Decoupled.io space yet, start here.
- Starters — the 100+ open-source starters we ship, useful as a reference for what a complete template looks like.