Legal · Code census

Cookie & browser storage inventory

Last updated: September 4, 2026

Our Privacy Policy describes WaterMark's first-party browser storage and says we do not use advertising pixels or cross-site tracking. This inventory makes that statement verifiable against the current web code.

Census finding: some browser storage is optional

WaterMark's two cookies are essential. The code census also found first-party localStorage entries for language, layouts, saved views, collapsed panels, and dismissed guidance. Those convenience preferences are optional: the related screens still work with their defaults if the entries are absent. This corrects the older shorthand that all WaterMark local storage was essential.

WaterMark does not use advertising pixels, cross-site tracking scripts, analytics cookies, or third-party browser-storage keys. Product analytics disclosed in the Privacy Policy is sent server-to-server and does not add a browser cookie.

Complete current inventory

Names in braces are runtime parts of a key: for example, the WaterMark company or construction project number. “Persistent” browser storage remains until WaterMark removes or overwrites it, or you clear site data. “Tab session” storage ends when that browser tab closes.

TypeExact name or patternPlain-language purposeLifespanClassification
Cookiewm_office_refreshKeeps an office user signed in by holding the rotating refresh credential. It is HttpOnly, SameSite=Strict, and limited to /api/auth.Persistent: configured for 7–180 days; 60 days by default. Replaced during rotation and removed at sign-out.Essential
Cookiewm_csrfSupplies the readable half of the same-origin CSRF check for cookie-authenticated office requests. It does not authorize a request by itself.Same configured duration as the refresh cookie; replaced with the session and removed at sign-out.Essential
Local storagewm_office_migrate_attemptsBounds retries while an older browser session is moved from legacy stored credentials to safer cookies.Persistent only during migration; removed after success, a definitive refusal, or the three-attempt limit.Essential
Local storagewm_langRemembers whether public and homeowner pages should open in English or Spanish.Persistent until changed or site data is cleared.Optional
Local storagewm_viewReopens the office dashboard view you last used.Persistent until another view is chosen or site data is cleared.Optional
Local storagewm_view_all_companiesRemembers whether a multi-company office is viewing one company or all managed companies.Persistent until changed or site data is cleared.Optional
Local storagewm_demo_tour_dismissed_{organization_id|public}Remembers that the demo guide was dismissed for that company or public demo.Persistent until site data is cleared.Optional
Local storagewm_demo_banner_compact_{organization_id|public}Remembers whether the demo banner is compact for that company or public demo.Persistent until the banner is expanded or site data is cleared.Optional
Local storagewm_onboard_{organization_id|x}_importedRemembers that a customer import completed so onboarding guidance reflects that step.Persistent until site data is cleared.Optional
Local storagewm_onboard_{organization_id|x}_customer-import-activeHolds the active import batch number so an interrupted customer import can resume after a reload.Until the import completes, definitively fails, or the marker is invalid; otherwise until site data is cleared.Essential
Local storagewm_onboard_{organization_id|x}_dismissedRemembers that the office dismissed its onboarding checklist.Persistent until site data is cleared.Optional
Local storagewm_onboard_{organization_id|x}_convDonePrevents the post-setup plan prompt from being shown repeatedly after a choice.Persistent until site data is cleared.Optional
Local storagewm_rm_viewRemembers Route Manager filters and display configuration.Persistent until changed or site data is cleared.Optional
Local storagewk_layoutRemembers whether the week board uses day columns or technician swim lanes.Persistent until changed or site data is cleared.Optional
Local storagewm_office_panel_collapsed_{organization_id|office}_unpaidRemembers whether the Unpaid Invoices office panel is collapsed.Persistent until changed or site data is cleared.Optional
Local storagewm_office_panel_collapsed_{organization_id|office}_chem-techRemembers whether the Chemical Cost by Technician panel is collapsed.Persistent until changed or site data is cleared.Optional
Local storagewm_office_panel_collapsed_{organization_id|office}_chem-poolRemembers whether the Chemical Cost by Pool panel is collapsed.Persistent until changed or site data is cleared.Optional
Local storagewm_office_panel_collapsed_{organization_id|office}_smsRemembers whether the Customer Messages panel is collapsed.Persistent until changed or site data is cleared.Optional
Local storagewm_ops_alerts_collapsed_{organization_id|office}Remembers whether the Operations Alerts panel is collapsed.Persistent until changed or site data is cleared.Optional
Local storagewm_command_center_collapsed_{organization_id|office}Remembers whether the office command-center panel is collapsed.Persistent until changed or site data is cleared.Optional
Local storagewm_command_center_high_water_{organization_id|office}Remembers the highest dollar exposure shown in the command center so its visual scale stays comparable.Persistent until overwritten or site data is cleared.Optional
Session storagewm_call_seen_{organization_id|x}Records the latest call ID seen by the live-call poller so old calls are not presented again in the same tab.Tab session.Essential
Session storagewm.billing.intent.draw.{project_id}Keeps one idempotency reference for an unresolved construction draw so a retry cannot create a duplicate invoice.Until a definitive outcome, or when the tab closes.Essential
Session storagewm.billing.intent.retainage.{project_id}Keeps one idempotency reference for an unresolved retainage release so a retry cannot bill twice.Until a definitive outcome, or when the tab closes.Essential
Session storagewm_pay_methodCarries the selected card or bank-payment method through the payment-provider redirect.One redirect: removed when the portal returns, or when the tab closes.Essential

Legacy cleanup entries

The current web code does not create these entries. It recognizes and removes them so browsers returning from an older version are migrated or cleaned up safely.

TypeExact namePlain-language purposeLifespanClassification
Legacy local storagewm_office_tokenOld office access credential, now read only to exchange it for the cookie session and then erase it.Not created now; an old copy persists only until migration or browser-data clearing.Essential, legacy
Legacy local storagewm_office_refresh_tokenOld office refresh credential, now consumed once to establish the HttpOnly cookie session and then erased.Not created now; an old copy persists only until migration or browser-data clearing.Essential, legacy
Legacy local storagewm:office:appearance:v1Retired office appearance preference. The dashboard only removes it.Not created now; removed when the dashboard loads.Optional, legacy

This inventory covers the production web surface. Mobile operating-system storage and server database records are outside browser cookie and Web Storage APIs and are described separately in the Privacy Policy.