Back to E-commerce Tips

Required Checkboxes Before Checkout: What Shopify Supports Natively and What It Doesn't

E-commerce Tips
Required Checkboxes Before Checkout: What Shopify Supports Natively and What It Doesn't

Sooner or later almost every Shopify merchant needs a required checkbox before checkout. Terms of service acceptance. An age confirmation for a restricted product. A specific acknowledgment demanded by a regulator in one of your markets. So you open the admin, go looking for the setting, and it isn't there. There is no toggle in Shopify that says "make the customer tick this before they can pay".

That gap sends merchants down a rabbit hole of forum threads, half-working theme snippets, and confident advice that turns out to apply only to Shopify Plus. This article is the honest inventory instead: every native option Shopify gives you, what each is good for, and where it falls short. One note first - this is a technical explainer about platform capabilities, not legal advice. What your store must collect, and how, depends on your products and your markets. Confirm the specifics with your own advisor.

What Shopify Supports Natively

Shopify does give you several things in this area. None is a required consent checkbox, but it is worth knowing what each one does before ruling it out.

Checkout form options

Under Settings → Checkout, you can set the company name, second address line, and phone number to required, optional, or hidden. That is real enforcement: mark a field required and the shopper cannot progress without it.

The limitation is that the list is fixed. You are choosing from Shopify's set, not adding your own, and no plan unlocks a custom checkbox there.

The marketing opt-in checkbox

Shopify ships exactly one native checkbox at checkout: the marketing opt-in. In the same settings you decide whether it appears at checkout, at sign-in, or both, and which customer regions see it pre-selected.

It is a good model for how a consent control should behave, not least because pre-selection is a deliberate, region-scoped decision. But it collects one thing: permission to send marketing. It cannot be retitled or pointed at your terms page.

Checkout UI extensions

This is where most of the confusion lives. Checkout UI extensions let apps add real interface elements inside checkout, including checkboxes that block a shopper from moving forward.

The catch is placement. Per Shopify's documentation, extensions on the information, shipping, and payment steps are available only to stores on a Shopify Plus plan. Extensions on the Thank you and Order status pages are available on all plans except Starter, but those come after the money has moved. For a consent you need before the purchase, post-purchase placement is no substitute.

So the plain reading is: a checkout-page checkbox exists as a capability, and it is not available to you unless you are on Plus.

Cart attributes

Cart attributes are key-value pairs attached to the cart through an input inside the cart form, carried through to the order. They are how stores collect gift messages, engraving text, and delivery instructions, and they are a sensible place to record a consent so it lands on the order.

What they are not is enforcement. An attribute records whatever value it is given. Nothing checks that one is present before allowing checkout. Storage and enforcement are separate problems, and attributes solve only the first.

Checkout validation apps

One native mechanism genuinely enforces rules server-side: checkout validation. It runs on Shopify's servers rather than the browser, applies to the online store cart and throughout checkout, and covers express paths such as Shop Pay, PayPal, Google Pay, and Apple Pay. Merchants on any plan can use validation provided by apps from the Shopify App Store.

This is the strongest native building block here, and it is underrated. But note what it is: a rule engine, not an interface. Something else still has to present the checkbox, explain what the shopper is agreeing to, and put the result somewhere the rule can read. Validation is the lock; you still need the door.

Theme customization

The cart page and cart drawer are yours on every plan, so you can add a checkbox, wire it to the checkout button, and refuse to submit until it is ticked. This is the route the forum threads describe, and it works.

The caveats: it is a code change, it breaks when you change or update your theme, drawer carts that re-render will happily wipe out a hand-added element, and multi-language stores need the wording maintained per locale.


Why the Cart Is the Reliable Surface

OptionAvailable onEnforces?Before payment?
Checkout form optionsAll plansYes, fixed fieldsYes
Marketing opt-in checkboxAll plansNo, opt-in onlyYes
Checkout UI extensionsPlus for the checkout stepsYesYes
Thank you / Order statusAll plans except StarterNoNo
Cart attributesAll plansNo, storage onlyYes
Checkout validationAll plans, via appsYes, server-sideYes
Theme customizationAll plansYes, with upkeepYes

For a store on Plus, a checkout extension is the natural home for a consent checkbox. For everyone else, the cart is the only surface that is simultaneously fully customizable, universally available, and positioned before payment. Given the constraints that is not a workaround, it is the correct answer. The cart is also where the shopper is already reviewing what they are about to buy, which makes it a defensible place to ask for a confirmation about that purchase.

For this reasoning applied to a specific regulatory case, our guide to the right-of-withdrawal checkbox for digital products walks through why cart placement matters for one EU rule, and the EU withdrawal button guide covers a related obligation collected after the sale rather than before it.

The Gaps a Cart Checkbox Still Has

Express checkout buttons can skip the cart. A shopper who taps a dynamic checkout button on a product page goes straight to payment without seeing your cart. If a consent has to be collected on every order, that path has to be closed. Most themes let you hide those buttons in the product template settings, and that is the trade: coverage in exchange for one fast path to purchase.

Client-side blocking is a guardrail, not a vault. A cart checkbox stops ordinary shoppers, which is what it is for. If an edge case would be genuinely costly, pair it with a validation rule so enforcement also happens on Shopify's side.

Record the answer, do not just gate on it. A box that blocks the button but stores nothing leaves you with no evidence months later.

Do not pre-tick it if the requirement is genuine consent. Pre-checking reduces friction, and for some purposes that is fine. Where an active, conscious confirmation is the point, a default tick usually undermines the thing you were trying to collect.

Getting the Details Right

  1. Say one thing per box. Bundling terms acceptance, an age confirmation, and a marketing opt-in into one tick weakens all three.
  2. Link to the actual policy, so the shopper can read it without losing their place. Terms plus privacy policy is often the right shape.
  3. Explain the block clearly. When someone clicks checkout with the box unticked, say exactly what is missing. A vague failure feels like a broken store.
  4. Translate it. An English-only consent line in a German cart is both bad experience and weak evidence.
  5. Scope it where you can. A confirmation only one market requires does not need to face every shopper worldwide. Which signal to scope on is its own question, and selected market vs. physical location covers when each is the right basis.

How EliteCart Handles It

EliteCart adds the required checkbox as a setting rather than a code change. In Cart designer → Features → Terms and conditions, you enable it and write the checkbox text, and it appears in the cart summary directly above the checkout button.

  • It blocks checkout. Click checkout without ticking it and the attempt is stopped, with your configured message explaining why.
  • The wording is yours, with up to two clickable links inside the sentence so you can point at your terms and your privacy policy separately.
  • It is multi-language. Each text field takes a version per store language, so German shoppers see German wording.
  • Pre-ticking is a choice, not a default. A "Checked by default" option exists in the advanced section, and it is off unless you turn it on.

If you need more than a checkbox, such as an extra block of custom content in the cart, custom HTML sections cover that without touching your theme.


The short version: Shopify has no native required checkbox before checkout, and no amount of searching the admin will find one. What it has is a Plus-gated checkout extension surface, a fixed set of form fields, a marketing-only opt-in, storage with no enforcement, a rule engine with no interface, and a fully customizable cart. For most stores the last of those is the answer. Get the wording right with your advisor, keep the box unticked unless you have a reason not to, and make sure the answer is recorded and not just checked.

E-commerceComplianceCheckoutShopifyCart