Will Etling

Tracking website A/B tests into Marketo & CRM

Discussion created by Will Etling on Feb 7, 2019
Latest reply on Feb 8, 2019 by Will Etling

Recently we have been using Google Optimize to test pages on our website. Some pages get dramatic full facelifts for their tests, on others we change some subtle text or color or design elements.


In Optimize, it is easy to track things like button clicks, form fills, and goals met – we just use Google Analytics events and goals, and the reporting is automatic.


However, we wanted to be able to track these these test groups/cohorts further down the funnel. For example - did leads who saw Homepage A end up turning into paying customers faster than Homepage B? If a user saw Pricing Page A would they be more likely to talk to a sales rep than those who saw Pricing Page B?


Our first attempt at recording A/B data for each lead was pretty simple and seemed to make sense - we created a field in Salesforce/Marketo, called Marketing_Test_Variant. On each of our forms this was included a hidden field. Then inside the script for a test, we would assign a cookie like "marketing_testing_variant", inject a meaningful ID like "homepage_test_january2019_version_a" or "homepage_test_january2019_version_b", and then set up our embedded forms to automatically fill the hidden field if that cookie was present.


After awhile we realized that this posed a couple problems:

  1. To run multiple tests at once (say, A/B testing the homepage and also A/B testing our signup page) we would need to add a new field every time in both Marketo and Salesforce. Not ideal, I don't love creating fields all willy-nilly. We'd end up with Marketing_Test_Variant_2, Marketing_Test_Variant_3, etc. Yuck.
  2. If our goal was to track customer performance long after the A/B test had ended, we would be shooting ourselves in the foot, because with each new test we would be updating the value of that field, and losing the old info.


This morning I think I've hit on a solution that is much more elegant - using Marketo Munchkin to push virtual link clicks, with an identifier for each test and variant. So instead of using hidden fields, we could add the following snippet of code to the script of a test:


Munchkin.munchkinFunction('clickLink', {  href: '/track_event/ab_tests/homepage_test_january2019_version_b' })

Just a throwaway example but you get the idea. The data gets stored, we can search for it later, and it will never be overwritten. We should still be able to do analysis several weeks or months down the road, after the test has ended, and even if the user has been exposed to multiple other tests.


So - does this technique make sense? Is there a simpler way to do this that I am missing? Are there limitations that I am not aware of – for example does Web Activity Log ever get cleared? Thoughts?