Configuration
Updated
On this page
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 |
Turn off all bot and spam filtering for every site (crawlers, headless browsers, data center traffic, referrer spam, floods). Sites can also turn it off one by one |
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 |
TIDEMARK_FLOOD_PER_MINUTE |
120 |
Hits per minute from one visitor beyond which the rest are left out as a flood. 0 turns the check off |
TIDEMARK_WEBHOOKS_ALLOW_PRIVATE |
false |
Let alert webhooks reach private network addresses and plain http, for a service on your own network. By default only public https addresses are allowed |
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.
Was this helpful?
Ready to try Tidemark?
Free plan, no credit card. No cookies, no footprints.