Hand-coded CMS themes. WordPress block themes, Shopify Liquid themes, HubSpot HubL, Craft CMS Twig templates, Squarespace 7.1 customizations. Block-based, accessible, performance-budgeted from commit one. Never built on a page builder. Never sold from a marketplace.
What “custom theme” actually means here
A custom theme is the layout, design system, editor experience, and front-end code for a content-driven website. The CMS handles content storage and editing; the theme is everything visitors see. Done right, it’s the difference between a Lighthouse 60 marketing site that loses revenue and a Lighthouse 98 marketing site that wins it.
Done wrong, the theme is where 80% of the technical debt accumulates. Most agencies ship themes built on three layers of nested page-builders, sixteen jQuery plugins, and a parent-theme + child-theme + framework stack that takes 30 minutes to update without breaking. We won’t.
What goes into a hand-coded theme
Design-system fidelity
We start from Figma at variable-token level. Every color, spacing scale, font ramp, and motion curve in the design becomes a CSS custom property, a theme-JSON token, or a Tailwind config entry — not a hardcoded value embedded in 40 templates. When the brand updates the primary accent color in two years, it’s one variable, not a 4-hour find-and-replace.
Editor UX that people actually want to use
For WordPress: custom Gutenberg blocks with block-variations, full-site-editing-aware patterns, ACF Pro for the cases Gutenberg doesn’t cover. Editors get the same drag-and-drop autonomy a page-builder promises — without the page-builder runtime tax. For Shopify: sectioned themes with shopify_attributes, theme app extensions, schema-defined settings. For HubSpot: HubL modules with field groups, theme settings, drag-and-drop module flexibility.
Performance-budgeted from the first commit
Every theme we ship has a per-page JavaScript budget (typically 70KB compressed for marketing sites, 120KB for storefronts). CSS budget is similar. Anything that would push us over either budget needs a justification in the PR. By launch, the theme is on Lighthouse 95+ across mobile and desktop — it’s not added at the end as “optimization phase.”
Accessibility from the keyboard up
Every interactive component is keyboard-reachable, screen-reader-labelled, and color-contrast-compliant against the design tokens. We test with VoiceOver and NVDA before launch. Not because we have to (WCAG 2.2 AA isn’t mandatory for most US/Indian sites yet), but because it’s the right thing.
Platforms we hand-code themes on
- WordPress — block themes (FSE-aware), custom Gutenberg blocks, ACF Pro field groups, theme.json design tokens, no page builders.
- Shopify — sectioned Liquid themes (Dawn-pattern or fully custom), Online Store 2.0 metaobjects, Theme App Extensions, Hydrogen when the project earns headless.
- HubSpot CMS — HubL modules with field groups, custom theme settings, smart-content rules, HubDB-driven content where it fits.
- Craft CMS — Twig templating, Matrix fields, custom field types, GraphQL when the front-end is decoupled.
- Squarespace 7.1 — design-system templates with code-injection overrides, custom CSS framework, custom JavaScript blocks. Honest scope — we tell you when Squarespace is fighting you.
What we won’t do
- We don’t use Elementor, Divi, WPBakery, Beaver Builder, Brizy, Oxygen, Bricks, or any page-builder runtime on a paid project. Ever.
- We don’t modify ThemeForest or TemplateMonster themes for clients — we’ll rebuild from scratch instead.
- We don’t deliver themes without a documented design-token system, a build pipeline, and a CI/CD workflow.
- We don’t ship themes that score below Lighthouse 90 on mobile. If it can’t hit 90, we don’t ship.
Engagement shape
A typical custom theme engagement runs 5–10 weeks from kickoff to launch. Week one is design-system extraction from Figma into platform-native tokens. Weeks two through six are template build — usually 8–15 page templates and 12–25 reusable blocks/sections. Weeks seven through nine are content migration support and editor onboarding. Week ten is launch.
Friday demo cadence (Loom video, written feedback Monday/Tuesday, re-plan Wednesday, ship Friday). One launch dress-rehearsal one week before go-live. 30-day post-launch warranty.
Pricing
- Marketing site, 10–15 templates: $18K–$45K, 5–8 weeks
- Mid-scale marketing / B2B, 20–30 templates with custom blocks: $35K–$80K, 7–12 weeks
- Enterprise / multi-locale, 40+ templates with workflow tooling: $80K–$180K, 12–20 weeks
- Shopify custom theme, sectioned + variants: $25K–$70K, 6–10 weeks
- HubSpot CMS custom theme: $30K–$75K, 7–10 weeks
Flat-fee, scoped after a one-week paid discovery. 40/30/30 milestone billing. No lock-in — if the relationship isn’t working in week three, you walk with full source code and we hand the keys.
Start the build
Tell us about the project — Figma file, current site URL, platform if you’ve already chosen one. We’ll write back within one business day with a fit assessment and a rough scope band. connect@prizorai.com or the form below.