Skip to content

Umami 网站分析

Umami 是一个简单,快速,专注于隐私的Google分析的替代品。

在数据分析中,了解以下关键术语是非常重要的:

  1. 页面浏览量(Pageviews):指网站页面被访问的总次数。一个访问者在同一页面多次加载会被计算为多个页面浏览量。
  2. 访问量/会话数(Visits):指一段时间内用户与网站进行的互动。每个会话在用户首次访问网站开始,到用户30分钟没有任何活动或者用户关闭浏览器为止。
  3. 用户数/访问者数(Visitors):指在特定时间段内访问网站的唯一用户数量。一个用户可能在同一时间段内进行多次访问,但只计算为一个用户。
  4. 跳出率(Bounce Rate):指访问网站后只访问了一个页面然后离开网站的访问次数占总访问次数的比例。跳出率越低,意味着用户更倾向于浏览多个页面。
  5. 平均会话持续时间(Average Session Duration):指平均每个会话的持续时间。它是所有会话持续时间的总和除以会话数。
  6. 流量来源(Traffic Sources):指导致用户访问网站的来源。包括搜索引擎、直接流量、推荐流量、社交媒体等。
  7. 关键词(Keywords):指用户在搜索引擎中使用的词语或短语,导致他们访问网站的查询条件。
  8. 转化率(Conversion Rate):指访问网站后完成期望目标的用户比例。转化目标可以是购买商品、填写表单、订阅通讯等。

了解和熟悉这些术语可以帮助你更好地理解网站的流量和用户行为,并通过分析数据来优化网站和营销策略。

安装

yml
version: '3'
services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-latest
    ports:
      - '3000:3000'
    environment:
      DATABASE_URL: postgresql://umami:umami@db:5432/umami
      DATABASE_TYPE: postgresql
      APP_SECRET: replace-me-with-a-random-string
    depends_on:
      db:
        condition: service_healthy
    restart: always
    healthcheck:
      test: [CMD-SHELL, 'curl http://localhost:3000/api/heartbeat']
      interval: 5s
      timeout: 5s
      retries: 5
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: umami
    volumes:
      - umami-db-data:/var/lib/postgresql/data
    restart: always
    healthcheck:
      test: [CMD-SHELL, 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}']
      interval: 5s
      timeout: 5s
      retries: 5
volumes:
  umami-db-data:

要构建 umami 容器并启动 postgres 数据库,可以运行:

sh
docker compose up -d

要更新docker镜像,只需提取新镜像并重新构建:

sh
docker compose pull
docker compose up --force-recreate -d

数据收集

使用 data 属性

html
<button
  id="signup-button"
  data-umami-event="Signup button"
  data-umami-event-email="bob@aol.com"
  data-umami-event-id="123"
>
  Sign up
</button>

使用 JavaScript

js
umami.track('signup-button', { name: 'newsletter', id: 123 })

默认情况下,跟踪器自动收集以下属性

  • hostname: Hostname of server
  • language: Browser language
  • referrer: Page referrer
  • screen: Screen dimensions (eg. 1920x1080)
  • title: Page title
  • url: Page url
  • website: Website ID (required)

报告

见解

通过使用筛选器和划分时间段来更深入地研究数据。

Umami洞察力允许您以各种方式汇总和查看数据。通过使用分段和过滤器更广泛地探索您的数据。

UTM

要在 Umami 中使用 UTM 参数来跟踪来源信息,你可以通过在 URL 中添加 UTM 参数来实现。UMT 参数是一种用于在网络营销活动中跟踪来源信息的标准化方法。

通常,UTM 参数包括以下几个参数:

  • utm_source:用于标识流量来源的名称,例如广告系列、搜索引擎或网站。
  • utm_medium:用于标识流量来源的类型,例如广告、社交媒体、电子邮件等。
  • utm_campaign:用于标识引起流量的具体营销活动或广告系列。
  • utm_term:用于标识用户点击的关键字。
  • utm_content:用于标识广告的具体内容或变体。

例如,如果你在社交媒体上发布了一条链接,并希望追踪来自该链接的流量,你可以在链接中添加 UTM 参数,如下所示:

https://yourwebsite.com/page?utm_source=facebook&utm_medium=social&utm_campaign=summer_sale

然后,当用户点击这个链接访问你的网站时,Umami 将会记录这些 UTM 参数,并在分析报告中显示它们,以帮助你跟踪流量来源和营销活动的效果。

在 Umami 中,你可以通过查看流量来源报告来查看这些 UTM 参数的效果。Umami 将会提供关于来自不同来源和媒介的流量统计数据,以及关于不同广告系列和活动的详细信息。

常见问题

如何判断用户是新用户还是老用户?

js
const sessionId = uuid(websiteId, hostname, ip, userAgent)
 select
      sum(t.c) as "pageviews",
      count(distinct t.session_id) as "visitors",
      count(distinct t.visit_id) as "visits",
      sum(case when t.c = 1 then 1 else 0 end) as "bounces",
      sum(${getTimestampDiffQuery('t.min_time', 't.max_time')}) as "totaltime"
    from (
      select
        website_event.session_id,
        website_event.visit_id,
        count(*) as "c",
        min(website_event.created_at) as "min_time",
        max(website_event.created_at) as "max_time"
      from website_event
        ${joinSession}
      where website_event.website_id = {{websiteId::uuid}}
        and website_event.created_at between {{startDate}} and {{endDate}}
        and event_type = {{eventType}}
        ${filterQuery}
      group by 1, 2
    ) as t