My organisation are moving over to CiviCRM. We currently offer a range of different newsletters about different themes and issues. I will obviously need a group for each theme, and I want to build a profile that allows users to opt into the different groups based on their preferences.

However, I can only work out how to add a user to a single group when they fill in a profile, but I don't want them to have to enter their details multiple times, and I want them to be able to change their preferences later (I think via the GDPR plugin). Has anyone done similar? How did you manage this?

My approach now would be to have custom fields for each theme/issue that they select, and these are pulled into smart groups. But I'm not sure how a user could later manage their own preferences.


2 Answers 2


You can create a profile that would be used for the user to create or update their preferences with custom fields as you suggest (checkboxes or a multi-select drop-down). You would then either have to create them as users in your system so that they could edit them later by logging in or make use of the user id and checksum functionality to allow them to access their own settings without needing a login.

A sample url might be http://example.org/civicrm/profile/edit?reset=1&gid=IDNUMBER&{contact.checksum}&id={contact.contact_id} You could potentially send it via email in response to a request in a public form or even include it as a link at the bottom of the newsletter itself.

You'll find the information you need to make more use of checksums and other tokens here: https://docs.civicrm.org/user/en/latest/common-workflows/tokens-and-mail-merge/

  • Thanks! That's really helpful. At the moment it seems someone needs to be logged into our drupal site to be able to edit checksums (or actually even see/fill in any profile). Would you know why this is? TIA
    – Cozy4907
    Commented Jun 22, 2023 at 15:20
  • You don't edit the checksums, they are generated as required automatically. As for the form requiring a login even with a checksum, that would be controlled by the permissions that would allow profiles to be used by anonymous users. I'm not sure what this looks like in Drupal. It'll be in your administration menu about halfway down.
    – kapn
    Commented Jun 23, 2023 at 2:10

If you set your Groups to be 'mailing list' AND you set them to be 'public pages' then you should be able to

a/ add the Group(s) field to any profile

which you can temporarily see at https://dmaster.demo.civicrm.org/civicrm/profile/create?gid=1&reset=1


b/ direct people to /civicrm/mailing/subscribe?reset=1 and see all the Public Mailing Lists

the example for this should be at https://dmaster.demo.civicrm.org/civicrm/mailing/subscribe

  • 2
    The big downside to this approach is that if someone who has already subscribed to some groups later fills out a profile with the groups field on it without being logged in or using a checksum link and their input is matched to an existing contact, then whatever they input will overwrite their original selections. So if someone sees this and thinks to themselves, I don't need to select anything, I'm already subscribed - they could end up unsubscribed.
    – Lars SG
    Commented Jun 20, 2023 at 20:27
  • Good point Lars SG
    – petednz - fuzion
    Commented Jun 21, 2023 at 18:28

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.