Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

File download tracking #32

Open
fi4sk0 opened this issue Jun 5, 2020 · 7 comments
Open

File download tracking #32

fi4sk0 opened this issue Jun 5, 2020 · 7 comments

Comments

@fi4sk0
Copy link

fi4sk0 commented Jun 5, 2020

Hey there,

I'm using gatsby-plugin-matomo 0.8.3 and it's working perfectly (thanks!) for regular navigation on the page. The page also offers downloads (linked to static files) like this:

<a href="/static/somefile.zip" download="">Download</a>

Unfortunately, the downloads are not shown in the Matomo dashboard. Is there anything else to setup to get this working?

Thanks!

@robinmetral
Copy link

I think this would be covered by #2

@kremalicious
Copy link
Owner

kremalicious commented Jun 20, 2020

enableLinkTracking is added by default with this plugin and I found this automatic outlink/download link tracking covering most use cases. For me, the Behavior > Outlinks & Behavior > Downloads lists in Matomo get populated as expected.

But that automatic detection is based on a pre-defined list of file extensions Matomo uses to detect download links. Are you using any other extension than in this list maybe? If so I could add an option to add more file extensions for the automatic link tracking.

7z|aac|arc|arj|apk|asf|asx|avi|bin|bz|bz2|csv|deb|dmg|doc|
exe|flv|gif|gz|gzip|hqx|jar|jpg|jpeg|js|mp2|mp3|mp4|mpg|
mpeg|mov|movie|msi|msp|odb|odf|odg|odp|ods|odt|ogg|ogv|
pdf|phps|png|ppt|qt|qtm|ra|ram|rar|rpm|sea|sit|tar|
tbz|tbz2|tgz|torrent|txt|wav|wma|wmv|wpd||xls|xml|z|zip

For full manual control you could always use the tracker object on window directly, like:

<a href="/static/somefile.zip" download onClick={() => window._paq.push(['trackLink', 'https://myurl.com/static/somefile.zip', 'download'])}>Download</a>

But that's rather cumbersome obviously

@fi4sk0
Copy link
Author

fi4sk0 commented Jun 22, 2020

Thanks for clarifying.
I found what the problem was: The downloads were hidden inside a foldout component. After switching to "hidden" instead of not rendering, it worked.

@samajammin
Copy link
Contributor

Thanks @kremalicious!

enableLinkTracking is added by default with this plugin

I'm curious why I can't see it in the script code.

Here's the snippet I have in a <script> tag on my old site:

        var _paq = window._paq || [];
        _paq.push(['trackPageView']);
        _paq.push(['enableLinkTracking']);
        (function() {
            ...
        })();

Inspecting the DOM in dev mode with this plugin, I'm not seeing it:

    window.dev = true
    if (window.dev === true || !(navigator.doNotTrack === '1' || window.doNotTrack === '1')) {
      window._paq = window._paq || [];
      window._paq.push(['setTrackerUrl', 'https://matomo.ethereum.org/matomo.js/matomo.php']);
      window._paq.push(['setSiteId', '4']);
      window._paq.push(['enableHeartBeatTimer']);
      window.start = new Date();
      (function() {
          ...
      }
    }
  

Is it being configured under the hood somewhere?

@kremalicious
Copy link
Owner

kremalicious commented Jun 24, 2020

good point @samajammin, enableLinkTracking is not added to the initial generated static page, but fired on client-side only in gatsby-browser.js for every route change on Gatsby's onRouteUpdate trigger: https://github.com/kremalicious/gatsby-plugin-matomo/blob/master/src/gatsby-browser.js#L36

I based this on somewhat of an educated guess, where I understood that for a single page application Matomo needs that so not only links on the initial page are tracked, but also on subsequent visited pages. And a user arriving on the first landing page will fire onRouteUpdate, which will then actually record the first page view hit, and enable link tracking for that route.

That being said, I never fully explored link tracking since it seemed to just work with that implementation. There's probably a case to be made, which needs to be verified and tested, to put enableLinkTracking within the initial tracking code and see how Gatsby behaves with its static and hydrated pages. So I'll keep this issue open for now in case anybody else has some experiences to share, thanks everyone so far for reporting back!

@samajammin
Copy link
Contributor

Thanks for the quick response & explanation @kremalicious!

FWIW, the previous site used VuePress & the outlink tracking appeared to working when added to just the initial generated static page. Perhaps the only tracking we had was when the user landed on that given page though, so I can't verify if that's the correct approach.

I'll keep an eye on our data with this new configuration & let you know if this shows similar results or not.

@samajammin
Copy link
Contributor

Following up on this for folks who are curious.

Since migrating our site to Gatsby (& using this Matomo plugin) on 6/25, we have seen a significant jump (~2x) in outlinks:
Image 2020-07-03 at 10 59 38 AM

This would support your theory @kremalicious that link tracking should be enabled on every route change, though I'm not sure how to verify this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants