Configuration
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 (daily, and every few hours while an administrator is using the app) and show an update dot. Only the latest version number is requested. false turns it off |
TIDEMARK_TERMS_URL, TIDEMARK_PRIVACY_URL, TIDEMARK_REFUNDS_URL |
none | Links to your legal pages. When set, the sign-in and sign-up screens show them and sign-up says that creating an account means agreeing to the terms |
TIDEMARK_UPDATER |
true |
false turns off updating from the dashboard (the Updates tab and its endpoints). For deployments that ship their own builds |
TIDEMARK_UPDATE_REPO |
tidemark-analytics/tidemark |
GitHub repository checked for new releases from Account settings → Updates. Set it to follow a fork |
TIDEMARK_MAX_SITES |
0 |
Sites per user. 0 is unlimited |
TIDEMARK_VERIFY_EMAIL |
false |
New accounts must confirm their email address before adding sites. Needs email |
Email is configured with the standard MAIL_* settings; see Email.
Standard Laravel settings
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.
Geolocation
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.
Behind a CDN
The real client IP and country are read from the CDN's headers automatically. See Troubleshooting.