Funnel analytics

Self-hosted Plausible dashboard for the Rasid acquisition flow. PDPL-friendly: no third-party cookies, no cross-site identifiers, no PII in events.

Open the Plausible dashboard →

Login is gated by Plausible's own admin auth (operator account, TOTP-required per the runbook). If the dashboard returns 502, Plausible isn't running — the plausible docker-compose profile may not be active. See plausible-deploy.md for bring-up.

Event taxonomy

The events below are emitted from apps/web/src/scripts/funnel-events.ts via the global window.plausible(name, options) function. Renaming ANY of these breaks dashboard segments; add new events freely.

Event name Source Props
CTA: Demo Click Any anchor with href$="/demo" or data-funnel-cta from (hero · closing · about · header · unknown)
CTA: How it works Homepage outlined secondary CTA
Demo: Form Submit /demo + /ar/demo form submit (any attempt) country (KSA · GCC · EU · OTHER · unknown)
Demo: Form Send OK Form-handler emits rasid:demo-sent on 202
Demo: Form Send Fail Form-handler emits rasid:demo-failed on non-2xx status (HTTP code)
Locale Switch Header lang-switch anchor click from, to (en · ar)

Privacy posture

Operator bring-up

Plausible + ClickHouse are gated behind the plausible docker-compose profile (gated off by default). Cold-start procedure lives in docs/runbooks/plausible-deploy.md:

  1. Provision PLAUSIBLE_SECRET_KEY_BASE + PLAUSIBLE_TOTP_VAULT_KEY + PLAUSIBLE_DB_PASSWORD + PLAUSIBLE_CLICKHOUSE_PASSWORD in /etc/rasid/.env.
  2. Create the Postgres plausible database + user.
  3. docker compose --profile plausible up -d on the VPS.
  4. First Plausible boot: docker exec rasid-plausible /entrypoint.sh db init.
  5. Create admin: docker exec rasid-plausible /entrypoint.sh user_create [email protected] <password>.
  6. Visit the dashboard → login → register the rasid.cc site.
  7. Set RASID_PLAUSIBLE_ENABLED=true in CI secrets so the next Astro build embeds the tracking script.