Skip to content

Settings ​

The Settings screen (/evolve/settings) edits two places. Public business configuration (site name, branding, company identity, mail addresses, tracking IDs, consent, site verifications) is saved to the database settings store since 2.18. Secrets, infrastructure and the environment posture stay in the .env of the environment the panel runs on. Both parts are editors for a fixed list of fields, not free-form editors: anything the form submits that is not on the list is dropped.

The Settings screen on the General tab: project name, base URL, Analytics property, login image

Tabs ​

TabCardsSettings store fields.env keys
GeneralControl panel, LLM, Frontend, Performance, Localisationsite name, Analytics property ID, panel colour, login imageAPP_URL, OPENAI_API_KEY, APP_PAGE_CACHE, EVOLVE_REGION_REMOVE_DEFAULT_PREFIX
Company 2.18Identity, Addresslegal name, brand name, founding date, site logo, street, postal code, locality, region, country, phone, email, profiles (one URL per line)none
MailSender, Recipients, Mailersender name, sender address, reply-to, notification address, alert addressMAIL_MAILER, MAIL_HOST, MAIL_PORT, MAIL_SCHEME, MAIL_USERNAME, MAIL_PASSWORD
VideoVimeononeVIMEO_CLIENT_ID, VIMEO_CLIENT_SECRET, VIMEO_ACCESS_TOKEN, VIMEO_ALBUM_ID
TrackingConsent, Google, Facebook / Meta, Server-side tracking, Pinterest, LinkedIn, Hotjarconsent policy, cookie banner, consent via CMP, GTM container, GA4 measurement ID, conversion data, Meta pixel, server-side events, Pinterest tag, LinkedIn partner and lead conversion IDs, Hotjar site IDANALYTICS_API_SECRET, GOOGLE_MAPS_API_KEY, GOOGLE_GEOCODING_API_KEY, GOOGLE_RECAPTCHA_SITEKEY, GOOGLE_RECAPTCHA_SECRET, GOOGLE_RECAPTCHA_SCORE, FACEBOOK_CONVERSIONS_API_KEY, FACEBOOK_TEST_EVENT_CODE, TRACKING_DEBUG, TRACKING_LEGACY_VARIABLES
SEO 2.18Site verificationGoogle, Bing and Pinterest verification codesnone
Packagesone card per enabled modulenonethe keys a module registers, for example BLOG_OVERVIEW_PAGE, BLOG_AUTHOR_TYPE, FAQ_OVERVIEW_PAGE, SCOUT24_MEMBER_ID, SHOPIFY_API_VERSION
DevelopersEnvironment, Mail safety, Tracking emit, Protect, Modules, DevelopersnoneEVOLVE_ENV_TYPE, APP_ENV, APP_DEBUG, EVOLVE_ENV_BANNER, EVOLVE_MAIL_SAFETY, EVOLVE_MAIL_REDIRECT, TRACKING_EMIT, EVOLVE_PROTECT_USER, EVOLVE_PROTECT_PASSWORD, every EVOLVE_MODULE_*
HealthChecks, Oh Dear, Notifications, Retentionnone (the effective alert address is shown, it is edited on the Mail tab)HEALTH_CHECK_* toggles, HEALTH_CHECK_QUEUE (Auto, On, Off), HEALTH_CHECK_EMAIL_RECIPIENT, HEALTH_KEEP_HISTORY_DAYS, HEALTH_NOTIFICATIONS_ENABLED, OH_DEAR_HEALTH_CHECK_SECRET

The Developers tab exists for the developer role only. An admin who submits one of its keys has them dropped, whatever the form sent. See Roles.

Store fields and inheritance ​

A store field shows the stored value. Its placeholder shows what an empty field inherits from the .env or the project config ("inherits GTM-ABC1234", or "not set"). Emptying a field and saving stores null, and the .env value applies again. Switches in the store (cookie banner, consent via CMP, server-side events) are selects with three options instead of toggles: the first option inherits and names the inherited state ("Inherit: On"), the other two pin On or Off. Consent policy and conversion data have the same inherit option.

The inherit options exist for sites whose .env still carries these values. A new installation sets them in the panel and leaves them out of the .env.

The login image picker shows the stored image only. When the store is empty and the .env sets APP_LOGIN_IMAGE_ID, a line below the picker names the inherited media ID.

Store values are validated before anything is written: the GTM container must look like GTM-…, the GA4 ID like G-…, the panel colour like #RRGGBB, addresses must be valid email addresses, profile lines valid URLs, and the founding date YYYY, YYYY-MM or YYYY-MM-DD. An invalid value saves nothing and shows the error.

Saving store values needs no rebuild of the configuration cache, because stored values are applied on top of the cached config at runtime. Changes are recorded in the activity log in the same settings-changed entry as .env changes, keyed <group>.<property>.

Import hint ​

While a group stores nothing but the .env or the project config holds a value other than the package default, the General, Tracking and SEO tabs show an info box. It means the site still runs on its .env values for that group. Run the import once to take them over, see Importing existing values.

Opt-in consent needs somebody who can grant it. Saving the policy opt-in with the cookie banner off and the consent via CMP option off is refused with an error at the top of the form, and nothing is written. Inherited values count: an "inherit" policy that resolves to opt-in in the .env is checked the same way. See Tracking and consent.

Secrets ​

MAIL_PASSWORD, EVOLVE_PROTECT_PASSWORD, OPENAI_API_KEY, VIMEO_CLIENT_SECRET, VIMEO_ACCESS_TOKEN, OH_DEAR_HEALTH_CHECK_SECRET, ANALYTICS_API_SECRET, FACEBOOK_CONVERSIONS_API_KEY and GOOGLE_RECAPTCHA_SECRET are masked in the form. The field shows that a value exists; leaving it untouched keeps it, typing replaces it. Secrets never go into the settings store, because a database table ends up in dumps and database copies.

What stays in the .env ​

KindExamplesWhy
Secretsthe keys abovenot in a table that travels with database copies
InfrastructureAPP_URL, MAIL_MAILER, MAIL_HOST, MAIL_PORT, MAIL_SCHEME, MAIL_USERNAMEdiffer per deployment, not per business decision
Posture and switchesEVOLVE_ENV_TYPE, module switches, HEALTH_*developer and environment concerns
DebuggingTRACKING_DEBUG, TRACKING_LEGACY_VARIABLES, FACEBOOK_TEST_EVENT_CODEmust stay per environment; a test event code in a shared database would follow a copy to live
PerformanceAPP_PAGE_CACHEper environment
API credentialsGOOGLE_MAPS_API_KEY, GOOGLE_GEOCODING_API_KEY, GOOGLE_RECAPTCHA_SITEKEY, GOOGLE_RECAPTCHA_SCORE, VIMEO_CLIENT_ID, VIMEO_ALBUM_IDcredentials or tied to them

Saving .env keys rebuilds the configuration cache in a separate process, so a deployed site stays cached (since 2.12).

What the screen does not cover ​

  • Keys that are not on the list: database, cache, queue, session, filesystem and so on. Those are server configuration, edited with evolve:env:* or over SSH. See Environment Variables.
  • The email logo (branding.email_logo_media_id) has no field; set it in code, see Settings store.
  • Role lists (evolve.roles) and module access: project code in config/evolve.php.

Verifying ​

Save a store value and reload: the field keeps the value, the placeholder still shows the .env value underneath, and the .env file is unchanged. GET /api/health-check reports settings as the source of that value under tracking.sources or mail.sources.

Save a .env key and reload: the field shows the new value, and on a deployed site php artisan about --only=cache still reports the config as cached. php artisan evolve:env:show live prints the line with secrets masked. If the panel reports that the cache could not be rebuilt, the site runs uncached until the next deploy; the reason is in the log.