I'm helping this music school that uses Woocommerce, which creates a WordPress user for each customer that registers. And that's screwing with their civi workflows. Civi users get created without any source or other distinguishing info either.

I thought the WordPress user -> civi user sync had to be done manually via Administer -> Users and Permissions -> Synchronize Users to Contacts (as per the docs), but it seems that's just another way to trigger it.

Now Advanced search can be used to find all CMS users, but that would mean it would have to be done manually periodically, then all the legitimate civi users excluded, then the rest deleted, which is not really feasible, as the lists are not constant enough.

Is there a way to disable or limit this sync?

This old question is very similar, but only one answer is potentially relevant, yet incomplete. Is overriding hooks really the only way to achieve this? If so, what's the best way, since I suspect that sketch from 7 years ago wouldn't suffice any more.

  • The fundamental concept with civi is that every user is a contact in your civicrm, but not the reverse. having a record in the db of who made purchases is probably an advantage for many orgs but sounds like you don't want that info. i expect you will need to override core - preferably via an extension - to do this
    – petednz - fuzion
    Commented May 20 at 20:21
  • 1
    FWIW, yes, removing hook callbacks is the way to go if you really want to prevent sync. The code will still work, but needs to be hooked to a later action. The WooCivi plugin route is still what I'd recommend. Commented May 21 at 10:25

1 Answer 1


I won't repeat the technique through which you can prevent CiviCRM creating a Contact when a User is created since that's available in the SE post you link to - but what I can do is recommend installing this plugin which will help you to manage the interactions between WooCommerce and CiviCRM.

At minimum, it will populate the Contact "source" field such that you're able to slice and dice your Contacts appropriately. It will also populate CiviCRM with records for Contributions, Memberships and Participants if that's useful to you - e.g. for generating accounting reports.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.