I've been trying to figure out how to set up events where only members can register. Is this possible?

What I'm looking for is the ability to:

  • specify one or more memberships that can register for an event, and limit registration to those members.
  • require authentication as part of registration for events where membership is required OR allow membership signup during registration
  • not require authentication if the event registration is not limited to members only.

I'm running CiviCRM on Drupal, and I know I could set the Drupal permission for CiviEvent: register for events so that only logged-in users with a given role could register. I would then sync CiviCRM memberships with Drupal roles. But I only want to limit some events, not all, so this approach won't work.

Also, if I had multiple roles (one per membership), those roles would all need the same Register permission, meaning any member could register for any event, even those events should be limited to people holding a specific membership.

I also know that I could publish details of member-only events to just those members. But those members could share the registration URL with non-members, who could then register.

Any suggestions?

3 Answers 3


The way I do this is by using the "Require participant approval?" feature in the event set up. This means that anyone can apply for the event, but then their application is manually reviewed by one of the admins to see if they are a member.

Clearly, this introduces a manual process, but it does mean it's quite secure and it means any anonymous user can apply without having to log in.

  • That sounds like a good workaround. Can you batch update these via a Batch Update Profile? If so might be worth adding a short 'how to' to this answer.
    – petednz - fuzion
    Apr 14, 2016 at 19:02
  • 1
    If you display all the applicants using a Find Participants search (which you can save and add to your navigation menu), then you can select a number of applicants and update them all to "Pending from Approval" in one go. They will each then get sent an automatic email asking them to complete their registration Apr 15, 2016 at 9:50
  • I'm guessing this would result in the need to refund payments to non-members that apply and are not approved? Apr 19, 2016 at 7:28
  • 1
    @millionleaves - no need to refund payments to non-members, since they don't get to pay until the approval has gone through Apr 20, 2016 at 6:37

This extension allows you to restrict online registration to certain events to logged in members only but still have other events open to the public.

The extension allows you to set a flag to any event so registration is restricted to those that have a current membership.



Use the Drupal module included in the CiviCRM tarball that synchs CiviCRM members to Drupal roles. Then set Drupal permissions on viewing the Event registration page to appropriate membership roles. For events not restricted to members, set the event page to be viewable by anonymous users.

  • Would this work for "limit some events, not all"
    – petednz - fuzion
    Apr 9, 2016 at 23:57
  • 1
    The Register for Events permission applies to all event registration pages. You can't do this selectively, at least not within Drupal. I've had some success in the past where I've added an Event ID field to an Event node type, and displayed the value as a button that links to the related CiviCRM event registration page. I can then restrict access to individual Event nodes. But if an anonymous user gets hold of the registration URL (or just guesses the URL based on the standard CIviCRM url structure), then they can register even if they aren't supposed to. Apr 12, 2016 at 7:59

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.