Checkout5 min read

Shopify Terms and Conditions Checkbox That Buy It Now Can't Skip

Three ways to add a required terms and conditions checkbox to Shopify: theme code, a checkout extension, or the cart plus a checkout check. What each one misses.

In this guide
  1. What Shopify does with your policies
  2. Option 1: A checkbox in the cart, in theme code
  3. Option 2: A checkbox in checkout itself
  4. Option 3: The cart, plus a check at checkout
  5. Comparing the three
  6. Write the checkbox so it holds up
  7. Test every path before you rely on it
  8. Where Feldo: Delivery Date & Terms fits
  9. FAQ

Some orders should not go through until the buyer has agreed to something: made-to-order lead times, a no-returns rule on personalised items, rental conditions, pickup rules. A required terms and conditions checkbox is the usual answer, and adding one to Shopify looks easy until you find out how many buyers never pass the box.

This post compares the three ways shops add the checkbox, what each one misses, and what to test before you rely on it. It is not legal advice: whether you need explicit agreement, and what your terms must say, depends on your market and your business.

What Shopify does with your policies

Start with what you already have. When you add your terms of service under Settings > Policies, Shopify links your policies in the footer of your checkout pages and publishes the terms at /policies/terms-of-service on your store. That makes the terms available. It does not ask the buyer to tick anything, so shops that want an explicit “I agree” add the box themselves.

Option 1: A checkbox in the cart, in theme code

The classic approach is a checkbox above the checkout button on the cart page, plus a few lines of JavaScript that keep the button disabled until the box is ticked. Many themes and tutorials do it this way, and it works for buyers who click Check out from the cart.

It misses everyone else:

  • Buy it now. Shopify’s dynamic checkout buttons skip the cart: “When a customer clicks an unbranded button, they skip the cart and go to the Shopify Checkout.”
  • Express buttons such as Shop Pay, Apple Pay or Google Pay, when your theme shows them in the cart drawer or on product pages.
  • The cart drawer, if the code was only added to the cart page template.
  • Anyone who reaches checkout directly, for example from a checkout link you sent.

A checkbox that only JavaScript in the browser enforces is a convenience, not a gate.

Option 2: A checkbox in checkout itself

Putting the box in checkout, next to the payment step, would catch every path. Shopify allows that through checkout UI extensions, but with a plan limit: “Checkout UI extensions for the information, shipping, and payment steps are available only to stores on a Shopify Plus plan.”

If you are on Plus, this is a clean option. If you are not, it is not available, whatever app or code you try.

Option 3: The cart, plus a check at checkout

The third approach keeps the checkbox in the cart, where every plan can show it, and adds a server-side check at checkout. Shopify lets apps run a cart and checkout validation function: before the buyer can pay, it reads the cart, including its attributes, and can stop checkout with a message.

Here is how the pieces fit:

  1. The checkbox in the cart saves the answer as a cart attribute, for example Terms with the value Accepted.
  2. The cart blocks the checkout button until the box is ticked, for buyers who use the cart.
  3. At checkout, the validation reads the attribute. If it is missing, checkout stops with a message asking the buyer to go back to the cart and accept the terms. This catches Buy it now and express buttons.

Shopify Functions in public apps from the Shopify App Store work on every plan. A custom app with a function needs Shopify Plus.

Comparing the three

Approach Buyers from the cart Buy it now and express buttons Plan
Checkbox in theme code Stopped until ticked Not stopped Any
Checkbox in checkout (UI extension) Stopped Stopped Shopify Plus
Cart checkbox plus checkout validation Stopped until ticked Sent back to the cart Any, with a public app

Write the checkbox so it holds up

Whatever approach you take, a few details decide whether the box is useful later:

  • Link the actual terms. Use your store’s policy page, /policies/terms-of-service, or the page that holds the specific conditions. A link that opens in a new tab keeps the cart in place.
  • Say what the buyer agrees to. “I agree to the made-to-order terms, including the 10-day lead time” is clearer than “I agree to the terms”.
  • Keep the answer on the order. A cart attribute stays on the order under Additional details, so you can see later that the box was ticked for that order. Shopify’s order CSV export includes these values in its Note Attributes column.
  • Translate it if you sell in more than one language, including the message checkout shows.

A ticked box records that the buyer clicked it. It does not make your terms fair, complete or enforceable; that part stays with you and your adviser.

Test every path before you rely on it

Go through checkout yourself once per path:

  • cart page with the box unticked, then ticked;
  • cart drawer, if your theme has one;
  • Buy it now on a product page;
  • an express button, if your store shows them;
  • a phone, where the box is often below the fold.

For each, check that you cannot pay without agreeing, that the message tells you what to do, and that the order shows the answer.

Where Feldo: Delivery Date & Terms fits

Feldo: Delivery Date & Terms takes the third approach. It adds a terms checkbox to the cart drawer and the cart page, with a link to your policy page, alongside optional delivery or pickup dates, text fields and dropdowns, up to 8 fields.

  • Checkout enforcement: a Shopify Function checks required fields again at checkout, so Buy it now and express buttons cannot skip them. The buyer sees your own message, or a built-in one in English, German, French, Spanish, Italian, Dutch or Polish.
  • On the order: the answer is saved as an order attribute and shown in a Cart details block on the order page, in a CSV export and on printable order sheets.
  • Your theme stays as it is: you switch on its app embed in the theme editor of an Online Store 2.0 theme; heading, colours and corner radius are set there.

It records that the buyer agreed; your terms stay yours to check. See Feldo: Delivery Date & Terms for the details.

FAQ

Does Shopify have a built-in terms and conditions checkbox? Shopify links your policies in the checkout footer once you add them, but a required tick box is something you add with theme code, a checkout UI extension on Shopify Plus, or an app.

Why can buyers check out without ticking my checkbox? Most likely they used Buy it now or an express button, which skip the cart, or the checkbox is only on the cart page and they checked out from the cart drawer.

Can I add a checkbox to Shopify checkout without Plus? Not as a field in the checkout steps; those extensions need Shopify Plus. You can keep the checkbox in the cart and have a validation function stop checkout when it was not ticked.

Where can I see that a buyer accepted the terms? When the checkbox saves a cart attribute, the answer appears on the order under Additional details and in the Note Attributes column of the order export.