--- template: overrides/main.html --- # Setting up site analytics As with any other service that is offered on the web, understanding how your documentation is actually used can be an essential success factor. While Material for MkDocs natively integrates with [Google Analytics][1], [other analytics services][2] can be used, too. [1]: https://developers.google.com/analytics [2]: #using-other-analytics-services ## Configuration ### Google Analytics [:octicons-file-code-24: Source][3] · :octicons-milestone-24: Default: _none_ After heading over to your [Google Analytics][1] account to [create a new property][4] in order to obtain a new tracking id of the form `UA-XXXXXXXX-X`, add it to `mkdocs.yml`: ``` yaml google_analytics: - UA-XXXXXXXX-X - auto ``` [3]: https://github.com/squidfunk/mkdocs-material/blob/master/src/partials/integrations/analytics.html [4]: https://support.google.com/analytics/answer/1042508 #### Enabling site search tracking Besides basic page views, _site search_ can also be tracked to better understand how people use your documentation and what they expect to find. To enable search tracking: 1. Go to your Google Analytics __admin settings__ 2. Select the property for the respective tracking code 3. Go to the __view settings__ tab. 4. Scroll down and enable __site search settings__ 5. Set the __query parameter__ to `q`. ## Customization ### Using other analytics services [:octicons-file-code-24: Source][2] · :octicons-mortar-board-24: Difficulty: _easy_ In order to integrate another analytics service provider offering an asynchronous JavaScript-based tracking solution, you can [extend the theme][5] and [override the `analytics` block][6]: ``` jinja {% block analytics %} {# Add custom analytics integration here #} {% endblock %} ``` [5]: ../customization.md#extending-the-theme [6]: ../customization.md#overriding-blocks ### Using instant loading [:octicons-file-code-24: Source][2] · :octicons-mortar-board-24: Difficulty: _easy_ If you're using [instant loading][7], you may use the `location$` observable, which will emit the current `URL` to listen for navigation events and register a page view event with: ``` js app.location$.subscribe(function(url) { /* Add custom page event tracking here */ }) ``` Note that this must be integrated with [additional JavaScript][8], and cannot be included as part of the `analytics` block, which is included in the `head` of the document. [7]: setting-up-navigation.md#instant-loading [8]: ../customization.md#additional-javascript