Checkout extensibility: what you can and cannot change
Checkout is the part of Shopify you most want to change and the part you control least. That is deliberate: it is also the part Shopify has optimised hardest and made responsible for payment compliance.
Modern checkout extensibility gives you defined extension points. This is what they cover and what they do not.
Where you can extend#
| Extension point | Typical use |
|---|---|
| UI extensions at defined positions | Custom fields, delivery instructions, gift options |
| Validation rules | Blocking an order that violates a business rule |
| Discount logic | Custom promotion behaviour beyond the built-in types |
| Delivery customisation | Reordering, renaming or hiding shipping options |
| Post-purchase page | Upsells and additional information after payment |
| Branding controls | Colours, fonts and layout within the given structure |
What remains Shopify's#
- The order of the checkout steps and the overall structure.
- Payment handling and PCI scope — you do not touch card data.
- The order object model that everything downstream reads.
- The fraud and risk layer.
- Anything requiring arbitrary server-side logic in the middle of the flow.
Plan-gated, and that matters early#
Some extensibility is available only on higher plans. If a requirement depends on it, the plan decision is a feasibility decision, not a budgeting one — and it belongs in the first week, not the last.
Check plan gating for every checkout requirement during scoping. It is the most common source of "we assumed we could" late in a project.
A pragmatic approach#
Express business rules as validations and delivery customisations rather than as UI. A rule enforced at checkout is reliable; a rule communicated by a message someone might not read is not. And keep custom fields to what you will genuinely act on — every additional field costs conversion.
Frequently asked questions
Can I build a completely custom checkout?
No, not on standard plans. You extend defined points; the structure and payment handling remain Shopify's.
Are checkout scripts still the way to do this?
No. The modern approach is checkout extensions and functions; older script-based customisation is being retired.
How much can I add before conversion suffers?
Less than you would like. Every field and message is friction; add only what changes an outcome.
shopify checkout extensibilityshopify checkout extensionsshopify functionscustom checkout shopifyshopify checkout customisation