How to Add Made-to-Order on Shopify (Step-by-Step + Copy-Paste Code) – The Node Blox, Sterling VA

How to Add Made-to-Order on Shopify

If you sell products that are crafted, customized, or built after purchase, this guide is your new best friend. In plain English (and a dash of code), I’ll show you how to add made-to-order on Shopify the right way so customers see the exact lead time, your team gets clean production signals, and your SEO and conversion rates smile back.

I’m writing this as your friendly neighborhood eCommerce crew at The Node Blox a Shopify & SEO agency in Sterling, Northern Virginia (DMV). We’ve implemented made-to-order (MTO) for boutiques, furniture makers, jewelers, and craft brands. Below is the exact checklist we use to launch MTO quickly and cleanly.

What “Made-to-Order on Shopify” Really Means (and How It’s Different)

Made-to-order (MTO) means you produce after purchase. It’s not the same as:

  • Pre-order: You haven’t made stock yet (often a launch or restock), but customers buy now to reserve.
  • Personalization: The base product exists; the customer adds details (engraving, monogram, color).
  • Bespoke: Fully custom, one-off; often requires quotes or draft orders.

Why sellers choose MTO on Shopify: you avoid dead stock, highlight craftsmanship, and offer variations without bloating inventory. The catch? You must set expectations clearly (lead time), control shipping options, and route orders into production smoothly.

How to Add Made-to-Order on Shopify (Fastest Path)

We’ll combine admin settings, metafields, liquid conditions, and (optionally) Shopify Flow for automations. You’ll walk away with a production-ready MTO system.

Step 1 – Turn on “Continue selling when out of stock”

Why: MTO items shouldn’t block purchases when inventory is zero.

Admin path:
Products → choose product → Inventory
Continue selling when out of stock

If you truly have limited raw materials, use a realistic stock number and let it go to zero (then pause). For most MTO brands, “continue selling” works best.

Tag the product made-to-order
…or, if you prefer metafields, we’ll add those next.

Step 2 — Create product metafields for lead time (non-devs can edit)

Admin path: Settings → Custom data → Products → Add definition

Create:

  • Boolean: Namespace custom.mto, Key is_mto (Name: “Is Made to Order”)
  • Integer: Namespace custom.mto, Key lead_time_days (Name: “Lead Time (days)”)
  • Single line text: Namespace custom.mto, Key mto_notice (Name: “MTO Notice”)

Now your team can open a product and set:
Is MTO = true, Lead time (e.g., 10), Notice (e.g., “Hand-finished in our Sterling, VA workshop.”)

Step 3 — Show an “MTO” badge + estimated ship date (copy-paste Liquid)

Add this snippet to your product template (main-product.liquid or your theme’s product section):

{% assign is_mto = false %}
{% if product.tags contains 'made-to-order' %}
  {% assign is_mto = true %}
{% endif %}
{% if product.metafields.custom.mto.is_mto == true %}
  {% assign is_mto = true %}
{% endif %}

{% if is_mto %}
  <div class="mto-badge" style="display:inline-block;padding:.35rem .5rem;background:#111;color:#fff;border-radius:4px;font-size:.85rem;">
    Made to Order
  </div>

  {% assign lead = product.metafields.custom.mto.lead_time_days | default: 7 %}
  {% comment %}
    Basic date math: today + lead days.
    (This uses theme date filters; if your theme lacks them, show "Ships in X–Y days" instead.)
  {% endcomment %}
  {% assign today_ts = 'now' | date: '%s' %}
  {% assign seconds = lead | times: 86400 %}
  {% assign ship_ts = today_ts | plus: seconds %}
  {% assign ship_date = ship_ts | date: '%B %d, %Y' %}

  <p class="mto-leadtime" style="margin-top:.5rem;">
    Estimated ship date: <strong>{{ ship_date }}</strong>
    {% if product.metafields.custom.mto.mto_notice != blank %}
      — {{ product.metafields.custom.mto.mto_notice }}
    {% endif %}
  </p>
{% endif %}

💡 Good UX tip: Put this right near the Add to Cart button so nobody misses it.

Step 4 — Hide “Buy it now” (dynamic checkout) for MTO items

“Buy it now” can skip your cart (and the helpful lead-time/terms). Hide it for MTO:

{% if is_mto %}
  <style>.shopify-payment-button { display: none !important; }</style>
{% endif %}

This forces the standard cart → checkout flow where you can add MTO disclaimers and shipping expectations.

Step 5 — Capture custom details with line item properties (optional)

Add optional inputs for measurements, engraving, fabric choices, etc.

{% if is_mto %}
  <div class="product-custom-fields" style="margin:.75rem 0;">
    <label for="engraving">Engraving (optional)</label>
    <input type="text" id="engraving" name="properties[Engraving]" maxlength="25" placeholder="Max 25 characters" />
  </div>
{% endif %}

Show in cart so customers can confirm:

{% for p in item.properties %}
  {% unless p.last == blank %}
    <div class="line-prop">{{ p.first }}: {{ p.last }}</div>
  {% endunless %}
{% endfor %}

Step 6 — Tag MTO orders and automate production (Shopify Flow ready)

If you use Shopify Flow (Shopify, Advanced, or Plus):

Flow 1: Tag and route

  • Trigger: Order created
  • Condition: If line items contain product tag = made-to-order OR metafield is_mto = true
  • Actions: Add order tag MTO, send email/slack to production, set internal note “WIP: Queued”

Flow 2: WIP → Ready to Ship

  • Trigger: Fulfillment created OR location scan
  • Actions: Remove tag WIP, add Ready, send “Your order is entering final QC” email

No Flow? You can manually filter orders by tag and move through statuses like Queued → In Progress → QC → Packed → Shipped.

Step 7 – Split shipping profiles (don’t show fast methods for MTO)

Admin path: Settings → Shipping and delivery → Create profile

  • Create “Made-to-Order” shipping profile
  • Add MTO products to that profile
  • Offer realistic methods (e.g., Ground) that match your lead-time promise
  • Avoid absurd ETAs (2-day air) unless you actually can make + ship that fast

Bonus: In your cart or shipping step, display:
Heads up: This item is made to order. Shipping speed applies after the crafting period.”

How to Add Made-to-Order on Shopify (Fastest Path)

UX Patterns That Boost Made-to-Order Conversions

  • Badge envy: A tasteful Made to Order badge signals craftsmanship.
  • Lead-time clarity: “Handcrafted in 7–10 business days” beats vague “Ships soon.”
  • Delivery window: If your lead time is 10 days and Ground is 3–5, show “Estimated arrival: 2–3 weeks.”
  • Microcopy: Reassure shoppers: “We’ll keep you updated at each step—production start, ready for shipment, and tracking.”
  • Hide dynamic checkout for MTO (we did).
  • Use a sticky mini-FAQ on the product page: Can I rush? Can I cancel? What if it doesn’t fit?

🧪 We’ve repeatedly seen 10–30% conversion lifts after adding clear lead-time labels and arrival windows shoppers love certainty.

Apps to Consider (Only if You Need Them)

  • Product options & pricing add-ons: For conditional fields, swatches, and surcharges.
  • Pre-order (if you want deposits): Put down 20–50% now, balance on shipment.
  • Production tracking/Kanban: Keep WIP organized if your team is large.
  • ETA calculators: Convert lead time + carrier speed to an actual date range.

We build many MTO stores with zero new apps Shopify’s native tools + a few theme edits go a long way. When complexity grows, pick one options app and keep the UX simple.

Operations Blueprint (The Part Everyone Else Skips)

Lead-time math
Lead days = production + buffer (supplier variability, weekends, QC)
Arrival = lead days + carrier days (per destination)

Batching
If your workflow is artisanal, batch similar items by week. Set visible “Order by Tuesday → ships next Friday” cutoffs. Accurately batching often reduces cancellations.

Quality control
Use a 3-point QC (finish, size/engraving accuracy, packaging). A simple checklist printed with each work order reduces returns.

Returns & exchanges
MTO often allows faulty/damaged returns, but not change-of-mind. Be clear and kind: “We’ll repair or replace any workmanship issues.”

Metrics to watch

  • On-time rate (% of orders shipped on/before estimate)
  • Cancellation rate (pre-production vs post-production)
  • WIP aging (orders stuck >X days)
  • MTO conversion rate vs in-stock

Pro tip: Add an “MTO shop policy” page and link it from all MTO PDPs. It keeps policy content consistent and ranks for long-tail “how long does made to order take” queries.

FAQs

Q1: How do I add made-to-order on Shopify without apps?
Use Continue selling when out of stock, add product metafields for is_mto and lead_time_days, display them with Liquid (badge + ship date), hide dynamic checkout, and tag orders for production.

Q2: What’s the difference between made-to-order and pre-order?
Pre-order reserves future inventory. MTO is crafted after purchase. Messaging and policies differ; don’t mix them.

Q3: Can I collect only a deposit for made-to-order?
Yes, with a pre-order/deposit app, draft orders, or manual invoicing. Just keep the UX crystal-clear.

Q4: Will made-to-order hurt my SEO or sales?
No, clear lead times improve trust and conversions. Use FAQ schema and internal links to strengthen organic performance.

Q5: How do I show accurate delivery windows?
Lead time (days) + shipping (days) by zone. Show the arrival range (e.g., “Est. arrival: 2–3 weeks”).

Q6: What should my return policy be?
Allow returns for faults/damage; restrict change-of-mind. Place the policy link near the Add to Cart button.

Copy-Paste: Minimal MTO Block (drop-in)

{% assign is_mto = product.tags contains 'made-to-order' or product.metafields.custom.mto.is_mto == true %}

{% if is_mto %}
  <div class="mto-banner">
    <strong>Made to Order:</strong>
    {% assign lead = product.metafields.custom.mto.lead_time_days | default: 7 %}
    Ships in {{ lead }} business days.
  </div>
  <style>.mto-banner{background:#f6f6f6;padding:.75rem;border-radius:6px;margin:.75rem 0;}</style>
{% endif %}

If your theme struggles with date math, this fallback keeps things simple: “Ships in X business days.”

Local Advantage: Work with The Node Blox (Sterling, Northern VA)

We’re The Node Blox a Shopify, web development, app development, and SEO strategy team serving Sterling, Ashburn, Reston, Fairfax, and the broader DMV. We implement MTO setups in days (not weeks) with:

  • Clean Liquid and metafield patterns your team can maintain
  • Shopify Flow automations wired to your production reality
  • SEO & CRO tweaks that lift conversions without gimmicks

On-Page SEO & Launch Checklist (don’t skip)

  • Slug: /how-to-add-made-to-order-on-shopify/
  • H1: exact phrase early (done)
  • First 100 words: include “made-to-order on Shopify” + “Sterling VA / Northern VA”
  • Internal links: web dev, app dev, SEO strategy, contact (done)
  • Images (3–4):
    • Product metafields screen
    • Product page with MTO badge
    • Shipping profile split
    • Optional Flow overview
      Alt text includes “Made to order on Shopify, Sterling VA”
  • Schema: FAQ (above) + you can add HowTo schema for steps
  • Sticky CTA: “Get MTO set up in 48h. Book a free consult”
  • Speed: compress images, lazy-load, test in Lighthouse
  • GMB boost: publish a post: “Now offering made-to-order Shopify setups in Northern VA.”

TL;DR: The 7-Step Made-to-Order Setup

  1. Continue selling when out of stock (per MTO product)
  2. Add metafields (is_mto, lead_time_days, mto_notice)
  3. Show MTO badge + estimated ship date (Liquid)
  4. Hide dynamic checkout for MTO
  5. Capture line item properties (optional custom details)
  6. Tag & automate production (Shopify Flow or manual process)
  7. Split shipping profiles for realistic ETAs

Ready to Make It Real?

If you want us to wire this into your theme, clean up the UX, and plug in smart automations, The Node Blox can handle it end-to-end. We’re local to Sterling, Northern Virginia (DMV) and ship results nationwide. See us on Instagram & LinkedIn.

Call us today at +1 202-400-0428 or Contact Us to book your audit. Get your free 30-minute MTO setup consult

Ready to Launch?

Pick your package, book a kickoff call, and let’s turn your vision into a high-performing website that wows visitors and drives growth.

Explore Our Categories