Shopify / dawn

Shopify's first source available reference theme, with Online Store 2.0 features and performance built-in.
Other
2.47k stars 3.31k forks source link

[Customer registration] Add marketing consent checkbox(s) to form #1630

Open bacounts opened 2 years ago

bacounts commented 2 years ago

Describe the enhancement you'd like Currently, the customer registration form does not allow for email or SMS marketing consent signup.

Describe alternatives you've considered At a minimum, Shopify's default email marketing consent signup checkbox should be added to the customer registration form. The checkbox is a default engagement feature mentioned in the dev support documentation: https://shopify.dev/themes/customer-engagement/email-consent#customer-registration-form-checkbox.

PS: https://github.com/Shopify/dawn/issues/1627 (add phone number field) could also be worth looking into; this enhancement would allow Shopify's default SMS marketing consent.

PSS: While out of scope for this enhancement, you could also re-use these checkboxes on the cart page and cart drawer and have a section in the customer account under the heading "notifications" to allow for updating consent after an account's creation.

CC: @melissaperreault, @nicklepine

wisniewski94 commented 2 years ago

Any updates? I can work on this and make this field optional (to be enabled in the theme customizer). Assign to me if it's not rejected

afagard commented 1 year ago

I'm confused, Shopify's official docs state to use the accepts_marketing field in signup forms (https://shopify.dev/docs/themes/customer-engagement/email-consent) but for the API it seems to be depreciated https://shopify.dev/docs/api/admin-rest/2023-01/resources/customer ...

Should we be doing fields such as:

  <div class="accepts-marketing">
    <input type="hidden" name="customer[email_marketing_consent]" value="false" />

    <input type="checkbox" name="customer[email_marketing_consent]" />
    <label for="accepts-marketing">Subscribe to email marketing</label>
  </div>

Or will that not even work?