How do I add a terms and conditions checkbox to a Notion form?

Add a terms and conditions checkbox to a Notion form: a required question, a terms link in its description, an unticked default, and one test.

Nookesh KarriNovember 14, 20267 min read
Light cover card with the title 'How do I add a terms and conditions checkbox to a Notion form?' in dark text and a blue accent bar

To add a terms and conditions checkbox to a Notion form, add a Checkbox question such as “I agree to the Terms of Service,” mark it Required, and paste the link to your terms into the question’s description. Leave the box unticked. Then test the form once: if it submits with the box empty, switch to a single-option Multiple choice question, which can’t be skipped.

How to add a terms and conditions checkbox to a Notion form

A Notion form terms and conditions checkbox is just a form question backed by a Checkbox property in your database. Notion has no dedicated “terms” block, so you build it from a normal question and its settings.

  1. Open the form and select + under the last question.
  2. Set the Question type to Checkbox. Notion’s forms help explains that the question type is the same thing as the database property type.
  3. Name the question with the full statement: “I have read and agree to the Terms of Service.”
  4. Open the question’s ••• menu and turn on Required.
  5. In the same menu, add a Description with the URL of your terms page.
  6. Turn off Sync with property name if you’d rather keep a short property name like “Accepted terms” in the database.

A Checkbox property is built to show whether “a condition is true or false,” per Notion’s property guide. Each response row then shows a ticked or empty box.

Keep the question last, right before the button, so people agree after they’ve seen what they’re submitting.

Why a required checkbox may still submit unticked

A required checkbox may still let an empty box through, because “required” usually means the question has an answer. Notion’s help says a required question is one respondents “will have to answer” to submit. It doesn’t say whether an unticked box counts as unanswered.

Other tools have tripped on exactly this. One consent-form guide explains that a required true/false checkbox defaults to false, and false is a valid answer, so an untouched box can submit. A user on a database tool’s forum had three required checkboxes, and people still submitted without ticking them. That tool later added a separate “Must be checked” option.

Test your own form before you share it:

  1. Open the form link in a private browser window.
  2. Fill in everything except the terms box.
  3. Press submit.

An error on the terms question means you’re done. If the form submits, switch question types.

The single-option Multiple choice workaround

A Multiple choice question with one option is the reliable fallback, because a required choice question has no answer until the respondent picks something. The consent-form guide above recommends the same thing: a required list with a single option forces a selection.

  1. Change the Question type to Multiple choice. Notion’s help mentions this type for yes or no questions.
  2. Add exactly one option: “I agree.”
  3. Keep Required on and the terms link in the description.
  4. Choose Show options as a list, so the option looks like a box to tick rather than a dropdown.

Picture a design studio that takes client intake through a public Notion form. If its required Checkbox lets empty boxes through, some rows end up unticked, and nobody can say whether those clients saw the terms. With a single “I agree” option, an empty row can’t exist.

The trade-off is cosmetic: the database shows a select value instead of a ticked box, and a filter on “Accepted terms is I agree” works the same way. For more on how question types become properties, see mapping form fields to Notion properties.

The link to your terms belongs in the description of the terms question, so respondents see it right next to the box. You can also repeat it in the form’s own description, which Notion lets you add under the title.

Name what they’re accepting. “I agree to the Terms of Service and Privacy Policy” does that; “I agree” on its own doesn’t.

Before you share:

  • Open the form while logged out and click the link. It should open the terms page.
  • Pick a stable URL. If you edit the terms later, keep the old version reachable, because some respondents agreed to it.

If you changed the submit button text under Form settings → Submit screen, “Agree and submit” reads better than “Submit” after a terms box.

A terms box should start empty, and marketing consent needs its own separate question. Both rules come from data protection guidance.

The UK regulator’s consent guidance says you must ask people to actively opt in. It lists ticking an opt-in box as one valid method. It also says you “cannot rely on silence, inactivity, pre-ticked boxes, opt-out boxes, default settings or a blanket acceptance of your terms and conditions.” GDPR Recital 32 is shorter: pre-ticked boxes don’t count as consent.

The same guidance says consent requests should be separate from general terms, with a separate opt-in for each purpose. In a Notion form, that means two questions:

Question Required? Purpose
I agree to the Terms of Service Yes Lets you accept the submission
Send me product updates by email No Marketing consent, freely given

Hide newsletter signup inside the terms box and you get neither one cleanly. For other questions that touch personal data, read collecting personal data with a Notion form.

Keep a record of who accepted which terms

A record of acceptance needs three things: the response, a timestamp and the version of the terms. The UK regulator’s guidance says online records should include the data submitted plus a timestamp that links it to the version of the form in use. It also says to keep a copy of that form version.

Notion properties cover most of it:

  • Created time stamps each row. Notion’s property guide says it’s “auto-generated and not editable.”
  • A text property called Terms version holds the version. Set a default, or fill it in by hand when you change the terms.
  • Outside Notion, save a PDF or dated copy of each terms version somewhere you won’t edit.

The catch: forms shared with Anyone on the web with link are always anonymous, per Notion’s help. The row won’t say who accepted unless the form asks for a name and email. Read how to share a Notion form publicly for what each sharing setting records.

My take: if money or legal weight rides on the form, skip the Checkbox question. Use the single-option question, add Created time, and keep every terms version. It takes ten minutes now and saves an argument later. This isn’t legal advice; ask a lawyer what your own contracts need.

Doing the same in nDBForms

nDBForms has a checkbox question type and a yes/no question type among its 17 question types. Each submission becomes a new row in your Notion database, the same as a native form. You can also edit the success screen to confirm what the person agreed to.

Submit once with the box empty there too before you share the link. To show extra questions only after someone ticks the box, use nDBForms logic rules on Pro. Native Notion limits conditional logic to Business and Enterprise plans.

FAQ

Can I make a Notion form checkbox required?

Yes, any Notion form question can be marked Required. For a checkbox, test it before you publish: required means the question needs an answer, and in some form tools an unticked box already counts as an answer of false.

Put the terms URL in the question’s description or in the form description. Respondents then see the link right next to the box they tick. Check in a private window that the link is clickable.

Should the terms checkbox be ticked by default?

No. The UK regulator says you cannot rely on pre-ticked boxes for consent, and GDPR Recital 32 says pre-ticked boxes do not count as consent. Leave the box empty so the respondent ticks it.

How do I prove someone accepted my terms?

Keep the response row, add a Created time property for the timestamp, and store which version of the terms the form linked to. Keep a copy of that version too.

Sources