Iridescent-CM / technovation-app

The team submission platform for the Technovation Challenge
https://technovationchallenge.org
GNU General Public License v3.0
7 stars 4 forks source link

Switch from Campaign Monitor to Mailchimp [8,8,1.0] #2162

Closed stenington closed 4 years ago

stenington commented 5 years ago

This will involve changing the automatic mailing list registration code to talk to Mailchimp instead of Campaign Monitor, and potentially facilitating the configuration and import/export of current lists between the services.

hellafitz commented 5 years ago

Context: Mail Clients 2019 doc https://docs.google.com/document/d/1fBol5jmQVCXSvh556UFpXIDKfjhHyDQi6lCeeVuMSp4/edit

stenington commented 5 years ago

Coordination doc here: https://docs.google.com/document/d/1rPZItMmzdI1_nHjYH8zQUY3T30oSFKSfvkAQ5TcaIJk/edit#

stenington commented 5 years ago

The marketing team will handle closing down the Campaign Monitor account when they're done with the data there, our job is to flag when the platforms are all off of that API.

The timing is working out such that we don't need to import anything from Campaign Monitor to Mailchimp, we can set up brand new 2020 audiences there.

As for GDPR, our consent forms include email opt-in, so if possible we should mark that on subscribers through the API.

stenington commented 5 years ago

I'm having a hard time not introducing my own scope-creep here. A couple things I'm noticing and tempted to fix:

  1. CreateSend (the Campaign Monitor API library) isn't well isolated. I'm tempted to introduce a MailingList abstraction that captures the interactions with the system (and allows e.g. custom variables to be expressed more naturally) and then translates that to API calls. That module would then be the main place we'd swap in Gibbon (the Mailchimp API library).
  2. Maggie didn't want location data sent for students, and on season registration it looks like location data isn't sent. But if a profile gets updated by the user, it looks like the code updating the mailing list may provide location data for students.
  3. We allow parent accounts to opt-in to the mailing list, but I'm not sure that's handled correctly if a student updates the parent contact info in their account. It looks like a parent might get signed up without consent that way, or if not it relies on the API failing in a subtle way.
  4. I see rake tasks designed to help correct the mailing lists, and I see code that would let failed API calls pass through with just a log message. So if we're not watching logs carefully or regularly running the correction tools, the mailing lists could possibly get well out of sync. If we want to lean more heavily on the correction tools, it may make sense to step back and design a process with Maggie for periodically updating and confirming our lists.
stenington commented 5 years ago

So the way forward here is to try to

  1. do a fairly straight swap of the API libraries
  2. monitor for how error-prone the mailing list sign up is in practice, and
  3. write tickets for the more detailed follow ups

For a swap of API libraries, I would expect the following things to be true:

Rake tasks for Campaign Monitor can be removed instead of replaced; we'll write new tasks later if needed. Error handling can also be a best-guess sort of thing since we'll be monitoring and CreateSend and Gibbon don't have the same semantics around their exceptions.

Probable follow-up tickets are:

A refactoring to better isolate the API libraries may or may not be a part of this work.

stenington commented 5 years ago

Putting this in test, but I plan to do a round of my own testing first before we assign it out for QA.

stenington commented 5 years ago

Potential QA checklist:

Starting assumptions

Signed up when registering

Parents can opt in/opt out

Admin changes reflected in mailing list

User changes reflected in mailing list

Removed from list when deleted from platform


Notes about Mailchimp

The test audiences are:

We don't collect parents' first and last names separately, so the Parent list only gets NAME as a merge variable, where the other lists have FNAME and LNAME.

Also, I have left GDPR fields disabled on these audiences since that should be covered in the consent forms and we can assume the same permissions across the board. That was easier than coordinating the correct marketing permissions between the audiences and the platform to get started.


Edge cases

stenington commented 5 years ago

I worked through the 6 items from the QA list above pertaining to students or parents, and it looked like they were working. I think I'm ready to hand this over to the team for more complete QA.

stenington commented 5 years ago

@rsgonzal see above, I'm ready for this to get looked at by other people, but be aware there's a lot to keep straight!

rsgonzal commented 5 years ago

As admin, staging isn't letting us change the email address for mentors. We're clicking save changes but it doesn't record. Stays on the same screen. When changing student addresses it goes back to the previous page and is recorded

rsgonzal commented 5 years ago

@stenington signed up as a judge and was not added to the mailing list

stenington commented 5 years ago

@rsgonzal can you give me more details? I just signed up as a judge and it did add me, so I want to figure out what I did differently.

rsgonzal commented 5 years ago

my bad! got it now. all looks good minus the admin editing mentor email, opened #2239 for followup

read through the notes and edge cases with @mjaris and no red flags arose.