Answers.Body: <p>I was having a bugger of a time troubleshooting a similar problem with the checksum capability for anonymous users.  After trying and identifying many different potential causes such as:</p>
  
  <ul>
  <li><em>cid</em> versus <em>id</em> for the contact</li>
  <li>the order of the <em>checksum</em> or <em>contactid</em> tokens</li>
  <li>ACL permissions</li>
  <li>whether SSL or non-SSL made a difference</li>
  <li>update to CiviCRM 5.0 (currently on CiviCRM 4.7.30 with WP 4.9.5)</li>
  </ul>
  
  <p>What fixed it was having %2F instead of the '/' in the query parameters of the URL.  I needed to explicitly put the '%2F' (without the single quotes) in the URL instead of the '/'.  For instance, in your example above the URL section:</p>
  
  <blockquote>
    <p>&amp;q=civicrm/profile/edit</p>
  </blockquote>
  
  <p>should be changed to</p>
  
  <blockquote>
    <p>&amp;q=civicrm%2Fprofile%2Fedit</p>
  </blockquote>
  
  <p>NOW my mailings work with checksums!  Wahoo!  Hope this helps someone else on WordPress.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-04-22T23:07:29.423Z
Answers.LastActivityDate: 2018-04-22T23:13:44.860Z
Answers.LastEditDate: 2018-04-22T23:13:44.860Z
Answers.UserDisplayName: ChaosBuster
Answers.Body: <p>Thanks for your help Phil and CB. I think maybe you're not using multi record custom fields?
  Having now duplicated this with Drupal I now suspect the add/edit functionality does not exist for MULTI-RECORD fields in public profiles. 
  Makes sense really as although the checksummed profile displays OK to the anonymous user, the link to "add new record" ie "<a href="https://domain.com/index.php?q=civicrm/profile/edit&amp;reset=1&amp;id=2&amp;multiRecord=add&amp;gid=15&amp;context=multiProfileDialog&amp;onPopupClose=" rel="nofollow noreferrer">https://domain.com/index.php?q=civicrm/profile/edit&amp;reset=1&amp;id=2&amp;multiRecord=add&amp;gid=15&amp;context=multiProfileDialog&amp;onPopupClose=</a>" no longer contains the checksum hence the permissions error.
  Hmm any developers out there like to give me a $quote?</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-04-29T04:02:50.923Z
Answers.LastActivityDate: 2018-04-29T04:02:50.923Z
Answers.UserDisplayName: LesleyJill
Answers.Body: <p>I believe that Civi ACLs are not intended to work for anonymous users. </p>
  
  <p>I get similar behavior to your example with Civi 5.0.0 and Wordpress 4.8.6 using ACLs for a user to create a profile and access specific custom data records.  A logged in user with these ACLs can access the profile and custom data, but the same user coming from a checksum token link cannot. In this case the user is coming in with the anonymous CMS role. If the Wordpress access control for the anonymous user has create profile and custom data checked, then it works from a checksum token, but that's too coarse permission in some cases. 
  This statement comes <a href="http://docs.civicrm.org/user/en/latest/initial-set-up/permissions-and-access-control/" rel="nofollow noreferrer">from the online documentation</a>: </p>
  
  <p><strong>Collecting data from anonymous visitors using profiles</strong></p>
  
  <p>If you have built profiles to collect data from anonymous visitors through online forms (e.g. event registration pages, contribution pages and standalone profile forms), the permission profile create will need to be given to the "anonymous" role. Furthermore, should the profile contain any custom fields, an additional permission will need to be given, depending on the circumstances. Read "Accessing custom data" below.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-04-27T02:49:32.290Z
Answers.Text: "If the Wordpress access control for the anonymous user has create profile and custom data checked, then it works from a checksum token" So are you saying you can get the checksum to work? I have both those permissions for anonymous user but to no avail. As I say the only permission that makes it work is "edit all contacts"
Answers.UserDisplayName: LesleyJill
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-04-28T15:05:31.463Z
Answers.Text: In my configuration, the profile is called as a component of a contribution page, so I must have "make online contribution" also checked for the anon user, but those three permissions are the only ones.  The URL looks like this in the browser address(abbreviated): https://www.new...ny.net/?page=CiviCRM&q=civicrm/contribute/transact&reset=1&id=4&cs=81......57_336&cid=5...2  so its a bit different from the other answer's conditions.  But this one works in 5.0. and the contact's info is prefilled and all fields are available.
Answers.UserDisplayName: PhilF
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-04-28T15:12:40.763Z
Answers.Text: It didn't come through in the comment but the URL starts with "https://"
Answers.UserDisplayName: PhilF
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-04-22T21:24:10.577Z
Answers.LastActivityDate: 2018-04-22T22:00:25.377Z
Answers.LastEditDate: 2018-04-22T22:00:25.377Z
Answers.UserDisplayName: PhilF
Body: <p>civicrm 4.7.24 wordpress 4.9.5</p>
  <p>When logged in I can access, edit and add to a multirecord profile
  eg
  <a href="https://i.sstatic.net/t0Ieh.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/t0Ieh.jpg" alt="enter image description here" /></a></p>
  <p>When not logged in, using identical link (domain.org/civicrm/?page=CiviCRM&amp;q=civicrm/profile/edit&amp;gid=20&amp;reset=1&amp;id=NNNN&amp;cs=c1ae6c62c8b56de0b98cc786cb7e96dc_1523257945_720)</p>
  <p>the profile is displayed for the correct user (so the checksum is respected at this point) however the [view][edit][delete] buttons appear as 2 4 8
  and (add new record) gives permission error</p>
  <p>eg
  <a href="https://i.sstatic.net/3s25r.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/3s25r.jpg" alt="enter image description here" /></a></p>
  <p>The only way I can get it to work is by enabling &quot;edit all contacts&quot; for anonymous users. No thanks!</p>
  <p>Please note that <strong>it works fine when logged in as admin</strong> so please no suggestions relating to the format of the link or multrecord profiles</p>
  <p>I am unable to test on demo site as mail is disabled so I can't generate checksum</p>
  
Tags: <wordpress><profile><permissions><checksum>
Title: wordpress edit multi-record profile fine when logged in but not retaining checksum for anonymous user
ThreadText: # wordpress edit multi-record profile fine when logged in but not retaining checksum for anonymous user
  
  (Asked by: username_0 on 2018-04-10)
  
  civicrm 4.7.24 wordpress 4.9.5
  
  When logged in I can access, edit and add to a multirecord profile
  eg
  [![enter image description here](https://i.sstatic.net/t0Ieh.jpg)](https://i.sstatic.net/t0Ieh.jpg)
  
  When not logged in, using identical link (domain.org/civicrm/?page=CiviCRM&q=civicrm/profile/edit&gid=20&reset=1&id=NNNN&cs=c1ae6c62c8b56de0b98cc786cb7e96dc\_1523257945\_720)
  
  the profile is displayed for the correct user (so the checksum is respected at this point) however the [view][edit][delete] buttons appear as 2 4 8
  and (add new record) gives permission error
  
  eg
  [![enter image description here](https://i.sstatic.net/3s25r.jpg)](https://i.sstatic.net/3s25r.jpg)
  
  The only way I can get it to work is by enabling "edit all contacts" for anonymous users. No thanks!
  
  Please note that **it works fine when logged in as admin** so please no suggestions relating to the format of the link or multrecord profiles
  
  I am unable to test on demo site as mail is disabled so I can't generate checksum
  
  **Tags:** wordpress, profile, permissions, checksum
  
  
  ---
  
  ## 3 answers
  
  ### Answer by username_1 on 2018-04-22. Score: 1
  
  I was having a bugger of a time troubleshooting a similar problem with the checksum capability for anonymous users. After trying and identifying many different potential causes such as:
  
  * *cid* versus *id* for the contact
  * the order of the *checksum* or *contactid* tokens
  * ACL permissions
  * whether SSL or non-SSL made a difference
  * update to CiviCRM 5.0 (currently on CiviCRM 4.7.30 with WP 4.9.5)
  
  What fixed it was having %2F instead of the '/' in the query parameters of the URL. I needed to explicitly put the '%2F' (without the single quotes) in the URL instead of the '/'. For instance, in your example above the URL section:
  
  > &q=civicrm/profile/edit
  
  should be changed to
  
  > &q=civicrm%2Fprofile%2Fedit
  
  NOW my mailings work with checksums! Wahoo! Hope this helps someone else on WordPress.
  
  
  ---
  
  ### Answer by username_0 on 2018-04-29. Score: 0
  
  Thanks for your help Phil and CB. I think maybe you're not using multi record custom fields?
  Having now duplicated this with Drupal I now suspect the add/edit functionality does not exist for MULTI-RECORD fields in public profiles.
  Makes sense really as although the checksummed profile displays OK to the anonymous user, the link to "add new record" ie "<https://domain.com/index.php?q=civicrm/profile/edit&reset=1&id=2&multiRecord=add&gid=15&context=multiProfileDialog&onPopupClose=>" no longer contains the checksum hence the permissions error.
  Hmm any developers out there like to give me a $quote?
  
  
  ---
  
  ### Answer by username_2 on 2018-04-22. Score: 0
  
  I believe that Civi ACLs are not intended to work for anonymous users.
  
  I get similar behavior to your example with Civi 5.0.0 and Wordpress 4.8.6 using ACLs for a user to create a profile and access specific custom data records. A logged in user with these ACLs can access the profile and custom data, but the same user coming from a checksum token link cannot. In this case the user is coming in with the anonymous CMS role. If the Wordpress access control for the anonymous user has create profile and custom data checked, then it works from a checksum token, but that's too coarse permission in some cases.
  This statement comes [from the online documentation](http://docs.civicrm.org/user/en/latest/initial-set-up/permissions-and-access-control/):
  
  **Collecting data from anonymous visitors using profiles**
  
  If you have built profiles to collect data from anonymous visitors through online forms (e.g. event registration pages, contribution pages and standalone profile forms), the permission profile create will need to be given to the "anonymous" role. Furthermore, should the profile contain any custom fields, an additional permission will need to be given, depending on the circumstances. Read "Accessing custom data" below.
  
  > **Comments:**
  > **username_0**: "If the Wordpress access control for the anonymous user has create profile and custom data checked, then it works from a checksum token" So are you saying you can get the checksum to work? I have both those permissions for anonymous user but to no avail. As I say the only permission that makes it work is "edit all contacts"  
  > **username_2**: In my configuration, the profile is called as a component of a contribution page, so I must have "make online contribution" also checked for the anon user, but those three permissions are the only ones.  The URL looks like this in the browser address(abbreviated): https://www.new...ny.net/?page=CiviCRM&q=civicrm/contribute/transact&reset=1&id=4&cs=81......57_336&cid=5...2  so its a bit different from the other answer's conditions.  But this one works in 5.0. and the contact's info is prefilled and all fields are available.  
  > **username_2**: It didn't come through in the comment but the URL starts with "https://"  
  
  ---
  
  