The Push sync (CiviCRM→Mailchimp) currently collects contacts from CiviCRM who are in the group and who:
are not deceased
do not have "Do Not Email" set
do not have "No Bulk Mail (user opt-out)" set
do not have their primary email on hold.
1-3 are OK, if you understand the implications. e.g. if someone has fully opted out at CiviCRM end (e.g. CiviMail opt-out link) but then later signs up to Mailchimp using a Mailchimp form, then they'll be on the Mailchimp List, and Mailchimp will send CiviCRM a webhook saying "subscribe this person"; CiviCRM will add them to the mailing group, but CiviCRM won't remove the opt-out flag. So then when a push sync is done CiviCRM will think this person should not be on the list (because of the opt-out) and will then unsubscribe them from Mailchimp. This is as-designed, but worth pointing out.
However item (4) above is problematic. If I have a valid other email address (e.g. a bulk email address) then I'll be unsubscribed if my primary address is put on hold - which is unrelated.
I propose that we drop the on_hold => 1 parameter from the API call as it's not helping anyone.
(Nb. Emails that are on hold are removed from the CiviCRM collection by the 2nd API call that's made.)
The Push sync (CiviCRM→Mailchimp) currently collects contacts from CiviCRM who are in the group and who:
1-3 are OK, if you understand the implications. e.g. if someone has fully opted out at CiviCRM end (e.g. CiviMail opt-out link) but then later signs up to Mailchimp using a Mailchimp form, then they'll be on the Mailchimp List, and Mailchimp will send CiviCRM a webhook saying "subscribe this person"; CiviCRM will add them to the mailing group, but CiviCRM won't remove the opt-out flag. So then when a push sync is done CiviCRM will think this person should not be on the list (because of the opt-out) and will then unsubscribe them from Mailchimp. This is as-designed, but worth pointing out.
However item (4) above is problematic. If I have a valid other email address (e.g. a bulk email address) then I'll be unsubscribed if my primary address is put on hold - which is unrelated.
I propose that we drop the
on_hold => 1
parameter from the API call as it's not helping anyone.(Nb. Emails that are on hold are removed from the CiviCRM collection by the 2nd API call that's made.)