Consent Checkbox
Use buyer consent checkboxes for collecting the buyer's approval for a given policy.
Anchor to consentcheckboxpropsConsentCheckboxProps
- Anchor to policypolicy"sms-marketing"required
The policy for which buyer consent is being collected for.
sms-marketing: Represents the policy for SMS marketing consent.- Anchor to accessibilityLabelaccessibilityLabelstring
A label used for buyers using assistive technologies. When set, any
childrensupplied to this component will not be announced to screen reader users.- Anchor to checkedcheckedboolean
Whether the checkbox is active.
- Anchor to disableddisabledboolean
Whether the checkbox can be changed.
- Anchor to errorerrorstring
Indicate an error to the user. The field will be given a specific stylistic treatment to communicate problems that have to be resolved immediately.
- string
A unique identifier for the field. When no
idis set, a globally unique value will be used instead.- Anchor to namenamestring
An identifier for the field that is unique within the nearest containing
Formcomponent.- Anchor to onChangeonChange(value: boolean) => void
A callback that is run whenever the checkbox is changed. This callback is called with a boolean indicating whether the checkbox should now be active or inactive. This component is controlled, so you must store this value in state and reflect it back in the
checkedorvalueprops.- Anchor to togglestogglesstring
The component's identifier whose visibility will be toggled when this component is actioned.
Basic ConsentCheckbox
Examples
Basic ConsentCheckbox
React
import { reactExtension, ConsentCheckbox, } from '@shopify/ui-extensions-react/checkout'; export default reactExtension( 'purchase.checkout.block.render', () => <Extension />, ); function Extension() { return ( <ConsentCheckbox policy="sms-marketing"> Text me with news and offers </ConsentCheckbox> ); }JS
import {extension, ConsentCheckbox} from '@shopify/ui-extensions/checkout'; export default extension('purchase.checkout.block.render', (root) => { const consentCheckbox = root.createComponent( ConsentCheckbox, {policy: 'sms-marketing'}, 'Text me with news and promotions', ); root.appendChild(consentCheckbox); });
Preview

Anchor to examplesExamples
Use buyer consent checkboxes in conjunction with buyer consent phone fields for collecting the buyer's approval for a given policy.
The consent phone field is not required in order to use the consent checkbox component. This example demonstrates how they can be used together.
Anchor to example-consentcheckbox-with-consentphonefieldConsentCheckbox with ConsentPhoneField
ConsentCheckbox with ConsentPhoneField
Examples
ConsentCheckbox with ConsentPhoneField
React
import { reactExtension, BlockStack, ConsentCheckbox, ConsentPhoneField, InlineStack, InlineSpacer, } from '@shopify/ui-extensions-react/checkout'; export default reactExtension( 'purchase.checkout.block.render', () => <Extension />, ); function Extension() { return ( <BlockStack> <ConsentCheckbox policy="sms-marketing"> Text me with news and offers </ConsentCheckbox> <InlineStack inlineAlignment="start" padding={[ 'none', 'none', 'none', 'tight', ]} > <InlineSpacer spacing="extraTight" /> <ConsentPhoneField label="Phone" policy="sms-marketing" /> </InlineStack> </BlockStack> ); }JS
import { extension, BlockStack, ConsentCheckbox, ConsentPhoneField, InlineStack, InlineSpacer, } from '@shopify/ui-extensions/checkout'; export default extension('purchase.checkout.block.render', (root) => { const consentCheckbox = root.createComponent( ConsentCheckbox, { policy: 'sms-marketing', }, 'Text me with news and offers', ); const inlineSpacer = root.createComponent(InlineSpacer, { spacing: 'extraTight', }); const consentPhoneField = root.createComponent(ConsentPhoneField, { label: 'Phone', policy: 'sms-marketing', }); const inlineStack = root.createComponent( InlineStack, { inlineAlignment: 'start', padding: ['none', 'none', 'none', 'tight'], }, [inlineSpacer, consentPhoneField], ); const layout = root.createComponent(BlockStack, undefined, [ consentCheckbox, inlineStack, ]); root.appendChild(layout); });
Preview
