Title: sync_should_sync_user
Last modified: August 30, 2016

---

# sync_should_sync_user

 *  [meglos42](https://wordpress.org/support/users/meglos42/)
 * (@meglos42)
 * [10 years, 8 months ago](https://wordpress.org/support/topic/sync_should_sync_user/)
 * Hi again,
 * I’m starting a new topic as my previous one has been closed as resolved.
 * Still having an issue I’m afraid.
 * I’m using the new sync_should_sync_user function as described and it doesn’t 
   sync WP-Members inactive users when I “synchronise all”, which is great.
 * However when the plugin is listening to changes it doesn’t seem to pick up a 
   change in the “active” state from “1” to “0” or vice versa, which means that 
   new WordPress user registrations don’t get added to the Mailchimp list when they’re
   activated, nor do users get unsubscribed when they are deactivated.
    Deleting
   the user still unsubscribes them OK.
 * I’ve just updated your plugin to v1.1 but can’t see anything in the release notes
   to suggest that this will resolve the issue.
 * Is there anything can be done to get this working?
 * Thanks.
 * [https://wordpress.org/plugins/mailchimp-sync/](https://wordpress.org/plugins/mailchimp-sync/)

Viewing 15 replies - 1 through 15 (of 20 total)

1 [2](https://wordpress.org/support/topic/sync_should_sync_user/page/2/?output_format=md)
[→](https://wordpress.org/support/topic/sync_should_sync_user/page/2/?output_format=md)

 *  Thread Starter [meglos42](https://wordpress.org/support/users/meglos42/)
 * (@meglos42)
 * [10 years, 8 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494838)
 * Hi,
 * Further to this – I’ve discovered that when you have the plugin set to sync only
   a specific role and then you change a user to another role it does not seem to
   sync back to mailchimp and unsubscribe them from the list.
 * Is this deliberate, as it doesn’t seem to be intuitive?
 * Thanks.
 *  [mother.of.code](https://wordpress.org/support/users/imazed/)
 * (@imazed)
 * The Mother of Code
 * [10 years, 8 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494863)
 * Hey meglos42,
 * Sorry about that, let’s see that we get your problem fixed in this topic then!(
   For future reference, meglos42’s previous topic can be found [here](https://wordpress.org/support/topic/do-not-sync-inactive-users?replies=13))
 * I’ll request for Danny to take a look at your topic. He’ll reply to you a.s.a.
   p.!
 *  [theos244](https://wordpress.org/support/users/theos244/)
 * (@theos244)
 * [10 years, 8 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494882)
 * I’ve been following the chain of threads, and thought I’d add that some trigger
   to be able to unsubscribe users would be great! Your plugin is pretty much exactly
   what I’ve been needing, but I’m not able to make it live until I have a way for
   users to opt-out and unsubscribe manually somehow.
 *  [astridman](https://wordpress.org/support/users/astridman/)
 * (@astridman)
 * [10 years, 7 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494918)
 * +1 for this.
 * If a new user starts out as ‘Inactive’ and then changed to ‘Subscriber’, the 
   MailChimp list is updated and the user is added to the list.
 * However, subsequent changing of a user’s role does not subscribe/unsubscribe 
   from the MailChimp list accordingly.
 * Possible to fix?
 *  Thread Starter [meglos42](https://wordpress.org/support/users/meglos42/)
 * (@meglos42)
 * [10 years, 7 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494923)
 * Hi – not heard anything back for a while, is this getting looked at?
 * If the plugin can subscribe/unsubscribe from the MailChimp list when the user’s
   role is changed it would make it much more useful.
 *  Plugin Author [Danny van Kooten](https://wordpress.org/support/users/dvankooten/)
 * (@dvankooten)
 * [10 years, 7 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494924)
 * Hey all,
 * Sorry for the late reply – crazy busy working on our set of MailChimp plugins.
 * Your request makes sense, but requires a bit of more work with the current way
   things are set-up. Basically the premise is that the plugin only unsubscribes
   sparingly since we don’t want to make any unnecessary (negative) changes to your
   MailChimp lists.
 * I’m a bit short on time right now but I’ll update this topic later this week 
   with some code to do this manually before we add this to the plugin itself.
 * Please bear with me – I’ll get to it. Promise. 🙂
 *  Thread Starter [meglos42](https://wordpress.org/support/users/meglos42/)
 * (@meglos42)
 * [10 years, 7 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494925)
 * Thanks Danny,
 * So, will it be possible to automatically change the user’s Mailchimp subscription
   state when the value of the field “active” on the xx_usermeta table changes from
   a 0 to a 1 (or vice versa)? The field is added by the wp_members plugin.
    This
   would negate the necessity for controlling subscription/un-subscription via user
   roles.
 *  Plugin Author [Danny van Kooten](https://wordpress.org/support/users/dvankooten/)
 * (@dvankooten)
 * [10 years, 7 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494928)
 * Hey all,
 * I’ve been giving this some more thought and will update the plugin later with
   code that handles this, although I have to say that it is hard to come up with
   a solution that would work for all because of the many different variables at
   play here.
 * Here’s some code that will “watch” the user role and tell the MailChimp Sync 
   plugin to unsubscribe a given user when it no longer has the required role.
 *     ```
       add_action( 'updated_user_meta', function( $meta_id, $user_id, $meta_key, $meta_value ) {
   
       	$required_role = 'subscriber';
       	$user = get_userdata( $user_id );
   
       	// Check if user still has required role
       	if( ! in_array( $required_role, $user->roles ) ) {
   
                       // user does not have role, tell MailChimp User Sync to unsubscribe user.
       		do_action( 'mailchimp_sync_unsubscribe_user', $user_id );
       	}
   
       }, 10, 4 );
       ```
   
 * You could modify this code to check for the “active” field and whether it changed
   to do what you want it to do.
 * There are multiple actions you can tell MailChimp Sync to do.
 *     ```
       mailschimp_sync_update_subscriber       (updates a subscriber or creates a new subscriber for the user)
       mailchimp_sync_unsubscribe_user          (unsubscribes the user)
       mailchimp_sync_subscribe_user              (subscribes a user, ignoring whether he was subscribed already)
       ```
   
 * That should help as a starting point to get the plugin to do what you want. I’ll
   think of a way to make this easier from the plugin interface.
 *  Thread Starter [meglos42](https://wordpress.org/support/users/meglos42/)
 * (@meglos42)
 * [10 years, 7 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494929)
 * Thanks Danny, I’ll give that a whirl just now and let you know how it goes.
 *  Thread Starter [meglos42](https://wordpress.org/support/users/meglos42/)
 * (@meglos42)
 * [10 years, 7 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494930)
 * Hi Danny, this is working fine for subscribing/unsubscribing users as their role
   changes. I can’t seem to get it working for the change in meta_value of the meta_key“
   active” though (probably due to my imperfect understanding of the way the code
   works). The code I have is –
 *     ```
       add_action( 'updated_user_meta', function( $meta_id, $user_id, $meta_key, $meta_value ) {
   
       	$active_value = 1;
       	$user = get_userdata( $user_id );
   
       	// Check if user is active or not
       	if( ! in_array( $active_value, $user->active ) ) {
   
                       // user is not active, tell MailChimp User Sync to unsubscribe user.
       		do_action( 'mailchimp_sync_unsubscribe_user', $user_id );
       	}
   
       }, 10, 4 );
       ```
   
 * Can you help?
 * Edit: also tried
    `if ( ! ($active_value == $user->active) ) {` with no joy
 *  Thread Starter [meglos42](https://wordpress.org/support/users/meglos42/)
 * (@meglos42)
 * [10 years, 7 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494941)
 * Hi Danny,
 * Would you be able to give me some advice on the correct syntax to use for this,
   as I’m still struggling?
 * Many thanks.
 *  Thread Starter [meglos42](https://wordpress.org/support/users/meglos42/)
 * (@meglos42)
 * [10 years, 6 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494955)
 * Hi,
 * Can anyone give me advice on the correct syntax to use here please?
 * Thanks.
 *  Thread Starter [meglos42](https://wordpress.org/support/users/meglos42/)
 * (@meglos42)
 * [10 years, 4 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494962)
 * Hi – Why is is this marked as resolved?
    I still don’t have a working solution
   for syncing only when the value of the field “active” on the wp_usermeta table
   changes from a 0 to a 1 and vice versa. I’ve tried the code above with no success.
 * At the moment I am having to sync users using a user role, which is not ideal.
 *  Plugin Author [Danny van Kooten](https://wordpress.org/support/users/dvankooten/)
 * (@dvankooten)
 * [10 years, 4 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494963)
 * Hi Meglos,
 * Sorry, this slipped through my attention. Could you please give the following
   code a try?
 *     ```
       add_action( 'updated_user_meta', function( $meta_id, $user_id, $meta_key, $meta_value ) {
       	if( $meta_key === 'active' && $meta_value != 1 ) {
       		 // user just switched to inactive, tell MailChimp User Sync to unsubscribe user.
       		do_action( 'mailchimp_sync_unsubscribe_user', $user_id );
       	}
       }, 10, 4 );
       ```
   
 * This will only fire the unsubscribe call when the meta value for `active` changes
   to anything other than key. Otherwise, the code would be firing A LOT of unsubscribe
   calls repeatedly for any change in an inactive user.
 * Hope that helps. If not, let me know!
 *  Thread Starter [meglos42](https://wordpress.org/support/users/meglos42/)
 * (@meglos42)
 * [10 years, 4 months ago](https://wordpress.org/support/topic/sync_should_sync_user/#post-6494964)
 * Thanks Danny, I’ll try this today.
    Will this also subscribe a newly created 
   user if the meta value changes from 0 to 1?
 * At present new users are by default set to inactive (0) and we only want them
   to get subscribed & start receiving mails if they are activated.
 * Similarly, if they are de-activated they should be unsubscribed.

Viewing 15 replies - 1 through 15 (of 20 total)

1 [2](https://wordpress.org/support/topic/sync_should_sync_user/page/2/?output_format=md)
[→](https://wordpress.org/support/topic/sync_should_sync_user/page/2/?output_format=md)

The topic ‘sync_should_sync_user’ is closed to new replies.

 * ![](https://s.w.org/plugins/geopattern-icon/mailchimp-sync_cfeefa.svg)
 * [MC4WP: Mailchimp User Sync](https://wordpress.org/plugins/mailchimp-sync/)
 * [Frequently Asked Questions](https://wordpress.org/plugins/mailchimp-sync/#faq)
 * [Support Threads](https://wordpress.org/support/plugin/mailchimp-sync/)
 * [Active Topics](https://wordpress.org/support/plugin/mailchimp-sync/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/mailchimp-sync/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/mailchimp-sync/reviews/)

 * 20 replies
 * 6 participants
 * Last reply from: [meglos42](https://wordpress.org/support/users/meglos42/)
 * Last activity: [10 years, 2 months ago](https://wordpress.org/support/topic/sync_should_sync_user/page/2/#post-6494970)
 * Status: not resolved