I’ve been running into a problem where Piwik isn’t correctly getting the campaign information when coming in from a PPC link with utm_campaign set in the URL.
The user loads the page and we adds four things to run after Piwik’s JS loads. It runs setCampaignNameKey, trackPageView, and enableLinkTracking, followed by a custom event that sets some hidden inputs. These inputs get submitted in our web forms when they submit their information, being used to post to Piwik later on in the sales cycle.
Our issue is that the custom event only sometimes sets the hidden inputs correctly. The Piwik events seem to be firing every time, however the calls this.getVisitorId(), this.getAttributionCampaignName(), this.getAttributionCampaignKeyword(), and this.getAttributionReferrerUrl() seem to be returning blank values, usually on the initial page load.
My test usually go like this. I load a virtual machine and come to our website using a PPC link. The utm_campaign is present and formatted correctly in the query string. I check the hidden inputs and they are blank. I then reload the page (with utm_campagn still set in the URL), and once loaded the hidden inputs will be set correctly on the page.
Our current Piwik code is set up like this:
Most of our pages are static HTML pages, being served by Apache. We have a virtualhost that takes all requests from /analytics/ and gives it to our Piwik installation.
Any ideas on why the utm_campaign isn’t being pulled from the URL every time?