Where are checksums stored in the database? Is there any considerations to the limitations of how many checksums can be created at once in a mailing? If I send a checksum email to ~250,000 will that work without issue?

1 Answer 1


The checksum is an md5 hash of the value in the database field civicrm_contact.hash, the Contact ID, the current timestamp and the life-span.

Therefore, as long as the contact hash stays the same (it never changes, unless you do it manually), then you can generate as many tokens as necessary.

Once generated, checksums look like xxxx_yyyy_zzzz. The first part is the md5 hash, the second part is the timestamp of when it was generated, and the third part is the life-span. That way CiviCRM can easily lookup the contact.hash, and with the yyyy and zzzz, be able to recalculate/validate the xxxx part.

For reference, see CRM/Contact/BAO/Contact/Utils.php, the function generateChecksum.

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.