Cookie Policy
What cookies we use, why, and for how long.
Modular House uses a small number of first-party cookies, plus the cookies our admin panel needs to keep signed-in administrators authenticated and remember their preferences. We do not use cookies for third-party advertising or behavioural profiling. The table below is the complete, authoritative list of every cookie we set — it is generated directly from our codebase, so it always reflects exactly what the site does.
When you first visit, the cookie banner offers two choices: Accept All, which allows both the strictly necessary cookies and the optional performance cookies we use to measure how visitors use our site, or Necessary Cookies Only, which keeps just the strictly necessary cookies and sets no performance cookies at all. Closing the banner without choosing keeps only necessary cookies for the rest of that browsing session and asks again next time.
You can change your mind at any time with the control below. Doing so clears your stored choice and re-shows the banner immediately. Note that this stops future tracking only — a performance cookie or analytics script already loaded earlier in this session cannot be retroactively removed.
| Cookie | Purpose | Category | Duration | Set by |
|---|---|---|---|---|
mh_vid | Identifies a returning visitor across page views, so anonymous traffic measurement can distinguish new from returning visitors. Contains only a random identifier — no personal data. | performance | 365 days | Modular House |
mh_sid | Groups a visitor's page views into a single browsing session for anonymous traffic measurement. Contains only a random identifier — no personal data. | performance | 30 minutes (rolling — renewed on each measured page view) | Modular House |
mh_cookie_ack | Records the visitor's cookie choice ("Accept All" or "Necessary Cookies Only"), so the banner does not reappear and performance cookies are set only when accepted. | strictly-necessary | 365 days | Modular House |
mh_cookie_dismissed | Temporarily hides the cookie notice for the remainder of the current browsing session after it is closed without a choice; does not record a lasting preference. | strictly-necessary | Session (until the browser is closed) | Modular House |
refreshToken | Keeps a signed-in administrator authenticated between visits by carrying a session refresh token. httpOnly — never readable by page scripts. | strictly-necessary | 7 days | Modular House |
admin_theme_mode | Remembers a signed-in administrator's light/dark theme preference for the admin panel. | functional | 30 days | Modular House |
admin_sidebar_collapsed | Remembers whether a signed-in administrator has collapsed or expanded the admin panel's sidebar. | functional | 30 days | Modular House |
sidebar_state | Legacy mirror of the admin panel sidebar's collapsed/expanded state, inherited from the underlying sidebar component library. | functional | 7 days | Modular House |
_ga | Google Analytics — distinguishes unique visitors for site-usage measurement. | performance | 2 years (renewed per visit; browsers may cap the effective lifetime at ~400 days) | Google Analytics |
_ga_<container-id> | Google Analytics — persists session state for this site's GA4 property. | performance | 2 years (renewed per visit; browsers may cap the effective lifetime at ~400 days) | Google Analytics |