Terms checkbox
Add an "I agree to the Terms & Conditions" tick box to your cart drawer, and stop the drawer's Checkout button until a shopper ticks it.
What it is
The Terms checkbox module puts a single tick box in the body of your cart drawer. Next to it is a line of text, and — if you give it a link — a link to your terms page that opens in a new tab.
Until the shopper ticks the box, the drawer's Checkout button will not take them to checkout. Instead it shows the reason and points them at the box.
When to use it
- You sell something where you want a recorded agreement before purchase (custom orders, final-sale items, service bookings).
- Your policies are long and you want shoppers to see the link before they pay.
- You want a light-touch confirmation step, not a hard legal gate. Read the Limitations below before you rely on this for anything legally important.
Set it up
- Open your cart in the app and scroll to
Add a module. - Pick
Terms checkboxfrom the Module list and pressAdd. - The module appears in your module list. Use
Move upandMove downto place it — most stores put it last, just above the checkout area, so it is the final thing a shopper reads. - Press
Settingson the Terms checkbox row. - In
Link to your terms, type the path to your terms page, for example/pages/terms. Leave it blank if you only want the sentence with no link. - Press
Save. - Press
Open previewto watch the box and the blocked Checkout button behave against a test cart. - Go back to the cart and use
Review and publish. Nothing you change reaches a shopper until you publish.
Settings
| Setting | What it does |
|---|---|
Link to your terms | The address the "Read them" link points at. Optional — the help text on the screen reads "Optional. Opens in a new tab." A store path like /pages/terms works, and so does a full address. Leave it empty and the shopper sees the sentence with no link at all. |
That is the whole settings screen. There is no on/off setting here — the module is on when it is in your module list and not hidden. Use Hide or Remove in the module list to switch it off.
What the shopper sees
A tick box with the words I agree to the Terms & Conditions. When you have set a link, the words Read them follow, as a link that opens in a new tab. The whole line is clickable, so tapping the words ticks the box.
Unlike the notes box, the terms line is not collapsed behind a link. It is always visible in the drawer body.
How the block works
- While the box is unticked, the drawer's Checkout button is marked as unavailable and the sentence
Accept the terms to continue.appears underneath it. - The button is never truly disabled. That is deliberate: a disabled button is skipped by screen readers, so the shopper would never find out why they cannot proceed. It stays focusable and still reads out.
- Tapping it anyway announces the reason, moves focus to the tick box, scrolls the box into view and gives it a short shake. For shoppers who have asked their device for reduced motion, the shake does not run — the announcement still does.
- If the shopper is offline, the offline message is shown instead. Reconnecting is the only thing that helps, so telling them to tick a box they cannot save would be a dead end.
Where the agreement is kept
Ticking the box saves a value onto the Shopify cart itself — a cart attribute named _sofcy_terms_accepted — rather than keeping it in the browser. That means:
- The tick survives a page reload and follows the shopper around your store. They do not re-tick on every product page.
- Checkout is blocked from the moment the drawer opens, even before the checkbox itself has finished loading, because the drawer reads the cart value directly.
- If saving the tick fails, the box goes back to unticked rather than showing a state your cart does not actually have.
The value travels with the cart into Shopify's checkout. The app itself does not show you a list of who accepted, and there is no report or export of acceptances anywhere in the app.
Changing the wording
The sentence, the link words and the blocked-checkout message are all editable on the Shopper copy screen for your cart, under "Order notes and terms" and "Totals and checkout". You can set them per language. The defaults are:
| Setting | What it does |
|---|---|
terms_checkbox | The sentence beside the box. Default: "I agree to the Terms & Conditions". |
terms_link | The link words, shown only when you have set a link. Default: "Read them". |
blocked_terms | The message under a blocked Checkout button. Default: "Accept the terms to continue." |
Limitations
These are things merchants reasonably expect that this module does not do today.
- The block is in the drawer only. It stops the drawer's own Checkout button. It does not stop express wallet buttons (Shop Pay, PayPal and similar) shown in the drawer footer, your theme's own cart page or checkout button, or a shopper who goes straight to your checkout address. Unlike quantity limits, there is no checkout-side enforcement for terms — nothing is validated on Shopify's side.
- Do not put a display rule on this module. A display rule can hide the checkbox, but it does not switch off the checkout block. If the rule stops matching, the shopper gets a blocked Checkout button and no box to tick. Leave this module ruleless. (Display rules are a paid feature from the Launch plan up; this module itself is on every plan.)
- The link is not checked. Whatever you type is used exactly as typed. The app does not confirm the page exists or that the address is valid, so test it in the preview or on your live store.
- One link for every language and market. The wording can be translated per language on the Shopper copy screen, but the link address is a single value shared by all of them.
- No record inside the app. There is no acceptance log, timestamp, or per-order view of who ticked the box in the app.
- No pre-ticking, and no per-product terms. The box always starts unticked for a new cart, and one cart has one terms box — you cannot require different terms for different products.
- Acceptance lasts as long as the cart. Once a shopper has ticked the box, changing the cart does not un-tick it and they are not asked again.
This module is a checkout prompt, not a legal guarantee. Because the block only covers the drawer's own Checkout button, treat it as a way to put your terms in front of shoppers — not as proof that every order was placed under them.
Merchants who add this usually add Order notes at the same time — they sit together in the same part of the drawer. When you are happy with both, publish your cart to put them live. If the box is not showing on your storefront, start with troubleshooting.