Tracking Magento one page checkout steps using Google Analytics

If your looking for a way to implement funnel tracking for Magento's one-page checkout then the following solution adapted from here is the implementation that I have used on many of accessions. It involves overriding the accordion function of the onepage, whilst that sounds complicated it's very easy to implement.

First copy the following file

/app/design/frontend/base/default/template/checkout/onepage.phtml

and paste it into your own theme folder which should be located at

/app/design/frontend/default/YOURTHEME/template/checkout/onepage.phtml

After you now have a local copy of the template, open it up and locate the line where the accordion is specified

var accordion = new Accordion('checkoutSteps', '.step-title', true);

After identifying the following line copy the following code before the above identified line but still inside the javascript tag

Checkout.prototype.gotoSection = function(section) {
        try {
                _gaq.push(["_trackPageview", "escape($_SERVER['REQUEST_URI']); ?>" + section + "/"]);
        } catch(err) { }
        section = $('opc-'+section);
        section.addClassName('allow');
        this.accordion.openSection(section);
};

So your javascript tag at the bottom of the template should look something along the lines of

<script type="text/javascript">
        Checkout.prototype.gotoSection = function(section) {
                try {
                        _gaq.push(["_trackPageview", "<?php echo Mage::getSingleton('core/url')->escape($_SERVER['REQUEST_URI']); ?>" + section + "/"]);
                } catch(err) { }
                section = $('opc-'+section);
                section.addClassName('allow');
                this.accordion.openSection(section);
        };
        var accordion = new Accordion('checkoutSteps', '.step-title', true);
        <?php if($this->getActiveStep()): ?>
        accordion.openSection('opc-<?php echo $this->getActiveStep() ?>');
        <?php endif ?>
        var checkout = new Checkout(accordion,{
                progress: '<?php echo $this->getUrl('checkout/onepage/progress') ?>',
                review: '<?php echo $this->getUrl('checkout/onepage/review') ?>',
                saveMethod: '<?php echo $this->getUrl('checkout/onepage/saveMethod') ?>',
                failure: '<?php echo $this->getUrl('checkout/cart') ?>'}
        );
</script>

Now finally the last set that you might want to do is set up a goal with the url of /checkout/onepage/success/ and the following Step URLs

/checkout/onepage/ /checkout/onepage/billing/ /checkout/onepage/shipping/ /checkout/onepage/shipping_method/ /checkout/onepage/payment/ /checkout/onepage/review/ /checkout/onepage/success/ Any that's how you set up Google Analytics on Magento's one page checkout, if you have any recommendations on anyway to improve this then then please comment and I will update the post accordingly!