I have now followed all the instructions in the CiviCRM Cookbook (https://www.packtpub.com/web-development/civicrm-cookbook) as well as a similar post here on Stack (allow anonymous users to view profiles in WordPress?) but had no joy getting the URL right to get people to update their profile without having to log in.

The instructions state the following:

Using the CiviCRM checksum token in combination with a profile allows you to bypass the requirement to log in.

  1. Create a profile you wish to use. The profile contains all the fields of information that you want the user to complete.
  2. Make a note of the profile ID.
  3. Enable Profile Listings and Forms access for anonymous and authenticated users in your CMS.
  4. Now create a CiviMail mailing in the normal way.
  5. You now need to use the {contact.checksum} token and the {contact. contact_id} token to construct a link back to edit the profile you created: http://www.myorganization.org/civicrm/profile/ edit?reset=1&gid=N&id={contact.contact_id}&{contact.checksum}
  6. Substitute your website for http://www.myorganization.org.

Perhaps there was a print error in the book because I have tried numerous variable options to get this working without joy.

Any thoughts? Thanks

EDIT: Added example below.


  • the construction differs depending on your cms. best info imo is at docs.civicrm.org/dev/en/master/framework/civimail/tokens why not paste what you constructed (without your domain if that needs to be kept private). Also check your permissions that anon have access to Custom Fields etc.
    – petednz - fuzion
    Commented Aug 28, 2017 at 20:39
  • Thanks @petednz-fuzion. I have added the example URL. Also, the Custom Fields is allowed too. I don't think the subdomain or the SSL certificate should affect this right? I would expect a variable name for the checksum but the instructions are unclear what that var should be. Commented Aug 29, 2017 at 13:49
  • {contact.checksum} should expand to cs=XXX Your example does not include cs=. Was that a copying error or is that how it really is? What version are you running? You could try manually adding the cs= but it should be included automatically.
    – Aidan
    Commented Aug 29, 2017 at 18:29

3 Answers 3


The construction differs depending on your cms.

Best info imo is at docs.civicrm.org/dev/en/master/framework/civimail/tokens

You have pasted


In point 5. you stated ** and the {contact. contact_id}** but i don't see that in your example.

You need to have cid={contact. contact_id} in the string so will not work


As Pete says, your question (and Stack Exchange history) suggests you're using WordPress - but the example you added is using the Drupal URL construction.

In addition to Pete's answer, there's also the Fancy Tokens extension, which you can install from the in-app Extensions directory. It takes the pain out of this for you.


You can use this link to allow user to update their profile without logging in:


Please note that:

  • www.myorganization.org is the URL where CiviCRM is installed
  • mybasepage is the basepage of your CiviCRM installation (usually it's civicrm, but it may vary)
  • gid=2 is the profile ID number

(Found this solution here)

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.