Import Data from Umami or Plausible

Migrating from another analytics tool? Antics can import your historical data so you don’t lose your stats.

From Umami

Step 1: Export from Umami

Run this SQL against your Umami PostgreSQL database to export hourly breakdown data:

COPY (
  SELECT
    to_char(date_trunc('hour', e.created_at), 'YYYY-MM-DD"T"HH24') as hour,
    e.url_path as pathname,
    e.referrer_domain,
    s.country,
    s.browser,
    s.os,
    s.device,
    COUNT(DISTINCT e.session_id) as visitors,
    COUNT(*) as pageviews
  FROM website_event e
  JOIN session s ON s.session_id = e.session_id
  WHERE e.website_id = 'YOUR-UMAMI-WEBSITE-ID'::uuid
    AND e.event_type = 1
  GROUP BY 1, 2, 3, 4, 5, 6, 7
  ORDER BY hour
) TO STDOUT WITH CSV HEADER

Save the output as umami-export.csv.

You can find your Umami website IDs with:

SELECT website_id, name, domain FROM website ORDER BY name;

Step 2: Import into Antics

# Stop the antics server first (SQLite write locking)
systemctl --user stop antics  # or: docker stop antics

# Run the import
docker run --rm \
  -v antics-data:/data \
  -e "DATABASE_URL=sqlite:/data/antics.db?mode=rwc" \
  ghcr.io/turtletech-ehf/antics:latest \
  import-umami-csv /data/umami-export.csv YOUR-ANTICS-SITE-ID

# Restart
systemctl --user start antics  # or: docker start antics

The import populates:

  • stats_hourly – per-page, per-source, per-country hourly counters

  • stats_daily – rolled up daily breakdowns

  • site_stats_daily – daily visitor/pageview summaries

  • Estimated bounce rate from single-page visitors

Important

Always stop the antics server before importing. SQLite doesn’t handle concurrent writers well – the import data may not persist if the server is writing at the same time.

From Plausible

Export your data from Plausible as CSV (Settings > Export), then use the generic CSV import:

# CSV format: date,visitors,pageviews
docker run --rm \
  -v antics-data:/data \
  -e "DATABASE_URL=sqlite:/data/antics.db?mode=rwc" \
  ghcr.io/turtletech-ehf/antics:latest \
  import-csv /data/plausible-export.csv YOUR-ANTICS-SITE-ID

This imports daily summaries only (no page/source breakdown). For full breakdown data, you’ll need to use the Plausible API to export per-page stats.

Generic CSV Import

Any CSV with date,visitors,pageviews columns:

date,visitors,pageviews
2026-03-01,150,200
2026-03-02,180,250
docker run --rm \
  -v antics-data:/data \
  -e "DATABASE_URL=sqlite:/data/antics.db?mode=rwc" \
  ghcr.io/turtletech-ehf/antics:latest \
  import-csv /data/stats.csv YOUR-ANTICS-SITE-ID