Tidemark reads settings from the .env file in the project root. The installer writes the essentials. Edit the file with FTP or your file manager; changes apply on the next request.
Variable
Default
Notes
TIDEMARK_MODE
self-hosted
cloud opens registration and enables plan limits
TIDEMARK_REGISTRATION
false (true in cloud)
Allow sign-ups
TIDEMARK_INGEST
sync
queue buffers writes; drained by schedule:run or a worker
TIDEMARK_INGEST_QUEUE
ingest
Queue name used for buffered events
TIDEMARK_ANALYTICS_DB
(app database)
Separate connection for visits, events and event_props
TIDEMARK_IGNORE_IP
none
Comma-separated IPs, wildcards or CIDR ranges to ignore for every site
TIDEMARK_HOSTNAMES
none
Comma-separated hostname allow-list for every site
TIDEMARK_RETENTION_DAYS
0
Delete raw data older than N days. 0 keeps everything
TIDEMARK_GEOIP_DATABASE
storage/app/geo/GeoLite2-City.mmdb
Needs composer require geoip2/geoip2
TIDEMARK_DISABLE_BOT_FILTER
false
Count known bots too
TIDEMARK_SALT
empty
Secret mixed into visitor ids, together with the date. If empty, APP_KEY is used
TIDEMARK_UPDATE_CHECK
true
Look for new releases about once a day and show an update dot. Only the latest version number is requested. false turns it off
TIDEMARK_UPDATE_REPO
tidemark-analytics/tidemark
GitHub repository checked for new releases from Account settings → Updates. Set it to follow a fork
Tidemark is a Laravel application, so APP_URL, DB_*, MAIL_*, SESSION_* and LOG_* work as documented by Laravel. Keep APP_ENV=production and APP_DEBUG=false on a live site.
Behind Cloudflare, Vercel or CloudFront, country comes from the CDN’s headers with no setup. For other hosts, install geoip2/geoip2 and place a MaxMind GeoLite2 City database at the configured path. The release zip does not bundle MaxMind data, and its license requires you to download it yourself.