Docs SMS for WooCommerce How to collect SMS opt-in using CheckoutWC ?

How to collect SMS opt-in using CheckoutWC ?

Show an SMS opt-in checkbox on CheckoutWC (Checkout for WooCommerce) so customers can consent to receiving order updates by text before they place their order.

Requirements

Requires CheckoutWC (Checkout for WooCommerce) and SMS for WooCommerce to both be installed and active on your site.

Setup Instructions

  • Activate CheckoutWC.
  • Go to WooCommerce → SMS Settings → SMS Notifications → Checkout Options.
  • Turn on Enable SMS Opt-in on Checkout — the checkbox is hidden entirely until this is on.
  • Set Opt-in Location to After shipping address — CheckoutWC’s own checkout template only exposes the hook this option uses (cfw_checkout_after_shipping_address); the other location options are built for the classic/native WooCommerce checkout template and won’t render on CheckoutWC.
  • Customize the Opt-in Label text (defaults to ‘Get order updates via SMS’), and decide whether Opt-in Checkbox Checked by Default should be on — check your local SMS consent laws (TCPA, GDPR, etc.) before pre-ticking it.
  • Visit the checkout page and confirm the SMS opt-in checkbox is displayed properly, then place a test order to confirm the choice is saved.

Troubleshooting: checkbox isn’t showing

  • Opt-in is switched off – confirm ‘Enable SMS Opt-in on Checkout’ is turned on under WooCommerce → SMS Settings → SMS Notifications → Checkout Options; the checkbox never renders while this is off.
  • Wrong Opt-in Location selected – on CheckoutWC only ‘After shipping address’ hooks into a template CheckoutWC actually renders; any other location option will silently not appear.
  • Using the WooCommerce block checkout instead of CheckoutWC’s own template – the Opt-in Location dropdown only controls the classic/shortcode checkout; if the checkout page has the WooCommerce Checkout block on it, the opt-in is wired through the block checkout integration instead and this setting is ignored.
  • A caching plugin is serving a stale checkout page – exclude the checkout page from full-page caching, or purge the cache after changing any opt-in setting.
  • A CheckoutWC template override is hiding it – if your theme or a child template overrides CheckoutWC’s shipping-address section, it may have stripped the cfw_checkout_after_shipping_address hook; compare against an unmodified CheckoutWC template.

Using a different checkout builder? See Cashier one-page checkout or CartFlows, or browse the full list on the Compatibility page.