v2.1.0
plausible/analyticsv2.1.0May 23, 2024by ruslandoga
AI Summary
A major release introducing Community Edition, GA4 import, CSV export/import, TOTP 2FA, and a new Bamboo.Mua SMTP client.
Key Highlights
- Introduction of Community Edition (AGPLv3)
- Support for importing Google Analytics 4 data
- CSV export and import functionality
- TOTP for 2FA authentication
- New Bamboo.Mua SMTP client
Breaking Changes
- Removed nested custom event property breakdown UI
- Removed prop_names from Stats API event:goal breakdown
- Deprecated CLICKHOUSE_MAX_BUFFER_SIZE
- Removed /app/init-admin.sh
New Features
- Hostname, Pages, County, and IP Block Lists
- conversion_rate and total_conversions metrics
- time_on_page metric
- County, Region, and City details views
- operating_system_versions.csv export
- referrers.csv and custom_props.csv exports
- Plugins API Tokens provisioning UI
- Searching sites by domain
- JSON logger support
- YESTERDAY time range option
- Search Console keyword filtering
- Custom events support
Full Release Notes
The highlights of this release are: - 🎉 Introduction of Community Edition [see below] - ⬇️ GA4 import - 🔁 CSV data [export](https://plausible.io/docs/export-stats#export-all-stats-to-date) and [import](https://plausible.io/docs/csv-import) between self-hosted and cloud - 🔐 TOTP for 2FA [[docs]](https://plausible.io/docs/2fa) - ✉️ New SMTP client [see below] - 🔌 The new [WordPress integration](https://github.com/plausible/wordpress/releases/tag/2.0.0) now works better thanks to the Plugin API - 📚 Hosting documentation (now at [plausible/community-edition](https://github.com/plausible/community-edition/tree/v2.1.0)) got an update and now includes a more thorough Google integration guide - 📈 Sites page got a new look with spark charts  ### Introduction of Community Edition As of version 2.1.0 this project will split into Plausible Community Edition and Plausible Enterprise Edition. The Community Edition (CE) will remain completely open source under the AGPLv3 license. The Enterprise Edition (EE) will contain extra features that will be published as source-available on Github, but we do not grant rights for anyone else to use, distribute or otherwise exploit these features. Read more [here.](https://plausible.io/blog/community-edition) As part of this change, we are also rebranding the project. The new logos for CE and EE will be different so as to clarify which version is being referred to or used at any given time. And finally as a contributor, you will have to sign a Contributor License Agreement (CLA) in order for your PRs to be considered for merging. ### Upgrading to v2.1.0 > [!IMPORTANT] > This guide assumes you are using [v2.0.0](https://github.com/plausible/analytics/discussions/3132) and have already run the data migration. #### Update config Add a secret key for the new required `TOTP_VAULT_KEY` environment variable <sub><kbd>console</kbd></sub> ```console $ openssl rand -base64 32 aihU7k+GSBKbcVFuX9VEPyUhuwlKEomqA94/SQQ0NR4= ``` <sub><kbd>plausible-conf.env</kbd></sub> ```diff BASE_URL=https://plausible.example.com SECRET_KEY_BASE=PkVcxRgQDfQyhPETlog3vvCrj5LdYFSv4ejPEJHJO+i/37w6RZfRjeVCpJayjUjJMfXsNurcv5upPhTRoD3KgQ== + TOTP_VAULT_KEY=aihU7k+GSBKbcVFuX9VEPyUhuwlKEomqA94/SQQ0NR4= ``` This new key is used to encrypt TOTP secrets at rest. #### Update images Update the images used for `plausible` and `plausible_events_db` and remove `/entrypoint.sh db init-admin` from your [`plausible.command`](https://github.com/plausible/community-edition/blob/v2.1.0/docker-compose.yml#L28) <sub><kbd>docker-compose.yml</kbd></sub> ```diff plausible: - image: plausible/analytics:v2.0.0 - command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run" + image: ghcr.io/plausible/community-edition:v2.1.0 + command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run" ``` ```diff plausible_events_db: - image: clickhouse/clickhouse-server:22.6-alpine + image: clickhouse/clickhouse-server:24.3.3.102-alpine ``` and restart the containers <sub><kbd>console</kbd></sub> ```console $ cd hosting $ docker compose stop plausible plausible_events_db $ docker compose rm plausible plausible_events_db $ docker compose up -d ``` This will boot up the new version of the app. ### New SMTP client If you were having problems with email delivery in the previous versions you can try switching to the new SMTP client by setting `MAILER_ADAPTER` to `Bamboo.Mua`. All the `SMTP_*` environment variables can stay the same. <sub><kbd>plausible-conf.env</kbd></sub> ```diff BASE_URL=https://plausible.example.com SECRET_KEY_BASE=PkVcxRgQDfQyhPETlog3vvCrj5LdYFSv4ejPEJHJO+i/37w6RZfRjeVCpJayjUjJMfXsNurcv5upPhTRoD3KgQ== TOTP_VAULT_KEY=aihU7k+GSBKbcVFuX9VEPyUhuwlKEomqA94/SQQ0NR4= SMTP_HOST_ADDR=smtp.gmail.com SMTP_HOST_PORT=587 SMTP_USER_NAME=somebody@gmail.com SMTP_USER_PWD="wnqj fkbn jcwc byxk" + MAILER_ADAPTER=Bamboo.Mua ``` In addition, [here's](https://gist.github.com/ruslandoga/c94ce526231fb77930132aaeda3fc3c9) a short guide on using your Gmail account for email delivery. ## Changelog Following [changes](https://github.com/plausible/analytics/compare/v2.0.0...v2.1.0) have been made since v2.0.0: ### Added - Hostname Allow List in Site Settings - Pages Block List in Site Settings - Add `conversion_rate` to Stats API Timeseries and on the main graph - Add `total_conversions` and `conversion_rate` to `visitors.csv` in a goal-filtered CSV export - Ability to display total conversions (with a goal filter) on the main graph - Add `conversion_rate` to Stats API Timeseries and on the main graph - Add `time_on_page` metric into the Stats API - County Block List in Site Settings - Query the `views_per_visit` metric based on imported data as well if possible - Group `operating_system_versions` by `operating_system` in Stats API breakdown - Add `operating_system_versions.csv` into the CSV export - Display `Total visitors`, `Conversions`, and `CR` in the "Details" views of Countries, Regions and Cities (when filtering by a goal) - Add `conversion_rate` to Regions and Cities reports (when filtering by a goal) - Add the `conversion_rate` metric to Stats API Breakdown and Aggregate endpoints - IP Block List in Site Settings - Allow filtering with `contains`/`matches` operator for Sources, Browsers and Operating Systems. - Allow filtering by multiple custom properties - Wildcard and member filtering on the Stats API `event:goal` property - Allow filtering with `contains`/`matches` operator for custom properties - Add `referrers.csv` to CSV export - Add a new Properties section in the dashboard to break down by custom properties - Add `custom_props.csv` to CSV export (almost the same as the old `prop_breakdown.csv`, but has different column headers, and includes props for pageviews too, not only custom events) - Add `referrers.csv` to CSV export - Improve password validation in registration and password reset forms - Adds Gravatar profile image to navbar - Enforce email reverification on update - Add Plugins API Tokens provisioning UI - Add searching sites by domain in /sites view - Add last 24h plots to /sites view - Add site pinning to /sites view - Add support for JSON logger, via LOG_FORMAT=json environment variable - Add support for 2FA authentication - Add 'browser_versions.csv' to CSV export - Add `CLICKHOUSE_MAX_BUFFER_SIZE_BYTES` env var which defaults to `100000` (100KB) - Add alternative SMTP adapter plausible/analytics#3654 - Add `EXTRA_CONFIG_PATH` env var to specify extra Elixir config plausible/analytics#3906 - Add restrictive `robots.txt` for self-hosted plausible/analytics#3905 - Add Yesterday as an time range option in the dashboard - Add dmg extension to the list of default tracked file downloads - Add support for importing Google Analytics 4 data - Import custom events from Google Analytics 4 - Ability to filter Search Console keywords by page, country and device plausible/analytics#4077 - Add `DATA_DIR` env var for exports/imports plausible/analytics#4100 - Add custom events support to CSV export and import ### Removed - Removed the nested custom event property breakdown UI when filtering by a goal in Goal Conversions - Removed the `prop_names` returned in the Stats API `event:goal` breakdown response - Removed the `prop-breakdown.csv` file from CSV export - Deprecated `CLICKHOUSE_MAX_BUFFER_SIZE` - Removed `/app/init-admin.sh` that was deprecated in v2.0.0 plausible/analytics#3903 - Remove `DISABLE_AUTH` deprecation warning plausible/analytics#3904 ### Changed - A visits `entry_page` and `exit_page` is only set and updated for pageviews, not custom events - Limit the number of Goal Conversions shown on the dashboard and render a "Details" link when there are more entries to show - Show Outbound Links / File Downloads / 404 Pages / Cloaked Links instead of Goal Conversions when filtering by the corresponding goal - Require custom properties to be explicitly added from Site Settings > Custom Properties in order for them to show up on the dashboard - GA/SC sections moved to new settings: Integrations - Replace `CLICKHOUSE_MAX_BUFFER_SIZE` with `CLICKHOUSE_MAX_BUFFER_SIZE_BYTES` - Validate metric isn't queried multiple times - Filters in dashboard are represented by jsonurl ### Fixed - Creating many sites no longer leads to cookie overflow - Ignore sessions without pageviews for `entry_page` and `exit_page` breakdowns - Using `VersionedCollapsingMergeTree` to store visit data to avoid rare race conditions that led to wrong visit data being shown - Fix `conversion_rate` metric in a `browser_versions` breakdown - Calculate `conversion_rate` percentage change in the same way like `bounce_rate` (subtraction instead of division) - Calculate `bounce_rate` percentage change in the Stats API in the same way as it's done in the dashboard - Stop returning custom events in goal breakdown with a pageview goal filter and vice versa - Only return `(none)` values in custom property breakdown for the first page (pagination) of results - Fixed weekly/monthly e-mail report [rendering issues](https://github.com/plausible/analytics/issues/284) - Fix [broken interval selection](https://github.com/plausible/analytics/issues/2982) in the all time view plausible/analytics#3110 - Fixed [IPv6 problems](https://github.com/plausible/analytics/issues/3173) in data migration plausible/analytics#3179 - Fixed [long URLs display](https://github.com/plausible/analytics/issues/3158) in Outbound Link breakdown view - Fixed [Sentry reports](https://github.com/plausible/analytics/discussions/3166) for ingestion requests plausible/analytics#3182 - Fix breakdown pagination bug in the dashboard details view when filtering by goals - Update bot detection (matomo 6.1.4, ua_inspector 3.4.0) - Improved the Goal Settings page (search, autcompletion etc.) - Log mailer errors plausible/analytics#3336 - Allow custom event timeseries in stats API plausible/analytics#3505 - Fixes for sites with UTF characters in domain plausible/analytics#3560 - Fix crash when using special characters in filter plausible/analytics#3634 - Fix automatic scrolling to the bottom on the dashboard if previously selected properties tab plausible/analytics#3872 - Allow running the container with arbitrary UID plausible/analytics#2986 - Fix `width=manual` in embedded dashboards plausible/analytics#3910 - Fix URL escaping when pipes are used in UTM tags plausible/analytics#3930