Page MenuHomePhabricator

Trouble upgrading via Recurring Upgrade email
Open, HighPublic

Assigned To
Authored By
Mar 22 2024, 3:17 PM
Referenced Files
Unknown Object (File)
Mar 28 2024, 4:34 PM
F43659320: screenshot 3.png
Mar 28 2024, 1:37 PM
F43659103: screenshot 2.png
Mar 28 2024, 1:37 PM
F43658995: screenshot 1.png
Mar 28 2024, 1:37 PM
F43053354: Error Message.png
Mar 22 2024, 3:18 PM
F43053339: Links in email.png
Mar 22 2024, 3:18 PM
Restricted File
Mar 22 2024, 3:17 PM
Restricted File
Mar 22 2024, 3:17 PM


Flagging a few donors who had trouble upgrading in response to the recurring upgrade email that was sent out on 03/21.

First, flagging donor CID 397205 who received the recurring upgrade email on 03/21/2024 and noted that the "Link to increase giving didn’t work." We were able to recreate. Both of the upgrade links in the donor's email take you to this page with an error as shown in the screenshots below:

Links in email.png (334×1 px, 140 KB)

Error Message.png (932×1 px, 109 KB)

We also heard from a few additional donors who noted that they had trouble upgrading, but we were unable to recreate an issue with their donation links.

ZD Ticket #CIDCommentTech Specs
146123951838355I tried to increase my monthly donation and it wouldn't submit it. I also want to change it from a credit card to my debit card. I have tried to figure out how to do this with your website and couldn't.Unknown
146116154172937I received the following email from asking if I wanted to increase my donation. I clicked on the green link to increase my monthly donation from $4.50 per month by $5.50 to make a total donation of $10.00/month. Unfortunately after filling in the requested information the final link did not work.Unknown
146101412658493I’ve attempted to increase my monthly donation a couple of times but the links don’t work.macOS Ventura 13.4.1 & Firefox
14614088467494Hi, just want to let you know that I tried to put in a $2.50 monthly increase — I had to put in the amount — but when I clicked on update (repeatedly) nothing happened. So I just selected $1. Thought you’d want to know.Unknown

Will add additional examples should any other donors reach out reporting trouble.

Event Timeline

AKanji-WMF moved this task from Triage to DRI Backlog on the Fundraising-Backlog board.

@Ejegg Adding Elliott to investigate as he developed the tool

For donor 397205, it does look like a bad link. That screencap seems to be the text-only version of the email. Has that been QA'ed? Can we check that the checksum token is there in the text-only version?

51838355: The link looks good. Can see them clicking on the upgrade form Mar 22 00:01:55 and all the resources loading with successful status (including the back-end request to Civi), but no submission. Perhaps there was an error in the Javascript that prevented the submission? We should add logging for client-side errors. Logs show browser as Chrome 122 on Chrome OS

54172937: Similar, initial form load is in logs but no record of attempted submission. Firefox 123 on Windows 10

12658493: Submit appears in logs for this one, but the status is '200' and not '302'. '200' means a successful page load, but we would expect 302 here to mean a redirect to the thank you page. I'd like to review which code paths could lead to that outcome.

8467494: Link looks fine, submit is in the logs, Safari on MacOS. Again, I'd like to add more logging of client-side errors, possibly including amount validation that would prevent form submission.

For donor 397205, I was able to retrieve their email address from Civi and try testing it within Acoustic. Their address couldn't be found in Acoustic's database though. Having checked the template itself, both the HTML and Text versions included the "checksum" URL parameter. All links had the following format:[x]

For context, When building an email template, Acoustic allows you to plug-in an email address to populate any personalised data associated with that address and render a preview (including personalised hyperlinks).

As a final check, I "plugged-in" an email address that I know has a recurring donation and was able to render the text version of the email. Confirming that the text version hyperlinks worked as expected.

Change #1015076 had a related patch set uploaded (by Ejegg; author: Ejegg):

[mediawiki/extensions/DonationInterface@master] Extract base client-side error logging API

Thanks for checking @ppenloglou! So I wonder how that full real URL gets translated to the long gibberish URL that we see in the screenshot, and how the long URL gets translated back to the one with the full params. If it's something dynamic I guess it's possible that Acoustic could break a link after send. Could it have to do with the fact that their email address isn't in Acoustic?

Sure thing @Ejegg! Indeed you're right, Acoustic generates these hyperlinks during send time. But I am unaware of how exactly they redirect back to the original URL format that's included in the template. Perhaps @bsisolak could shed more light on the matter.

No humans ever see the text version, so it's not that. If if they seeing the text version they are using some kind of crazy mail client that could be alerting links.

The is encoded so that Acoustic knows who clicks the link in the email, etc. It then forwards the user to the URL @ppenloglou puts into the email. The data used to personalize the link is pulled from the Acoustic database when the user clicks the link.

One thing that can happen, if an email is sent on 3/1, and the recipient clicks the link on 3/15. I wonder if Civi has updated the data used in the database at that point, maybe that could cause an issue on your end?

I kind of recall talking about checksum, but not sure how that works.

Change #1015161 had a related patch set uploaded (by Ejegg; author: Ejegg):

[mediawiki/extensions/DonationInterface@master] Add new API action to log recurring upgrade errors

I'm not sure if this will be helpful to you all so please disregard if not! :) @Ejegg @PPenloglou-WMF

To clarify re: CID 397205 when tickets come into Zendesk it strips the messages of all HTML, etc. So we always see this raw version of all messages such as shown above and in the image below.

screenshot 1.png (445×2 px, 201 KB)

However, if we select the "View Original Email" feature in Zendesk we can also see what the original email looked like to the donor and test the links that way as well. Below is a screenshot of part of the "original email" CID 397205 actually saw...

screenshot 2.png (377×2 px, 74 KB)

In the "original email" view if I click on either link the green button "Yes, I'll give a little more each month" or the blue link that starts "We'd like to ask:.." for this particular donor I get an error page.

screenshot 3.png (874×1 px, 125 KB)

Should it be helpful and you wish to view this ticket from within Zendesk this ticket is #1461060. :)

Hi @AMJohnson I can't seem to sign in to Zendesk either via Okta or with my old password, and the reset password link doesn't send me anything. Are you able to reactivate agent accounts?

Thanks @AMJohnson for the extra info! @Ejegg , I went to Zendesk myself and had a look at the original email. Clicked on the hyperlink which resolved to:

So suspiciously, the checksum parameter never loaded any data, that's why the error page is loaded. Some questions that come to mind (but are currently outside of my technical expertise):

  • How is the checksum column populated for contacts? Could something have gone wrong there?
  • That contact's email address wasn't in Acoustic's database when I started debugging but presumably it was there during send time. Was the checksum column null then?
This comment was removed by AMJohnson.

@Ejegg Ignore my previous comment if you saw it. I re-activated your Zendesk access and resent a password request to your email. Hopefully you receive. :)

So suspect I know what happened, it struck me you said the email is not in Acoustic anymore. My guess is Civi merged two records - and in the process deleted the record the email was sent to. (which is a bigger issue if you are removing emails from the list, but that's for another ticket) When the user clicked the link the personalization failed, as the record no longer exists. I suspect this is pretty edge case then. But, you could turn off link tracking on these emails, which would then populate the URL in the email itself at the time of send. That way even if Civi updates the record in Acoustic, the link in the email would be static. Is that change warranted for this kind of edge case I don't know, as you will lose link tracking data.

@bsisolak Very interesting insight into how Acoustic handles URLs. So you're saying that without click tracking, the URL that gets generated during send time will be created once and remain static? As opposed to with click tracking, each future click requests data anew from Acoustic?

I don't imagine we'll be turning off click tracking but this was indeed interesting...

  • How is the checksum column populated for contacts? Could something have gone wrong there?

Every night we send a few files up to Acoustic. One has all the columns for donors in the _all_Wikimedia group who have some change in the last week. Another has just the emails to be suppressed (opt-outs and old emails from people whose email has changed). And the third is the checksum file. This has just the email and the checksum, which should be for every donor in the database.

Change #1015076 merged by jenkins-bot:

[mediawiki/extensions/DonationInterface@master] Extract base client-side error logging API

Change #1015161 merged by jenkins-bot:

[mediawiki/extensions/DonationInterface@master] Add new API action to log recurring upgrade errors