# psd → shopify
PSD to Shopify, Dawn-first sections.
Send a layered PSD. Ship a Shopify Online Store 2.0 build: sections with schema, JSON templates, Liquid patterns, metafields wired. Dawn or Sense as base; heavy customisation acceptable. No app bloat, no theme locking.
What you get.
- Online Store 2.0 sections with schema.json blocks. Merchant-editable via Theme Editor without touching code.
- JSON templates for product, collection, page, blog, article. Sections composed by the merchant per template.
- Metafields wired for product variants, collection descriptions, and CMS-driven landing content. Metaobjects for repeatable structures.
- Cart drawer and product page updated with Section Rendering API (no full-page refresh on cart update).
- Dawn or Sense base theme, heavily customised. No random theme from the Theme Store that fights on every change.
- App minimum. Judge.me, Klaviyo, and ReCharge integrated if the client already uses them. No 20-app tax.
Real code output.
A real example of what ships. Not a rendered marketing screenshot; the actual source in your repo.
{% comment %} sections/hero-split.liquid {% endcomment %}
<section class="hero-split" data-section-id="{{ section.id }}">
<div class="hero-split__content">
<p class="hero-split__eyebrow">{{ section.settings.eyebrow }}</p>
<h1 class="hero-split__title">{{ section.settings.title }}</h1>
<a href="{{ section.settings.cta_url }}" class="btn btn--primary">
{{ section.settings.cta_label }}
</a>
</div>
</section>
{% schema %}
{ "name": "Hero split",
"settings": [
{ "type": "text", "id": "eyebrow", "label": "Eyebrow" },
{ "type": "text", "id": "title", "label": "H1" },
{ "type": "url", "id": "cta_url", "label": "CTA URL" },
{ "type": "text", "id": "cta_label","label": "CTA label" }
],
"presets": [{ "name": "Hero split" }]
}
{% endschema %}
Tools we use.
Hand-code from Dawn or Sense base. GitHub Copilot inline for Liquid boilerplate. Shopify CLI for local dev + theme push. Alchemy for metafield tooling on complex catalogues.
Turnaround.
| Scope | Turnaround |
|---|---|
| Single section | 5d |
| 5 sections (home + landing) | 10d |
| Full theme customisation | 14-21d |
Pricing.
Single Shopify section from $499. 5-section bundle from $2,290. See /pricing/ for the full table.
FAQ.
Which base theme?
Dawn by default (Shopify official, actively maintained). Sense on request. Custom theme from a Shopify Partner allowed if the client already runs it.
Do you handle checkout customisation?
Checkout Extensibility on Shopify Plus for logic and UI extensions. On non-Plus, we work within checkout.liquid limits until Shopify sunsets it fully.
Metafields and metaobjects?
Yes. Metaobjects for repeatable structures (team, testimonials, FAQ), metafields on products for spec sheets or variant descriptors.
Section Rendering API?
Yes. Cart drawer, product variants, and predictive search use Section Rendering to avoid full-page refresh.
App integrations?
Judge.me, Klaviyo, ReCharge, Recharge Bundles, Loox, Yotpo, Rewind. If it has a Shopify Storefront-compatible embed, we wire it. Not 20 apps.
Ownership?
Full theme code as a Git repo. Client owns the store, we keep no lock. Fourteen-day fix window on section bugs.
Send a Figma link.
Two-line brief, one Figma URL, one email. Quote back inside 24 hours weekdays. If you have a stack constraint (React version, Tailwind config, existing design tokens), say so up front.