Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove total_visitors metric from dashboard breakdown reports #5058

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ All notable changes to this project will be documented in this file.

- Internal stats API routes no longer support legacy dashboard filter format.
- Dashboard no longer shows "Unique visitors" in top stats when filtering by a goal which used to count all users including ones who didn't complete the goal. "Unique conversions" shows the number of unique visitors who completed the goal.
- Dashboard no longer shows "Total visitors" in breakdown details modals.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Dashboard no longer shows "Total visitors" in breakdown details modals.
- Goal-filtered dashboard no longer shows "Total visitors" in breakdown details modals.


### Changed

Expand Down
1 change: 0 additions & 1 deletion assets/js/dashboard/stats/modals/devices/choose-metrics.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import * as metrics from '../../reports/metrics'
export default function chooseMetrics(query) {
if (hasConversionGoalFilter(query)) {
return [
metrics.createTotalVisitors(),
metrics.createVisitors({ renderLabel: (_query) => 'Conversions', width: 'w-28' }),
metrics.createConversionRate()
]
Expand Down
1 change: 0 additions & 1 deletion assets/js/dashboard/stats/modals/entry-pages.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ function EntryPagesModal() {
function chooseMetrics() {
if (hasConversionGoalFilter(query)) {
return [
metrics.createTotalVisitors(),
metrics.createVisitors({ renderLabel: (_query) => 'Conversions', width: 'w-28' }),
metrics.createConversionRate()
]
Expand Down
1 change: 0 additions & 1 deletion assets/js/dashboard/stats/modals/exit-pages.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ function ExitPagesModal() {
function chooseMetrics() {
if (hasConversionGoalFilter(query)) {
return [
metrics.createTotalVisitors(),
metrics.createVisitors({ renderLabel: (_query) => 'Conversions', width: 'w-28' }),
metrics.createConversionRate()
]
Expand Down
1 change: 0 additions & 1 deletion assets/js/dashboard/stats/modals/locations-modal.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ function LocationsModal({ currentView }) {
function chooseMetrics() {
if (hasConversionGoalFilter(query)) {
return [
metrics.createTotalVisitors(),
metrics.createVisitors({ renderLabel: (_query) => 'Conversions', width: 'w-28' }),
metrics.createConversionRate()
]
Expand Down
1 change: 0 additions & 1 deletion assets/js/dashboard/stats/modals/pages.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ function PagesModal() {
function chooseMetrics() {
if (hasConversionGoalFilter(query)) {
return [
metrics.createTotalVisitors(),
metrics.createVisitors({renderLabel: (_query) => 'Conversions', width: 'w-28'}),
metrics.createConversionRate()
]
Expand Down
1 change: 0 additions & 1 deletion assets/js/dashboard/stats/modals/referrer-drilldown.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ function ReferrerDrilldownModal() {
function chooseMetrics() {
if (hasConversionGoalFilter(query)) {
return [
metrics.createTotalVisitors(),
metrics.createVisitors({ renderLabel: (_query) => 'Conversions', width: 'w-28' }),
metrics.createConversionRate()
]
Expand Down
1 change: 0 additions & 1 deletion assets/js/dashboard/stats/modals/sources.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ function SourcesModal({ currentView }) {
function chooseMetrics() {
if (hasConversionGoalFilter(query)) {
return [
metrics.createTotalVisitors(),
metrics.createVisitors({ renderLabel: (_query) => 'Conversions', width: 'w-28' }),
metrics.createConversionRate()
]
Expand Down
3 changes: 0 additions & 3 deletions assets/js/dashboard/stats/reports/metric-formatter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import {

export type FormattableMetric =
| Metric
| 'total_visitors'
| 'current_visitors'
| 'exit_rate'
| 'conversions'
Expand All @@ -26,7 +25,6 @@ export const MetricFormatterShort: Record<
> = {
events: nullable(numberShortFormatter),
pageviews: numberShortFormatter,
total_visitors: numberShortFormatter,
current_visitors: numberShortFormatter,
views_per_visit: numberShortFormatter,
visitors: numberShortFormatter,
Expand Down Expand Up @@ -54,7 +52,6 @@ export const MetricFormatterLong: Record<
> = {
events: nullable(numberLongFormatter),
pageviews: numberLongFormatter,
total_visitors: numberLongFormatter,
current_visitors: numberShortFormatter,
views_per_visit: numberLongFormatter,
visitors: numberLongFormatter,
Expand Down
11 changes: 0 additions & 11 deletions assets/js/dashboard/stats/reports/metrics.js
Original file line number Diff line number Diff line change
Expand Up @@ -143,17 +143,6 @@ export const createAverageRevenue = (props) => {
})
}

export const createTotalVisitors = (props) => {
const renderLabel = (_query) => 'Total Visitors'
return new Metric({
width: 'w-28',
...props,
key: 'total_visitors',
renderLabel,
sortable: false
})
}

export const createVisits = (props) => {
return new Metric({ width: 'w-24', sortable: true, ...props, key: 'visits' })
}
Expand Down
1 change: 0 additions & 1 deletion lib/plausible/stats/sql/expression.ex
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,6 @@ defmodule Plausible.Stats.SQL.Expression do
def event_metric(:conversion_rate), do: %{}
def event_metric(:scroll_depth), do: %{}
def event_metric(:group_conversion_rate), do: %{}
def event_metric(:total_visitors), do: %{}

def event_metric(unknown), do: raise("Unknown metric: #{unknown}")

Expand Down
1 change: 0 additions & 1 deletion lib/plausible/stats/table_decider.ex
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,6 @@ defmodule Plausible.Stats.TableDecider do

# Calculated metrics - handled on callsite separately from other metrics.
defp metric_partitioner(_, :time_on_page), do: :other
defp metric_partitioner(_, :total_visitors), do: :other
# Sample percentage is included in both tables if queried.
defp metric_partitioner(_, :sample_percent), do: :sample_percent

Expand Down
2 changes: 1 addition & 1 deletion lib/plausible_web/controllers/api/stats_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1637,7 +1637,7 @@ defmodule PlausibleWeb.Api.StatsController do

defp breakdown_metrics(query, extra_metrics \\ []) do
if toplevel_goal_filter?(query) do
[:visitors, :conversion_rate, :total_visitors]
[:visitors, :conversion_rate]
else
[:visitors] ++ extra_metrics
end
Expand Down
4 changes: 2 additions & 2 deletions test/plausible/stats/table_decider_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ defmodule Plausible.Stats.TableDeciderTest do
test "other metrics put in its own result" do
query = make_query([])

assert partition_metrics([:time_on_page, :percentage, :total_visitors], query) ==
{[], [:percentage], [:time_on_page, :total_visitors]}
assert partition_metrics([:time_on_page, :percentage], query) ==
{[], [:percentage], [:time_on_page]}
end

test "metrics that can be calculated on either when event-only metrics" do
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,6 @@ defmodule PlausibleWeb.Api.StatsController.BrowsersTest do
assert json_response(conn, 200)["results"] == [
%{
"name" => "Chrome",
"total_visitors" => 2,
"visitors" => 1,
"conversion_rate" => 50.0
}
Expand Down Expand Up @@ -309,7 +308,6 @@ defmodule PlausibleWeb.Api.StatsController.BrowsersTest do
"browser" => "Chrome",
"conversion_rate" => 66.7,
"version" => "110",
"total_visitors" => 3,
"visitors" => 2
} == List.first(json_response)

Expand All @@ -318,7 +316,6 @@ defmodule PlausibleWeb.Api.StatsController.BrowsersTest do
"browser" => "Firefox",
"conversion_rate" => 100.0,
"version" => "121",
"total_visitors" => 1,
"visitors" => 1
} == List.last(json_response)
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,6 @@ defmodule PlausibleWeb.Api.StatsController.CountriesTest do
"alpha_3" => "EST",
"name" => "Estonia",
"flag" => "🇪🇪",
"total_visitors" => 2,
"visitors" => 1,
"conversion_rate" => 50.0
},
Expand All @@ -107,7 +106,6 @@ defmodule PlausibleWeb.Api.StatsController.CountriesTest do
"alpha_3" => "GBR",
"name" => "United Kingdom",
"flag" => "🇬🇧",
"total_visitors" => 1,
"visitors" => 1,
"conversion_rate" => 100.0
}
Expand Down Expand Up @@ -148,7 +146,6 @@ defmodule PlausibleWeb.Api.StatsController.CountriesTest do
"alpha_3" => "GBR",
"name" => "United Kingdom",
"flag" => "🇬🇧",
"total_visitors" => 1,
"visitors" => 1,
"conversion_rate" => 100.0
},
Expand All @@ -157,7 +154,6 @@ defmodule PlausibleWeb.Api.StatsController.CountriesTest do
"alpha_3" => "EST",
"name" => "Estonia",
"flag" => "🇪🇪",
"total_visitors" => 2,
"visitors" => 1,
"conversion_rate" => 50.0
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ defmodule PlausibleWeb.Api.StatsController.OperatingSystemsTest do
assert json_response(conn, 200)["results"] == [
%{
"name" => "Mac",
"total_visitors" => 2,
"visitors" => 1,
"conversion_rate" => 50.0
}
Expand Down Expand Up @@ -206,7 +205,6 @@ defmodule PlausibleWeb.Api.StatsController.OperatingSystemsTest do
assert json_response(conn, 200)["results"] == [
%{
"name" => "Mac",
"total_visitors" => 2,
"visitors" => 1,
"conversion_rate" => 50.0
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1167,14 +1167,12 @@ defmodule PlausibleWeb.Api.StatsController.PagesTest do
%{
"visitors" => 2,
"name" => "/blog/post-1",
"conversion_rate" => 100.0,
"total_visitors" => 2
"conversion_rate" => 100.0
},
%{
"visitors" => 1,
"name" => "/blog",
"conversion_rate" => 100.0,
"total_visitors" => 1
"conversion_rate" => 100.0
}
]
end
Expand Down Expand Up @@ -1509,7 +1507,7 @@ defmodule PlausibleWeb.Api.StatsController.PagesTest do
conn = get(conn, "/api/stats/#{site.domain}/pages?period=day&filters=#{filters}")

assert json_response(conn, 200)["results"] == [
%{"total_visitors" => 3, "visitors" => 1, "name" => "/", "conversion_rate" => 33.3}
%{"visitors" => 1, "name" => "/", "conversion_rate" => 33.3}
]
end

Expand Down Expand Up @@ -2067,13 +2065,11 @@ defmodule PlausibleWeb.Api.StatsController.PagesTest do

assert json_response(conn, 200)["results"] == [
%{
"total_visitors" => 2,
"visitors" => 1,
"name" => "/page1",
"conversion_rate" => 50.0
},
%{
"total_visitors" => 1,
"visitors" => 1,
"name" => "/page2",
"conversion_rate" => 100.0
Expand Down Expand Up @@ -2408,13 +2404,11 @@ defmodule PlausibleWeb.Api.StatsController.PagesTest do
%{
"name" => "/exit1",
"visitors" => 1,
"total_visitors" => 1,
"conversion_rate" => 100.0
},
%{
"name" => "/exit2",
"visitors" => 1,
"total_visitors" => 1,
"conversion_rate" => 100.0
}
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,6 @@ defmodule PlausibleWeb.Api.StatsController.ScreenSizesTest do
assert json_response(conn, 200)["results"] == [
%{
"name" => "Desktop",
"total_visitors" => 2,
"visitors" => 1,
"conversion_rate" => 50.0
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1489,7 +1489,6 @@ defmodule PlausibleWeb.Api.StatsController.SourcesTest do
assert json_response(conn, 200)["results"] == [
%{
"name" => "Twitter",
"total_visitors" => 2,
"visitors" => 1,
"conversion_rate" => 50.0
}
Expand Down Expand Up @@ -1573,7 +1572,6 @@ defmodule PlausibleWeb.Api.StatsController.SourcesTest do
%{
"conversion_rate" => 100.0,
"name" => "Facebook",
"total_visitors" => 1,
"visitors" => 1
}
]
Expand Down Expand Up @@ -1629,8 +1627,7 @@ defmodule PlausibleWeb.Api.StatsController.SourcesTest do
%{
"name" => "DuckDuckGo",
"visitors" => 1,
"conversion_rate" => 50.0,
"total_visitors" => 2
"conversion_rate" => 50.0
}
]
end
Expand Down Expand Up @@ -1686,14 +1683,12 @@ defmodule PlausibleWeb.Api.StatsController.SourcesTest do
%{
"name" => "DuckDuckGo",
"visitors" => 1,
"conversion_rate" => 100.0,
"total_visitors" => 1
"conversion_rate" => 100.0
},
%{
"name" => "Google",
"visitors" => 1,
"conversion_rate" => 50.0,
"total_visitors" => 2
"conversion_rate" => 50.0
}
]
end
Expand Down Expand Up @@ -1728,7 +1723,6 @@ defmodule PlausibleWeb.Api.StatsController.SourcesTest do
assert json_response(conn, 200)["results"] == [
%{
"name" => "Twitter",
"total_visitors" => 2,
"visitors" => 1,
"conversion_rate" => 50.0
}
Expand Down Expand Up @@ -1912,7 +1906,6 @@ defmodule PlausibleWeb.Api.StatsController.SourcesTest do
assert json_response(conn, 200)["results"] == [
%{
"name" => "10words.com",
"total_visitors" => 2,
"conversion_rate" => 50.0,
"visitors" => 1
}
Expand Down Expand Up @@ -1952,7 +1945,6 @@ defmodule PlausibleWeb.Api.StatsController.SourcesTest do
assert json_response(conn, 200)["results"] == [
%{
"name" => "10words.com",
"total_visitors" => 2,
"conversion_rate" => 50.0,
"visitors" => 1
}
Expand Down
Loading