Cart - Add an 'Agree to terms and conditions' checkbox

Topic summary

A tutorial explains how to add a mandatory ‘Agree to terms and conditions’ checkbox to Shopify cart pages using custom code. The implementation differs between sectioned themes (post-2016) and non-sectioned themes, requiring edits to theme.js/theme.liquid and cart template files with jQuery code.

Key Implementation Issues:

  • The checkbox can only be added to the cart page, not the actual checkout page (unless using Shopify Plus at $2,000+/month)
  • Many users report the checkbox appears but isn’t actually required—customers can bypass it
  • Solutions include adding required="required" attribute or creating a separate custom.js file
  • Additional checkout buttons (Apple Pay, Google Pay) bypass the validation entirely

Theme-Specific Challenges:

  • Dawn, Debut, Narrative, Prestige, and Brooklyn themes require different approaches
  • Some themes need code in custom.js instead of theme.js due to load order issues
  • jQuery version must be 1.7 or higher for the code to function

Legal Compliance Concerns:

  • Multiple users note this workaround is insufficient for EU/German regulations requiring checkboxes at final checkout
  • The limitation frustrates merchants needing proper consent collection for legal compliance

Current Solutions:

  • A free app (RA Terms and Conditions Checkbox) now exists as an alternative to manual coding
  • Various code modifications shared for handling cart drawers, multiple checkboxes, and styling adjustments
Summarized with AI on November 2. AI used: claude-sonnet-4-5-20250929.

Tip: It’s not possible to add the checkbox to the checkout pages. It can be added only to the cart page that exists at http://www.your-shop-URL.com/cart.

And this is exactly the kind of restrictions that make me move to another solution as soon as I can, because -aside of the fact that I don’t feel free to do what I want with my shop- the checkbox is a mandatory thing in some countries, and having it in the cart before payment pages is a very bad choice as it hurts conversions.

1 Like