[Updated 8/23/2012: I've found another bug that is silently destroying cross-domain Google Analytics cookie passing whenever you link to a Convio secure*.convio.net "splash" donation page. -S]
[Updated 8/19/2012: I've found yet two more bugs that have me pulling my hair out. They are documented at the bottom. -S]
Convio’s CMS and transaction processor offers integration with Google Analytics. This is great, as there are distinct elements of the donation or e-retail experience that are difficult to collect data on without their assistance. However it seems like the Google Analytics integration was implemented by someone who followed the directions but didn’t necessarily pull any data to analyze. There are a number of fatal errors, several of them documented.
I’ve worked on a number of nonprofit websites based on Convio, and I’m always being hired to fix what is broken out of the box. In the interest of actually making the situation better, I offer
three five six issues and suggested fixes that would allow people to actually use the data in a meaningful way.
Correctly implement redirects on secure*.convio.net. (Convio bug #63189)
This one is so complicated it requires its own blog post, but here’s a short summary. When you have your main website somewhere like www.savethewhales.com and your donation pages on Convio at secure3.convio.net, Google Analytics will not work right out of the box. You need to trick out the links to secure3.convio.net with special code to synchronize your web visitor’s id across from your domain to the Convio domain.
I’ve discovered that Convio’s web app on secure*.convio.net is deleting the Google Analytics cookies from the URL and reloading the page in order to add paramters like “idb” to the URL. Unless there’s a way around this, pretty much every Google Analytics implementation that uses secure*.convio.net is broken.
Fix: Tweak applications like Donation2 and Advocacy to not delete the Google Analytics cookies when they do a redirect to themselves (Convio bug #63189)
Properly implement the Google Analytics asynchronous tagging (Convio bug #62673)
Historically, the donation, advocacy, e-retail and other transactional parts of convio’s system are built using the legacy Google Analytics tagging (the ”synchronous” code, as opposed to the more recent and improved ”asynchronous” code). The old, synchronous code was placed at the bottom of the web page, and in some cases it didn’t run because the page had to fully load. This resulted in a loss of data.
Last winter, Convio implemented the new, asynchronous code, but left it at the bottom of the page, instead of following Google’s directions and placing it in the <head> section of the document.
Fix: Move the standard appearance of the GA code to the end of the <head> section of pages and closely follow the GA recommendations.
Add cross-domain cookie passing code to e-retail, donation, and advocacy Google Analytics tags
Many Convio cms-based sites are built like this:
- Main website appears on branded domain name (www.stopshootingsealions.org), which link to…
- Donation and advocacy pages appear on https://secure3.convio.net/
If you know a little bit about Google Analytics, you know that this setup doesn’t work without changing the links on stopshootingsealions.org and configuring the GA code on Convio’s secure pages to appropriately link the web visitor across domains. Why is this important?
Imagine if you google “are people shooting sea lions?” and end up finding stopshootingsealions.org and giving them a donation. By default, the fact that you’re a Google-search driven web visitor will not be recorded as the source of that donation. In fact if you run a “source of conversions” report in Google Analytics, it will look like all your donors came from one website, “stopshootingsealions.org”. Unhelpful.
The default, out of the box Convio template for Google Analytics code doesn’t include the linker code on the Donation, Advocacy, or e-retail pages, and there’s no way for a Convio admin to alter the GA template to have it synchronize the cookies.
How do I know this? Because I have a tidy little consulting business implementing cross-domain cookie synchronization for Convio clients. Though it’s probably not in my personal best interest, it’s in the best interest of nonprofits everywhere if Convio fixes this.
Fix: Add GA Linker code to Convio GA template on all secured Convio-hosted pages, or allow Convio admins to change their GA tags template for these pages.
Openly document the GA tags template
Despite everything above, I really like the Convio GA implementation. The Convio implementation of the “form hierarchy” pseudo URLs that makes reporting so much easier.
Examples of this include: “/funnel/Donation2/<name of form>/step1″ or ”/funnel/Donation2/<name of form>/complete”. This sort of naming convention that Convio uses makes it easy for web analysts to setup
goals, funnels, custom reports, etc.
Since it’s non-trivial to convert this to use the asynchronous code, most convio clients with real analytics needs I know are still using legacy items on their transactional pages. You can get away with this for a long time until
you start using a product like Optimizely that really, really, wants to report data back into GA using only the new asynchronous code.
Like many other parts of the Convio system, it needs to be opened. Others who have specific needs for their GA code that Convio hasn’t implemented (and that will be anyone who’s seriously using GA for custom segmentation) need to be able to customize it at their own risk. Ideally it would be a template editable by the admin. Less ideally, it would be published as a reference implementation so that others can implement their own forked versions.
Fix the bug that causes Advocacy funnel reporting to fail (Convio bug #63113)
Convio’s GA integration touts the ability to report all the stages of advocacy participation in a funnel, from the Splash page through completion. That’s great, except that it doesn’t record the first page of the process (the splash page) due to a known bug recorded by Convio.
Fix: Correct defect outlined in existing bug report.
Disallow “second pageviews” in Convio’s Google Analytics tracking (Convio bug #59403)
If you are using funnel tracking in Convio, you may have noticed something funny about the code it inserts. It looks like this:
Instantiating a tracker and then making another analytics call is how Convio is generating a virtual pageview for funnel tracking. Except there’s a problem. Your analytics will now tell you that twice as many people went through your advocacy or donation process as actually did. And your pageviews will be wrong. And worse yet, both of these pageviews have separate Google Analytics visitor ids. I’ll bet it will also interfere with conversion source tracking.
The fix to this is really easy. All you have to do is call the original trackPageView call with the url you want to record in your analytics, like this:
_gaq.push(['_trackPageview','/funnel/Advocacy/name of advocacy action/UserAction']);
The resulting code would look like this:
Fix: Correct defect as documented in Convio’s bug database.
Noah Cooper at Convio has heard my points, and been very amenable, but he’s only one man. Give him a little help by voting these up on the Convio Community in this post.