Archive

Archive for March, 2012

Constant Annoyance

March 1st, 2012 No comments

I hate spam. I run my own website and mail server. I go to great lengths to avoid receiving any and have to waste my time adapting to the latest spam strategies. I am responsible for keeping our sever off blacklists. I don’t like facilitating mass marketing emails. I especially hate html email and internet marketing in general. With that said, maybe it’s better to have a voice of reason involved rather than letting those ignorant of internet culture run amok with our marketing campaigns. That’s what I tell myself, anyway.

Years ago I’d planned to run all my own email campaigns. The problem is the open source campaign software. Last I checked it doesn’t have any decent type of wsywig design interface or intelligent reporting with link tracking. I may be out of date on that, I wouldn’t know because I’m too busy to re-evaluate. I’m not too busy to rant about it now that I have a blog set up. ;)

So for now I’m stuck with Constant Contact. We chose it more or less based on monkey see, monkey do. No comparison was done with any of their competitors, we just went with it. It looks pretty, is reasonably friendly, and they have consultants who can help design things for you. Most importantly, you can have an unskilled worker manipulate pre-designed template elements and generate reports.

Of course the result is that I end up being the one who makes it all actually work. I’ll describe the steps involved in a campaign whilst bitching about the annoyances. They just finished a redesign of the UI, so I have even more to bitch about now. I’ll reserve the right to add or edit rants as time goes on.

Here’s my process, but to be fair this is an (honest?) amalgamation of scenarios presented for dramatic effect.

After days or weeks of vague impressions and some half-heard office conversations, I will be approached near the end of the work day and told we need to send out a campaign the next morning. I am verbally assaulted with vague references to the list criteria. This person won’t know the exact details and will have to check with the boss. I will be in the middle of another urgent task. It’s my fault for not being aware of the details sooner.

Our contact management system has a very tedious query designer. It’s also extremely limited in it’s abilities. It’s not luser friendly and if I manage to convince someone to use it, I have to go in and clean it up half the time anyway.

So I skip that altogether and use ms-access with odbc linked tables to the crm’s sql backend. The crm goes far out of their way to prevent me from doing this. Fuck those asshats, they’ll get their own well deserved rant blog post soon enough.

I’ll use access to whip up a query with whatever criteria I can divine. I’ll export that to excel and email it to all interested parties for review. It will be decided that we need to clean up the CRM data before we send the campaign. Someone will print the excel sheet with no regard to the formatting, splitting across two or three pages. A couple dozen pages will be thrown out. I’ll format the excel file for printing and email it again. Some time will pass while the lowest person on the totem pole does the job of collecting and correcting the crm data. The instructions to that person may or may not be accurate. If I’m lucky the changes were made in the CRM. If I’m unlucky the changes were done in excel, or worse, handwritten on the printout itself.

With the changes completed I will re-export the query and email it out. This time I’m thinking ahead and I format it just in case someone prints it. They won’t. Then maybe they might decide on different criteria.

With the criteria finalized and the numbers agreed upon and the campaign within a day or two of being ready, I export the data to excel again. Then I import it into Constant Contact.

I create a new email list and give it a name. It takes me back to the list of lists. Apparently people really just need to create lists without adding contacts. I click on my new list and then I can select to import my file. I try to look at the data preview; their redesigned import screen is a popup and can’t be moved or resized. I can see a fraction of the data at any time and it’s not very helpful. Luckily I have learned just enough through trial and error to have the data import into the correct columns anyway. Sometimes I miss a small problem but it’s not worth trying to care anymore.

The antiquated firstname, lastname format is pretty sad. If you only have a full name or the assemblage of names out of the crm is complex (like in the real world), well fuck you. It will do stupid shit to the name with commas no matter what you do. I just dump the full name into the firstname field and hope it’s not too long. Luckily we don’t need to personalize our emails. I’d still love to know how to get it to email my contacts including their name and not just the raw email address, you know, like how the rest of the entire fucking planet sends email? Far as I can tell there’s no magic circumstance where it will do this.

The data import is now added to a task queue and will take a random amount of time to begin, and then again a random amount of time to complete. Apparently importing a csv file is a major fucking undertaking these days. Not like the old days where you could just go modal for 30 seconds. Good luck finding that task queue again if you wandered off to other pages while you were waiting.

So eventually after several manual refreshes of the task queue screen your job is completed. You have to click on it to see what the import errors are. Sprinkled amidst a ton of dire warnings about useless fields having been truncated to ridiculously shorts lengths are a few important notices about bad email addresses and notices that the contact has opted-out from Constant Contact. You can’t sort this list of course. That would be handy, besides, only nerds would look at this stuff. Exporting the error list is of course not an option. I have resigned myself to scanning the list, copying the email address, searching on it in my CRM, and marking the contact as having opted-out. Then I add a note to say why. Repeat for however many there might be. This can be time consuming. One time I copied the data off the web page and pasted it into excel, imported it into access, and ran an update query that automatically did these steps. I guess it’s just easier to turn my brain off and do the repetitive manual labour.

With that done I move on to the campaign list. I find my campaign and click on something I hope will take me to the screen where I can select the email lists. It doesn’t. Eventually I click the right one and find my way there. It’s been redesigned and it looks really cool if you are an imbecile. You get see the name of the lists assigned on one row, but hey they are in cool looking buttons. No, the buttons are not clickable. No popups to display helpful information like the list date or number of contacts in the list.

With the lists selected, I check over the email before scheduling. The automatic text version of the email is complete garbage. Or sometimes it’s a totally incorrect version from the email we copied the design from. I’m surprised they even let me edit a text version. Maybe the bosses at CC forgot it’s even there, only nerds would want a text version fuck those guys and their non-trackable links. So anyway it’s riddled with obvious garbage like html tags around URLs and the width is nowhere near sane for a text version. I have to copy it all to a text editor and run several search and replace sequences and then reformat it for a width that doesn’t make me look retarded on the remote chance that a recipient actually reads it. Nobody knows or cares that I do this. Outlook is the only email client in the world.

Despite my valiant efforts Constant Contact will jam a ridiculously huge link-tracked URL at the top of the text version when it sends it out. Something along the lines of “Having trouble viewing this email that we purposefully made impossible to read and was auto-generated for senders who don’t know this exists?”, followed by 3-10 lines of some ridiculous link tracking URL that makes Echelon look amateurish. On a cell phone it will fill multiple screens, forget anyone reading past that. At least it gives me a chance to see the actual non-tracked version of all the links in my document; all too often one of them will be screwed up.

So I send out some preview emails. Every single fucking time I do a preview I have to type in the same destination addresses over again. If I ran the show, I’d have it default to a “preview” address list. It’s the little things like this that assure me Constant Contact programmers don’t have to use what they create or the people in charge just don’t care.

The screen for adding/changing images in your email is of course some fancy new style that’s modal and can’t be moved or sized. Blocking my view of the email and trying to find an image in a list of hundreds by scrolling thru a tiny vertical list 3 at a time is exactly the sort of proof that these jokers don’t have to use what they design. The shiny new gui helps to improve consistency by providing input boxes far too short for whatever text goes in them, the same as everywhere else on the site now. Give that guy a raise.

Forget trying to be clever by opening a second window to look at the design or another older design while one of their modal windows takes over your design screen. Odds are good the second window will invalidate the editing session. You’ll only find that out after you do the work and try to save it.

Want to copy bits and pieces from another campaign? I hope you enjoy the tedious process of switching between campaigns and editing each block and switching to html view, copying and pasting, repeat, and so on. I also love how updating the raw html closes the html window. Maybe CC is trying to encourage me to get better at rendering html in my head while I tack together the tables I can’t make in the wsywig editor. Despite that, they are ever so helpful with reformatting my html as I type. Nothing I love more than a machine that knows better how to rearrange my thoughts before I do.

So after fixing some weird alignment problems between the web page preview and outlook’s rendering we’re finally ready to go. Oh wait, let’s check our URL’s one last time. Hmm… all I can see now when I hover is the ridiculously long tracker url. Yeah they totally improved the fuck out of that. So much for that idea let’s just pray the urls are ok, I don’t have time to click each one and wait for a browser to load. Seriously though, what the fuck are they doing with 200 character tracker links? Is it a buffer overflow exploit? They make GUIDs and IPV6 look good. Yeah, everyone loves clicking on super long obscure links that you can’t read. I’ve seen people copy content from old email campaign emails along with the tracking links so you end up tracking for the wrong campaign and who’s going to notice? Could they detect that on the fly or would I have to queue up a major task activity to check it over? Absolutely fucking retarded.

I schedule the email and hopefully I have remembered to change the language on our account back from French to English. The French email will go out maybe tomorrow when the translator comes back with the copy. FYI, the scheduler defaults to the next day, so that one time you’re late and in a super rush to get your email done, it’s going to end up going out at the right time. Just the right time -tomorrow-, because you were too rushed to notice. Hopefully you noticed not getting the email and can rush to re-schedule it, this time for today. That only costs you a half hour if you’re lucky. Hopefully it’s not too late for most of your contacts.

So eventually after the email is sent we want to collect the reports. Can I click a button to download a pdf of all the reports? No. That would be too convenient. Either don’t record the results and let them randomly expire off the website or find the chump with a pdf printer installed. Of course that’s me. So pick the report, choose the criteria, view the report, open the printable version, print to pdf (if you can), assign a sane name, print. Then repeat 3 more times for the other reports. Later on if you’re paying attention you might notice that you only got the first page of the results. That’s right. You have to select each individual fucking page, select “print report”, and output to pdf. So now instead of 4 retarded repetitive actions you can multiply that by who the fuck cares we’re not archiving the pretty reports anymore.

Next do all that again but this time export the data. Make sure you click the button to select all the fields, otherwise you get only the email address and have to do it over. Of course just like importing the list, this a major. fucking. operation. and we have to queue an activity to generate this massive data set.

So export those reports and wait a random while for them to complete. Once again try to locate the activity screen. The activity screen of course can’t tell you the name of the report, so don’t queue up too much unless you are prepared to guess which one you want. Of course you’d gone for a coffee waiting for the fucking activity queue and you can’t remember where you left off. If you were lucky and clicked on the right report, scroll down to the bottom of the screen where they unhandily hide the export button. At least this time it will actually export your fucking data! Oh, wait, “export.csv”??? What the fuck? Ok.. cancel that. Copy the report name off the export page and try again, this time pasting in a useful name.

Now I import those csv files into access. Some day we’ll need to make a query to print out the pretty reports that CC goes out of their way to prevent us from having. If I’m re-sending the email a week or so later I will amend my original query to exclude the list of people who opened the first email from the contact list. Then I’ll export that and load it into constant contact. I have to copy the old campaign and make a new one. Good luck finding the place to rename the campaign, and then getting the name to stick even after you do change it. Nice progress on the UI he says sarcastically to himself.

Eventually I will use the original “sent”, “bounces” and “openers” lists. The bounces and openers will be imported into access. A combination of queries will be used to generate detailed history items in our CRM for each email sent out. This is expressly forbidden by the makers of the CRM. Other queries then attach the history records to the necessary contact and company records. Further queries will then update the status of the history items. The table of bounces will be used to indicate the failure of the email and record the unnecessarily terse reason given by Constant Contact. Openers will be updated as a success and the date and time they opened the email will be recorded as well.

That’s about it for the process.

Something else I eventually learned the hard way is Constant Contact’s dubious billing practice. They price your next billing cycle based upon the maximum number of distinct email addresses across all your contact lists from the previous billing cycle. AFAIK, it does not matter if you send out any campaigns with those contacts. This can really bite you in the ass if you “thought” you signed up at a specific email quantity/price level and half expected some sort of hard limit or special notice. It doesn’t help that they hide the information necessary to determine your next billing level. It’s weird so I will lay out a scenario:

Suppose your billing date is the 15th of every month. You have 2600 distinct email addresses in a contact list for a campaign you send at the end of May.

Then suppose on June 1 you upload 2,500 new and distinct email addresses for the next campaign in early June. As of June 15, you’re going to get billed for 5,100 emails at the 5000+ level instead of the 2500-5000 level. You needed to delete the 2,600 contacts from your May campaign before uploading the June campaign. Make sure the queued delete activity finishes before uploading the new list!

Make sure you delete the unused contacts by June 14 or you’ll be paying the unnecessarily higher price for two months instead of just one. In my case we went a few months before I noticed the stark price increase. Oops.. bank error in their favour!

(It is irrelevant if you have 5,000 contacts in 10 different lists and those lists intersect each other, what defines your contact count and billing level is the 2,600 distinct email addresses.)

They have all the time and money to make pointless changes and redesign the gui but when it comes to actual improvements it just gets worse as the years go by. Hey, how about some changes to improve deliverability, or better spam score evaluation, or previews of the rendering on current email clients, support for nested tables in the wsywig editor, or a dozen other things that actually matter?

Well that’s most of my rants on these guys. I may amend the list from time to time and maybe add pictures so it’s a little less boring. Feel free to correct me or challenge my assertions via the comment system or privately by email.