Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Content Tracking, Banner tracking: track impressions, Clicks on any piece of content #4996

Closed
mattab opened this Issue · 21 comments

5 participants

@mattab
Owner

(Updated: check this internal docs to see up to date specs & discussion)

We want to build a way in Piwik to determine the performance of the pieces of content on any page of the website or app.

Basic requirements

  • Track metrics for banners / content pieces:
    • Impressions,
    • Clicks,
    • CTR (Click-throughs / Impressions)

Note: we assume in the following requirements that a banner is a piece of content on the page - it can be either a whole section of the page (in a <div>), an image/banner ad, or just a text ad/link.

Proposed solution

  • Definition of a content piece (banner)
    • A content piece is an element that is seen and clicked by people, to create traffic to specific parts of the website 
    • A content piece has:
      • Content name,
      • Content image (for a banner) or a Content text (for text ad) - optional,
      • Click URL, where the content links to - optional.
  • Tagging of the content piece

    • you may add a CSS class for the main content element (<div>, <img> or <a>): <div class="piwik-trackcontent" id="sample">
    • or you may add a tag "data-trackcontent" to the main content element: <div data-trackcontent id="sample">
    • the Click URL, Content Image and Content Name will be detected automatically or can be specified by using CSS class or tag to the link element:
      • the Click URL can be a landing page or a product page. Help Piwik detect this Click URL by tagging your content links elements:
        • by default, Piwik will automatically detect the first link found within the content:
        • you may add a CSS class to the link element to track, <a class="piwik-trackclick" href="{CLICK_URL}">
        • you may add a tag "data-click" to the link element  <a data-trackclick href="{CLICK_URL}">
      • the Content Image is what all visitors see before clicking on the content.
        • by default, Piwik will automatically detect the first image found within the content:
        • alternatively, you may add a CSS class to the image element to use as banner image.  <img class="piwik-banner" src="{BANNER_IMAGE}">
        • or add a tag <img data-banner src="{BANNER_IMAGE}">
      • the Content Name must be memorable and distinguishable from others. Piwik will detect the content name by:
        • reading the 'data-name' attribute of the main content element: <div data-name="Content name 1" ...>
        • reading the title element of the main content element: <a href="{CLICK_URL}" data-trackclick title="This is used as content name">
        • reading the title element of the Image found within this link element and used as content image <a href="{CLICK_URL}" data-trackclick> <img title="This is used as content name" src="{BANNER_IMAGE}"> </a>
        • note: if data-name=" is not found in the data-trackclick element or any children, piwik will also read the title="" and alt="" attributes
          • if no title or alt is found, the Content Image name is used as Content name, eg. "SHOP-new_at_shopi_tile"
    • you may tag the content, but set it as not "tracked" automatically upon trackPageView() call
      • this can be used i.e. for carousel banner images on the page, so that the carousel script will trigger a method to track a banner when it's displayed. <div data-trackcontent data-noautotrack id="sample"> <div class="piwik-trackcontent piwik-noautotrack" id="sample">
        • maybe we could automatically detect when such element becomes visible, and send the Impression event automatically
  • Tracking the impressions

    • One page typically will have several banners. Once the page is loaded, we check all tagged banners in the DOM,
    • (check whether these banners are displayed on the page - in case a carousel of ad, we want to track impressions of ads that are not hidden /display:none / visibility / height > 10 px / etc.)
    • Piwik.js on page load, when trackPageView() is executed, will create an array of Banner impressions events.
      • the trackPageview() will send only impressions for banners that are tracked automatically
    • Performance:
      • These impressions are sent at once along with the page view and/or any other event.
      • For a given banner on a given page, we should record the impression at most once (in case banner disappears and re-appears).
      • if it's too complex to bundle as one request, then it's Okay to do two http requests when Content pieces are in the page.
        • Maybe #4910 would help.
    • Note: if the banners on the page change (eg. using Ajax) then user must tell Piwik to re-scan the page to look for banners.
      • For this we can add piwik.js function trackContentPieces() that will let users re-scan the page for Content pieces when DOM has changed.
      • maybe we ask user to call trackContentPieces() to enable the feature?
  • Tracking the clicks

    • goal is to detect URL from href="" or onclick="" or other attributes.
    • How tracking clicks work: there are several options
      • user can decide to manually setup the proper redirect URL via piwik.php?rec=1&idsite=1&clickurl={$URL_HERE}&....
      • and/or maybe we can replace the href="" directly within the DOM so right click, middle click, shift click are also tracked
        • note: with this solution if Piwik http service is down then the website would be partly broken.
        • we should make sure the redirect still works when the mysql server is down
      • and/or maybe we can hook on the click event on the banner/ad element (and all its children?), then fetch the URL, and redirect this URL via piwik.php.
        • is there a valid JS technique to do this?
        • does it work in all modern browsers
        • does it work on mobile
        • Note: when banner links to external websites, for performance, do not trigger the outlink event as it can be tracked during the redirect
    • note: as a user, I see that piwik.php redirects is the default "click tracking" solution, but I want to be able to disable this piwik.php redirect and instead use the link tracking 500ms solution.
  • Reporting
    • New report: Actions > Content
      • Reports performance data by Banner name: Impressions, Clicks, CTR
      • Also reports the Overview with metrics value over all banners: Total banner impressions, Total banner clicks, Average CTR
      • possibility to display the banner images in the report (via toggle option)
        • how do manage standard IAB sizes to make the report look good
    • many existing benefits of using the Piwik platform
      • the Banner report can be segmented by any custom segment
      • historical data explorer and trends (row evolution)
      • Get alerted whenever Banners are very successful or a failure, with monthly or weekly Custom Alerts.
      • Reports can be scheduled by Email, download as PDF reports.... and in Piwik Mobile!
    • we will even be able to report accurate banner stats, ie. daily unique impressions and daily unique clicks
      • assuming we use custom events, eg. trackEvent(category = "banner", action ="impression", name = "SHOP Lunch box img4", value = $ad_visibility)

Sample banner code

We need to add "data-trackcontent" attribute to identify the banner and "data-name" to identify the banner name:

<div data-trackcontent data-name="Content name" class="subc">
<a data-trackclick title="Sample Banner" href="https://www.shop.us/grocery-items/new-at-shop/">
<img src="https://www.shop.us/fileadmin/Homepage/Bottom_Pod/SHOP-new_at_shop_tile.jpg" width="182" height="174" alt="">
</a>
</div>

Sample mockup

content-tracking

Docs & FAQ

@mattab
Owner

Tracking banner ads impressions was discussed in this forum post

@hpvd

maybe there is a intersection with usage possibilities of event tracking?
e.g.
if there are some tabs on your website you could define the usage of them as an event "jump to tab X" but of course the tab name (link) is also a piece of content...

-> what should the user do: implement both for the same thing? (i think this would be the worst way)
-> or could these functions be merged somehow?
=> hmm don't know...what do you think?

@mattab mattab added Major and removed c: Core Critical labels
@mattab mattab modified the milestone: Short term, Piwik 2.6.0
@mattab
Owner

Ticket description has been updated with the latest version of the specs & requirements. Please comment if you have any feedback or idea!

@tsteur tsteur self-assigned this
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur updated questions #4996 e4c780d
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 better naming 4ab73a7
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 some more questions 39d7cbd
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 thoughts on how to define content and already started to c…
…reate some needed methods
3b7671b
@hpvd

hmm maybe you could have a look again on this comment
#4996 (comment)
and a give little more explanation of the differentiation of event tracking and content tracking? Isn't content tracking a part of event-tracking? Especially the things mentioned in #4996 (comment)
"tracking of scrolling etc" looks for me like an event: the user reaches 25% percent of the site, 50%... or the bottom (100%)
but also seeing and clicking a banner is an event...
giving it more detail:
maybe a more universal approach to reach the goals described in this ticket could be to offer the possibilities for perfect cross-linking of existing
event-tracking+
goal-tracking+
funnel-analysis?
only substitute an "event" by a "site visit" you could use the same way for a second type of analysis...
and the other way around: also other types of events would like to see this possibilities of analysis describe in this ticket...
sorry for bothering but i would really like to understand this!!

@tsteur
Owner

@mattab Don't think how far down a user scrolls is related to this issue. Such things need to be handled in a separate issue.

@hpvd You would use content-tracking for instance when displaying ads on a website. An ad can be for instance an image / banner. Different ads might be displayed on one page depending on the visitors but can be also always the same or there can be none ads sometimes. On some pages the shown ads even change after a certain time or event such as a click. You want to know how often a specific ad was displayed and how often it was clicked. You can not really answer this question with events.

The simple fact that a banner is shown on a page is not really an event I think. You'd probably end up having already like 10 events per page just for content-tracking. I haven't thought in detail about implementation yet but it will be probably a cross-link of content-tracking and event-tracking - indirectly maybe also goal tracking.

Is it maybe a bit clearer?

@mattab
Owner

Maybe not MVP, but a good idea:

  • Allow to create a Goal that is triggered when Content Piece is Clicked. This would allow to see conversion rates to Goals, and referrer attribution of particular Clicks events / contents. This seems a good move to make the most of this interesting content measurement data.
@hpvd

thanks for the explanations. It's getting a little clearer.
Especially when dealing with different banners which are not always shown.
(to get it right: the showing of banner was not considered as an event only the click of a a user triggers an event of type "user clicks on banner")

My general idea was not to have that many different things to track

only events (maybe of different types??) and sites

and using for everything the same statistic processes/types of analyses.
Just to simplify and streamline not only the program code but also the learning curve of the users:

  • everything works in the same way and
  • you have for everything the same analyses/statistics available
@mattab
Owner

Don't think how far down a user scrolls is related to this issue. Such things need to be handled in a separate issue.

Good point, moved this enhancement request to #6069

@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 archiving of impressions should work now, displaying impre…
…ssions should work (contentName => contentPiece and contentPiece => contentName). Next step: Matching interactions with impressions then this part is nearly done hopefully
18e7b56
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 interactions should be tracked now. As only the name is re…
…ally mandatory created a new column content_name for now (instead of existing idaction_name, will maybe remove it again). Otherwise it is hard to know whether it was a content action or not and the actual problem was that maybe other actions already define an idaction_name which might be different to content_name. We need the content_name along other actions to match an interaction with an impression. Next: The client side and the redirect...
ce8d27c
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 worked on detecting content name, piece and target. Next: …
…Sending the impressions to Piwik via bulk tracking
10ecff5
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 I learned the secondary dimension is not needed in my case…
…. Makes it simpler and now the correct label is displayed in a subtable. I should not copy/paste code that I do not understand :)
f9219df
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 track internal and external interactions (on click), also …
…offer some APIs to manually track impressions and interactions (we might remove them later again, to be discussed)
e46fd01
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 started to work on detecting whether an element is visible…
… or not. This is quite a complex task and I do not think it can always work 100%. There are too many factors and ways to hide an element. For instance using a zIndex, zoom level, when a div is scrollable, CSS might not be applied yet at the time we scan etc. So far this should cover most cases but it must be clear it cannot work in all and there still needs to be a lot of testing. Also need to detect whether CSS was applied or not
7d27436
@tsteur tsteur referenced this issue from a commit in piwik/piwik-mobile-2
@tsteur tsteur refs piwik/piwik#4996 impressions metric to preferred metrics in Piwi…
…k Mobile, used by content tracking
a30788b
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 make sure processed metrics will be translated automatical…
…ly and a user does not have to add them manually to the viewDataTable
9b1d0b1
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 updated spec to better describe how it will work. While wr…
…iting this I noticed a few things that need to be changed and that do not work, also many possible new features for V2. Already updated a few things but will need to adjust more things before writing tests
71c76ff
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 handle interactions better / correct. Code not tested at a…
…ll yet. Gonna write some tests
4a43929
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 ignore interactions if set, detect content blocks as visib…
…le that were visible before but are not now, mark absoulte url out of content target in case it is a link
7a297b8
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 many tests to make sure our query/selector engine works. h…
…ad to patch quint in order to make the tests work :(
2183ce7
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 had to patch qunit as document.title was not a string but …
…an img element on firefox
1a619da
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 changed methods to have them better testable, instead of s…
…ending the request directly in the helper / private methods we return the request and send the request in the actual tracker callback method
6800077
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 more tests and bugfixes. I am no longer so sure whether we…
… actually should track the redirects as an event. I do not really see an advantage here as the pageview will be tracked later anyway. Makes it rather confusing...
00bd635
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 many new tests and bugfixes. Also fixed > 100 JSlint error…
…s but still 4 or 5 errors I could not fix so far
6f61d16
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 fixed all existing tracker tests as the click event was no…
… longer triggered... not easy to figure this out :)
a3e0c5d
@mattab mattab added the c: Platform label
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 many new tests and bugfixes, worked around some JSLint reg…
…exp issues and disabled the whitespace check which makes no sense to me. The tests do now run again in PhantomJS but report a lot of failures and I have not looked yet into it.
774611a
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 more bugfixes, more work on cross browser, added possibili…
…ty to track content via php tracker (not tested yet)
34f48f6
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 it should basically work but need todo some more stuff lik…
…e cross browser and php tests. A few more minor and easy to implement features as well
7ad02af
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 many new tests and many bugfixes. Tests should be done now…
… except for cross browser support. I fixed many issues as I did not consider that link tracking may be disabled or enabled and the behavior should be different in such a case.
df65e0d
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 fixing more tests dc98df3
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 fixed more tests 5e461d4
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 redirect only to trusted hosts (will have to remove this m…
…ost likely again as you would have to register subdomains etc as well). Also added some missing test files
19d5f67
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 updated piwik.js 5692b6e
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 content JS tests do now run on IE10, latest FF + Chrome + …
…Safari + Opera and on my local phantomjs but not on travis phantomjs
5e405cc
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 do log successful ran tests so we can locate not working o…
…nes better if they have same message
92e2aa0
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 allow only hosts of siteIds that are present in the URL an…
…d do not allow known hosts automatically both to prevent issues on shared Piwik instances
980ac3a
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 maybe this fixes the not working tests on travis? maybe th…
…e sqlite version returns the result in a different order
35c9e84
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 we should first test methods that do not depend on other m…
…ethods. So in case of JS error we know by which method it is caused
c94c501
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 fix js error on IE6-IE8 because indexOf is not defined the…
…re. also added removed update script again
ab44317
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 some fixes, prevent JS errors on FF<9 and IE6, add random …
…string to piwik.js to prevent caching sometimes
69421c8
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 compiled piwik.js 78f9254
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 we have to add build a fully qualified URL of the content …
…piece in case we detect the URL of an image, video or audio, pdf, ... automatically. Otherwise we cannot display a preview in the UI and one would not know which URL was actually meant. Thinking about using //domain/path instead of http://domain/path as it would track different content pieces for http and https otherwise
e127384
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 on hover display an image in case it starts with https?://…
… and ends with jpg, gif, png or svg
77dfed2
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 in case we are in an overlay session we should not track. …
…Check could be maybe moved to trackCallback in general?
b77da57
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 fix a test b9d67f8
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 tests should now work in case Piwik is installed in a subd…
…irectory although could not really test it. Also encode redirect uri
566cdbd
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 make sure we always track same content name and piece in a…
…n interaction and also have to use default values
d8f547b
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 fix tests 1acf150
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 fix namespace 14a920f
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 use content type in case it was a standalone content impre…
…ssion request which was not performed along an outlink or download or ...
a0ca00a
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 do not return any impression or interaction in live.getVis…
…itorDetails as it would not be accurate anyway. For instance a download or outlink can be an interaction as well when tracked together etc
6a19ac4
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 fix tests b44138f
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 some more tests ac9bf4d
@tsteur tsteur referenced this issue from a commit in piwik/developer-documentation
@tsteur tsteur refs piwik/piwik#4996 added new content tracking parameters c96640e
@tsteur tsteur referenced this issue from a commit in piwik/developer-documentation
@tsteur tsteur refs piwik/piwik#4996 added some documentation to JavaScript tracker 5405404
@tsteur tsteur referenced this issue from a commit in piwik/developer-documentation
@tsteur tsteur refs piwik/piwik#4996 more work on content tracking guide 12bab31
@tsteur tsteur referenced this issue from a commit in piwik/developer-documentation
@tsteur tsteur refs piwik/piwik#4996 more work on content tracking guide 6ac60ae
@tsteur tsteur referenced this issue from a commit in piwik/developer-documentation
@tsteur tsteur refs piwik/piwik#4996 we need to escape the "<" otherwise it is not s…
…hown on developer.piwik.org
500c1c3
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 there is a difference between link tracking enabled and in…
…stalled. When replacing the initial link urls link tracking might not be installed yet but enabled (will be installed on load event). When a click is happening on a content block we still need to use linkTrackingInstalled since then the credirect/tracking request is actually happening and we need to know whether outlink/download will track it or whether we have to do it separately. Make sure to call enableLinkTracking before trackContentImpressions although there should be no huge difference as both will be delayed until ready/load event anyway
791eef5
@tsteur
Owner

There is a bunch of things for V2: https://github.com/piwik/piwik/blob/master/misc/internal-docs/content-tracking.md#v2

Shall we create tickets for each one? Think that would be better to let them schedule easily

@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 php tests are there, we cannot test segments auto suggest …
…yet as they have to be returned in Live API which will be v2
4102fd1
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 disable contents live test for now as it works on my serve…
…r but returns different order or so on travis and I cannot fix it
6ee31ae
@mattab
Owner
@tsteur
Owner

Added some docs to JS tracker http://developer.piwik.org/api-reference/tracking-javascript#content-tracking, Tracking API http://developer.piwik.org/api-reference/tracking-api, a detailed guide http://developer.piwik.org/guides/content-tracking and a simple / short user guide (not published yet). Feel free to review @mattab

@tsteur
Owner

I'm not a huge fan of master tickets. It's like adding TODOs in code or writing down parts that need to be refactored on a page in a wiki. They usually never get done and it is like putting something into a trash. Small, specific issues can be easier prioritized and worked on, discussions are always only about one issue and so on.

I'd rather use the same label for all issues to get a summary as an "Epic" feature is missing in Github Issues.

@tsteur
Owner

FYI: Created #6265, #6266, #6267, #6268, #6269, #6270, #6271, #6272 .

@tsteur tsteur referenced this issue in piwik/piwik-sdk-ios
Closed

Support Content Tracking #45

@tsteur
Owner

I'd say the only missing thing is to make the UI test show any data but I don't get it to work. It looks like the fixture is executed and the entries seem to be in the log_link_visit_action table but for some reason it seems not to archive any data when generating the OmniFixture.sql. @diosmosis can you see any problem with this fixture? https://github.com/piwik/piwik/blob/master/plugins/Contents/tests/Fixtures/TwoVisitsWithContents.php

Do I maybe have to use the LocalTracker or so?

@tsteur tsteur referenced this issue in piwik/piwik-sdk-android
Closed

Support Content Tracking #7

@mattab mattab modified the milestone: Piwik 2.8.0, Piwik 2.7.0
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #4996 fix plugin tests 3dbf241
@a4tunado

Hey! Just tested content interaction and it looks very promising!

I've experienced 'click' request cancellation problem (see attachement).
Probably this is because of timing issue. Browser gets link content faster than send track request. I've googled an article which suggests to listen 'mousedown' events instead of 'click' http://www.cardinalpath.com/experiment-onclick-vs-onmousedown-event-tracking-in-google-analytics

However it looks more like workaround but not a solution for the problem. Is there any way to wait until track request is sent?

interaction png

@mattab
Owner

@diosmosis maybe you can assist @tsteur and help him get some content tracking data into the UI tests fixture? this is the last item left before this ticket can be closed. Thx

@tsteur
Owner

@diosmosis it does insert the content tracking fixture when building the omnifixture sql but for some reason it seems to not archive the data for content tracking and I don't understand why. Everything is looking good to me in log_ tables but the archives for content tracking contain empty datatables. Maybe you have had this problem before?

It also shows a blank table in the screenshot test but should actually show some data. The system tests on the other side work with the same fixture

@mattab mattab modified the milestone: Piwik 2.9.0, Piwik 2.8.0
@tsteur tsteur referenced this issue from a commit
@tsteur tsteur refs #6415 #4996 better protection for 0 actions if content tracking …
…is used.

Delay first content tracking request a bit to make kinda sure a possible
previous pageview request is already executed. If there is a new visitor
and there are 2 tracking requests at nearly same time (eg trackPageView
and trackContentImpression) 2 visits will be created as both visitors
are basically at the same time. This is only a workaround and it this
problem might still occur. Also delay a link earlier in case an
interaction is happening to make sure the browser waits for the
interaction to be tracked.
9f8e17f
@diosmosis
Collaborator

@tsteur Sorry, missed this comment. Can you tell me where the UI tests for contents are (if any)?

@tsteur tsteur closed this
@mattab
Owner

Beautiful & Epic Work on Content Tracking!

To all users: enjoy Content Tracking and keep the feedback coming so we can make this feature even more useful in the future!

@d-skora d-skora referenced this issue from a commit in d-skora/piwik
@tsteur tsteur refs #4996 update ui test fixture 589b509
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.