mkdocs-material/docs/setup/setting-up-site-analytics.md
2020-07-22 13:37:14 +02:00

87 lines
2.5 KiB
Markdown

---
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