We have deployed the comms preference centre links in Civi email footers: https://phabricator.wikimedia.org/T359445
Now, let's expand it to be available to all Acoustic email recipients.
cc: @ppenloglou @nisrael
We have deployed the comms preference centre links in Civi email footers: https://phabricator.wikimedia.org/T359445
Now, let's expand it to be available to all Acoustic email recipients.
cc: @ppenloglou @nisrael
Sounds great @AKanji-WMF let's do it. Dotting down some considerations:
The preference centre link is structured like this right? :
https://donorpreferences.wikimedia.org/index.php?title=Special:EmailPreferences/emailPreferences &contact_id= &checksum= &email= &hash= &uselang=
The equivalent personalization fields in Acoustic should be:
After some quick tests with a couple of contacts in Acoustic, I'm getting mismatched values for checksum and contact_hash. I have a hunch this may be an import timing issue. Do checksum and contact_hash get updated daily?
In case my testing is wrong somehow, I made a donation today with a secondary email of mine so I can check the values tomorrow after the import completes in Acoustic. I'll let you know how that goes :)
Thanks @ppenloglou will coordinate a call after your offsite with FR-Tech to discuss next steps.
@Ejegg would this require the checksum to be synced in the nightly sync somehow? Trying to get a sense of how big/complex this task is.
@ppenloglou After speaking with FR-Tech it sounds like you should have everything you need to enable this! Please let me know if you'd like to have a quick huddle to discuss!
Hey all! Been trying to get this to work but I'm noticing the following inconsistencies in Acoustic:
The way I've been testing this is by visiting a contact's page in Civi to grab the Email Preferences link and make a note of it. Then using this format in an Acoustic email template:
https://donorpreferences.wikimedia.org/index.php?title=Special:EmailPreferences/emailPreferences&contact_id=xxxxx&checksum=xxxxx&email=xxxxx&hash=xxxxx&uselang=xx
I substitute the x's with Acoustic's fields and attempt to generate the same Email Preferences link.
Is there any more info I can provide that'd be useful? Appreciate your help!
@Eileenmcnaughton adding you to this thread - @ppenloglou is trying to add in our preference centre links to Acoustic emails. Any advice?
@ppenloglou I think it would be useful to look at some specific examples - I am wondering if these are 'acoustic merged' contacts - ie contacts where there is more than one contact in Civi with the same email being sent up to Acoustic - or is it all contacts?
I've made donations with a couple of old email addresses at various points in time. As far as I'm aware there's been no merges on these addresses.
I must have been doing something wrong earlier because it seems both Civi and Acoustic links below work as expected. Note that the checksum and hash still differ.
Email: panagiotis.penloglou.2014@gmail.com
CID: 68043742
Email: realisticfox@pm.me (alias for protonmail)
CID: 67705571
Pref center link from Civi:
https://donorpreferences.wikimedia.org/index.php?title=Special:EmailPreferences/emailPreferences&contact_id=67705571&checksum=24de06dcf290f85bd4707a960bb9a811_1751956142_168&email=realisticfox%40pm.me&hash=a6f3b5effcd05e45f76d4a5db2887adec163c9f6
@ppenloglou there are 3 parts to the checksums separated by a _ - ie
8a43d7465f795e9583caf1b7f3a97fbf_1751865491_720
1751865491 is the timestamp when it was generated (Mon, 14 Jul 2025 23:15:20 GMT)
720 is the number of hours for which it is valid (30 days)
the last part is a calculation based on the contact hash + those 2 fields
I have to say - I'm a bit surprised we are using the hash in the url - from a quick test it doesn't seem necessary & obviously including the hash means that once it expires someone could calculate a new link themselves - which doesn't seem desirable. I see @AnnWF did include it above - but I think we can remove it ??
Ah thanks for breaking down the checksum! I just tried again in Acoustic both with and without the contact_hash field and the link works fine without. Full format (where %% are Acoustic fields):
https://donorpreferences.wikimedia.org/index.php?title=Special:EmailPreferences/emailPreferences &contact_id=%%ContactID%% &checksum=%%checksum%% &email=%%EMAIL%% &uselang=%%IsoLang%%
I think we're go to go if the above is okay. I'll share with fr-online reply once more when we implement it.
Slightly unrelated note @Eileenmcnaughton if you happen to know... We include contact_hash in all of our donate.wiki hyperlinks for fundraising. Is it also redundant in this case? If so I can make sure to not include any longer. Example:
https://donate.wikimedia.org/? wmf_campaign=C2526_Email2 &wmf_medium=email &wmf_source=sp%%MAILING_ID%% &uselang=%%isolang%% &contact_id=%%ContactID%% &contact_hash=%%contact_hash%%
Thank you both - noting I am trying to add relevant comments to this documentation about checksums, that I need to move to Wikitech. Feel free to add any learnings!
Thanks @ppenloglou - good to go to incorporate into Acoustic email footers!
Can you please carve out your other question about contact_hash in donate.wiki to another phab, would be good for us to investigate.
The hash in epc is only going to be used when civiproxy do not success get detail from civi(when civi in maintenance or other issue) so it’s still relevant.
Talked with fr-online regarding the pref center link, everyone's happy to move forward. Hoping by EOD we'll have new copy agreed for the footer, at which point I'll implement it in Acoustic and we can mark this as resolved.
Thanks for the context on the hash, @AnnWF. Whatever we decide here in the end, I can implement it either way 😊
@AKanji-WMF Did some digging and turns out we do need to pass contact_id and contact_hash for donate.wiki hyperlinks according to this Phab. So all good, we're just gonna keep including it.
Noticed that the seed emails still drive to Silverpop @ppenloglou - anything we need to do on our end to support switching over?
Hi @AKanji-WMF, apologies for not applying the Comms pref yet. I was focused on preparing Email 1 when it became ready. I'm looking to incorporate starting with Email 2, as @RLopez-WMF will take the coding reins and I can support.