Matomo Analytics

:discourse2: Summary Matomo Analytics is a script to enable Matomo analytics on Discourse.
:hammer_and_wrench: Repository Link
:open_book: New to Discourse Themes? Beginner’s guide to using Discourse Themes

Install this theme component


Matomo is an open source analytics platform. Users can choose between self-hosting or paying for professional hosting in the cloud.

:mega: Matomo was formerly named Piwik. See Piwik is now Matomo - Announcement - Analytics Platform - Matomo for details about the name change.

:warning: You have to whitelist your Matomo-URL inside the Content-Security-Policy-Header. Search for the admin setting content_security_policy_script_src and add your domain (with https://) there

To enable Matomo analytics on your Discourse forum, all you have to do is install the official theme component.

Valid for Matomo API v1.5 and newer

  1. Follow the theme installation guide to import from the following URL:

    And you will see


  2. Enter the Host URL and Website ID

  3. Add the theme component “Matomo Analytics” to your active theme(s).

That’s it!


Name Description
host url Host URL without http:// or https://
website id
exclude groups Comma separated list of groups to exclude from tracking such as admins, staff
user id tracking An indentifying field name on the current user object such as id, username or external_id.
subdomain tracking Track visitors across main domain & subdomains, assuming discourse is on a subdomain.
do not track So tracking requests will not be sent if visitors do not wish to be tracked.
disable cookies Disables all first party cookies. Existing Matomo cookies for this website will be deleted on the next pageview.


Thanks to @mattab & @brahn @tagtomat and @simon

:discourse2: Hosted by us? Theme components are available to use on our Standard, Business, and Enterprise plans.

Last edited by @JammyDodger 2024-06-13T13:09:12Z

Check documentPerform check on document:

Thanks for this howto, works fine for me. :thumbsup:

In order to comply with the European laws, users must have the possibility to reject piwik’s cookie. Piwik offers a really simple solution for this, by including an IFrame.

Unfortunately, Discourse doesn’t allow iframe tags in posts… :grimacing:
Does anyone see a way to include this piwik iframe in Discourse TOS ?

1 Like

:wave: I just created a new “Matomo Analytics” theme component, and updated the instructions on how to set it up.

Could you give it a try? Please also remember to remove the original custom scripts.


Looks good on first sight. No error in javascript console. Requests to piwik.php being in the webserver log again.

Statistics in Matomo are available as well.


Is this iframe thing still a concern?

1 Like

Hey @xrav3nz :clap: your component works great - thanks!

Yes it is. Opt-out should be possible, and Matomo provides this via including an iFrame: see Matomo documentation


This doesn’t appear to be working for me at the moment? I can add the component, and add the correct URL and siteid, but it doesn’t render anything:

I added the comments around the code to find it quicker in the page:


1 Like

We are on beta 6+git1 on our instance

Inline JavaScripts in themes and components are automatically extracted to an external “theme JavaScript” file.

Could you try checking the one immediately after your comments?



This is at the main page on

Hold on, I’ve got a new hash on the file on recent refresh, it looks like the code is there. Thank you @xrav3nz!

Looks like it’s working now - not sure what I was doing wrong yesterday - user error.


So I have the JS loaded into the theme customizations, and the external “theme JavaScript file”* is linked in my test browser, just under where I inserted it like in the screenshot in a few posts earlier … BUT the requests aren’t coming through to the Matomo tracking web server.

(Tracking works fine for other non-Discourse sites, FWIW.)

Has anyone else seen that happen?

* e.g.{numeric_string}.js?

Thanks for the component!

I’m confused why the tracking code is sending a custom variable called Anonymous. Isn’t that custom for your particular Matomo setup? It doesn’t seem like it should be there for everyone.

_paq.push(['setCustomVariable', 1, 'Anonymous', !currentUser, 'visit']);

I added a few lines so that it would track visitors between discourse on a subdomain and a main site. Happy to send a pull request if you want it.

You have to whitelist your Matomo-URL inside the Content-Security-Policy-Header. Search for the admin setting content_security_policy_script_src and add your domain (with https:://) there


I’m having trouble making this work on my installation. I’ve installed the component, and added it to my theme, but Matomo is saying there’s no data for the site. I’d think I have the settings correct:
But I’m seeing this error in my browser console:
…and when I look at the site in Matomo, I get this:
What am I missing?

Edit: Further investigation reveals that the error in the Javascript console only appears in Firefox, not in Chrome (with the latest versions of each on a Mac). And I am now seeing some results in Matomo, though Firefox is conspicuously absent–all but one of the visitors are using Chrome; the one exception is using Safari.

Any thoughts on this? This post:

suggests that it could be Firefox’s “do not track” settings, but even when I disable them for my site, I’m getting the same error in the web console with Firefox. And Firefox doesn’t seem to be viewing this as a tracker in any event:

Try to remove the last / of “Sign in - Matomo” --> “

1 Like

Thanks. Unfortunately, I’m still getting the same error:

Could you give me the URL of your forum?

Do these two fields need to be completed ? I don’t really understand them.