Data resilienceAvailable now

    Seven days is not a customer journey.

    Safari caps every cookie written by JavaScript at seven days. Return visitors come back as new users, attribution windows collapse, and your reports quietly understate returning traffic. Cookie Keeper re-issues those cookies over HTTP from your own tagging domain, where the cap does not apply.

    Up to 400-day lifetime
    Up to 20 cookies
    Re-issued on every response
    All modules
    Identifier lifetime
    JavaScript cookie7 days
    With Cookie Keeper400 days

    The cookie is re-issued over HTTP on every response, so an active visitor's expiry date keeps moving forward.

    _ga_fbp_fbc_gcl_au

    Cookie lifetime, with and without

    Browser storage policy quietly rewrites your data

    Intelligent Tracking Prevention does not block your analytics: it expires it. That is harder to notice, because everything keeps working and the numbers merely become wrong.

    01

    JavaScript cookies expire in seven days

    Safari's cap applies to any cookie written with document.cookie, which is how GA4, Meta and Google Ads all set their client identifiers.

    02

    Returning visitors count as new

    An expired identifier means a new one is issued. Your returning-visitor share falls, your user counts inflate, and neither number describes reality.

    03

    Attribution windows collapse

    A 30-day consideration cycle cannot be attributed with a 7-day identifier. Longer-cycle purchases end up credited to direct traffic.

    How it works

    Cookies set by an HTTP response from a first-party domain are not capped the way JavaScript-set cookies are. Your tagging domain is exactly such a domain, so the gateway re-issues the cookies for you.

    01

    Read on the way in

    When a request carries one of the configured cookies, the gateway picks up its current value. Nothing is invented: if the cookie is not there, nothing is written.

    02

    Re-issue on the way out

    The response carries a Set-Cookie header with the same name and value and a long Max-Age, Secure and SameSite=Lax. The browser records it as a first-party HTTP cookie.

    03

    Expiry moves forward continuously

    Because it happens on every response, the expiry date is pushed forward on each visit. An active visitor's identifier effectively never lapses.

    What you get

    Sensible defaults

    _ga, _fbp, _fbc and _gcl_au are configured out of the box, the identifiers behind Google Analytics, Meta and Google Ads attribution.

    Up to twenty cookies

    Add any first-party cookie you rely on, up to twenty per container. Names are validated on save.

    Automatic domain scoping

    By default the parent domain of your tagging host is used, so cookies stay shared with your main site. Override it when your setup needs something else.

    Secure attributes by default

    Re-issued cookies carry Secure and SameSite=Lax. HttpOnly is available but off by default, so on-page scripts keep working.

    Specification

    Default cookies
    _ga, _fbp, _fbc, _gcl_au
    Maximum cookies
    20 per container
    Maximum lifetime
    400 days (the browser ceiling)
    Attributes
    Secure, SameSite=Lax, HttpOnly optional
    Cost
    Included with your container
    Request headers
    Set-Cookie

    When to use it

    You sell on a long consideration cycle

    Anything researched over weeks rather than minutes loses attribution to the seven-day cap. Extending the identifier is the single highest-impact fix.

    Safari is a large share of your traffic

    In markets with high iPhone penetration, a substantial slice of your audience is affected by default and without any action on their part.

    Your returning-visitor rate looks implausible

    If loyal customers keep showing up as new users, expiring identifiers are the usual cause, and this is the usual fix.

    Questions about Cookie Keeper

    Is this compliant?

    It extends the lifetime of cookies you already set; it does not create new ones or set them without consent. If a visitor has not consented and the cookie was never written, there is nothing to re-issue. Declare the extended lifetime in your cookie policy.

    Why 400 days and not longer?

    Chrome refuses any cookie lifetime beyond 400 days, so a longer value would simply be ignored. 400 is the practical ceiling, and it is the default.

    Does it work in every browser?

    The mechanism is standard HTTP cookie handling, so yes. It matters most in Safari, where the JavaScript cap is strictest, but Firefox and Chrome honour the extended lifetime too.

    Can I add cookies that are not in the defaults?

    Yes, up to twenty per container. Names may contain letters, digits and underscores, which covers the identifiers used by all mainstream vendors.

    Other modules

    Modules stack. Enable as many as you need. They compose into one configuration in front of your container.

    Ready to switch it on?

    Every module is included with your container at no extra cost. Create a container, open the modules panel, and toggle.

    See pricing