Answers.Body: <p>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.</p>
  <p>A sample url might be <a href="http://example.org/civicrm/profile/edit?reset=1&amp;gid=IDNUMBER&amp;%7Bcontact.checksum%7D&amp;id=%7Bcontact.contact_id%7D" rel="nofollow noreferrer">http://example.org/civicrm/profile/edit?reset=1&amp;gid=IDNUMBER&amp;{contact.checksum}&amp;id={contact.contact_id}</a>
  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.</p>
  <p>You'll find the information you need to make more use of checksums and other tokens here: <a href="https://docs.civicrm.org/user/en/latest/common-workflows/tokens-and-mail-merge/" rel="nofollow noreferrer">https://docs.civicrm.org/user/en/latest/common-workflows/tokens-and-mail-merge/</a></p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2023-06-22T15:20:37.193Z
Answers.Text: 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
Answers.UserDisplayName: Cozy4907
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2023-06-23T02:10:23.027Z
Answers.Text: 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.
Answers.UserDisplayName: kapn
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2023-06-20T15:33:51.637Z
Answers.LastActivityDate: 2023-06-20T15:33:51.637Z
Answers.UserDisplayName: kapn
Answers.Body: <p>If you set your Groups to be 'mailing list' AND you set them to be 'public pages' then you should be able to</p>
  <p>a/ add the Group(s) field to any profile</p>
  <p>which you can temporarily see at <a href="https://dmaster.demo.civicrm.org/civicrm/profile/create?gid=1&amp;reset=1" rel="nofollow noreferrer">https://dmaster.demo.civicrm.org/civicrm/profile/create?gid=1&amp;reset=1</a></p>
  <p>or</p>
  <p>b/ direct people to /civicrm/mailing/subscribe?reset=1 and see all the Public Mailing Lists</p>
  <p>the example for this should be at <a href="https://dmaster.demo.civicrm.org/civicrm/mailing/subscribe" rel="nofollow noreferrer">https://dmaster.demo.civicrm.org/civicrm/mailing/subscribe</a></p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2023-06-20T20:27:46.243Z
Answers.Text: 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.
Answers.UserDisplayName: Lars SG
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2023-06-21T18:28:20.550Z
Answers.Text: Good point Lars SG
Answers.UserDisplayName: petednz - fuzion
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2023-06-20T20:18:15.307Z
Answers.LastActivityDate: 2023-06-20T20:18:15.307Z
Answers.UserDisplayName: petednz - fuzion
Body: <p>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.</p>
  <p>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?</p>
  <p>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.</p>
  <p>Thanks!</p>
  
Tags: <profile><groups><newsletter><subscribe>
Title: Multiple group profile sign up
ThreadText: # Multiple group profile sign up
  
  (Asked by: username_0 on 2023-06-20)
  
  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.
  
  Thanks!
  
  **Tags:** profile, groups, newsletter, subscribe
  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_1 on 2023-06-20. Score: 1 | Accepted answer
  
  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}](http://example.org/civicrm/profile/edit?reset=1&gid=IDNUMBER&%7Bcontact.checksum%7D&id=%7Bcontact.contact_id%7D)
  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/>
  
  > **Comments:**
  > **username_0**: 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  
  > **username_1**: 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.  
  
  ---
  
  ### Answer by username_2 on 2023-06-20. Score: 3
  
  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>
  
  or
  
  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>
  
  > **Comments:**
  > **username_3**: 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.  
  > **username_2**: Good point username_3  
  
  ---
  
  