Skip to content
PortBay

Cookie Notice

Last updated: September 5, 2026

This site uses analytics, and one of them records your session. Google Tag Manager and Microsoft Clarity are available on every page of portbay.app. Clarity does not load until you say so. Tag Manager does load, but in Google’s consent mode: until you agree it is forbidden from storing anything on your device, so Analytics sets no cookie and keeps no identifier for you. Clarity performs session replay: it records your visit — the pages you open, where you move your pointer, what you scroll past, what you click — and replays it back to us as a video-like reconstruction. The checkout page additionally loads Paddle. This notice describes all three, and “Your choice” below describes the banner that gates the first two.

This notice covers this website (portbay.app, and the preview host try.portbay.app, which reports into the same Clarity project). docs.portbay.app is a separate site and is not covered here. The PortBay desktop app is a different matter entirely: it is local-first, its telemetry is off by default and opt-in, and it is described in the Privacy Policy.

What actually loads

ScriptWhere it loadsWhat it does
Google Tag Manager (container GTM-5PHF9XPR)Every page, but only once you accept the Analytics categoryA tag container. It loads the measurement tags configured in Google’s dashboard — currently Google Analytics 4 — and receives the five custom events listed below.
Microsoft Clarity (project x2pgz93col)Every page, but only once you accept the Session replay and behavioural categorySession replay and heatmaps. Records pointer movement, scrolling, clicks and taps, and reconstructs the visit for playback.
Paddle.jsThe checkout page onlyOpens the payment overlay and processes the transaction. Loaded only when you land on checkout with a live transaction.

Nothing else third-party loads. Fonts are self-hosted from our own origin, there are no social embeds, no advertising pixels, no chat widget, and no A/B testing tool. The site’s Content Security Policy allows scripts only from Google Tag Manager, Microsoft Clarity and Paddle, so nothing else can be added without a code change — with one exception noted under Google Tag Manager below.

The cookies

These are the cookies Google, Microsoft and Paddle document their scripts as setting. Because Google Tag Manager loads tags configured in a dashboard rather than in this site’s source code, the exact set can change without a change to the site; the definitive list for your own visit is whatever your browser is holding, visible in its developer tools under Storage.

CookieSet byPurpose
_ga, _ga_<id>Google Analytics 4, via Tag ManagerDistinguishes one browser from another and holds session state, so repeat visits are counted as the same visitor rather than new ones.
_clck, _clskMicrosoft ClarityPersists a Clarity user identifier and a session identifier, so the pages you view in one visit are stitched into a single replay.
MUID, CLIDMicrosoft (clarity.ms, c.bing.com)Microsoft-wide identifiers that Clarity synchronises with. This is a Microsoft advertising-infrastructure domain; we do not run advertising, but Clarity contacts it regardless.
Paddle’s own cookiesPaddle (checkout page only)Strictly functional: opening and completing the payment session, and fraud prevention. Set only when you start a purchase.

Google Tag Manager and Google Analytics 4

Tag Manager is a container, not a measurement tool in itself. What it loads is decided in Google’s dashboard rather than in this site’s code — which means the honest statement is that it currently serves Google Analytics 4, and that adding a further vendor tag would also require adding that vendor’s origins to our Content Security Policy, so it cannot happen silently.

Google Analytics 4 receives the page URL and title, the referring URL, your browser, operating system, device type and language, and a coarse location Google derives from your IP address. It also receives five custom events, which are the complete set this site fires — they are defined in one typed file in our source and nowhere else:

  • cta_download_click— a click on any download call to action (the DMG link, “All releases”, or a link to /download).
  • brew_copy — clicking the copy button beside a brew install command.
  • checkout_open — the Paddle overlay opening on the checkout page.
  • cta_secondary_click— a secondary link such as the nav “Docs” link or a “Compare PortBay” link.
  • outbound_github — a click on a link to github.com.

Each event carries at most three pieces of context: which section of the page it fired from, the page path, and what was clicked (for example dmg, releases, github). No event carries personal data — no email addresses, names, IP addresses or licence keys — and there is no code path by which it could, because this website has no forms and no input fields anywhere on it.

Google acts as our processor for this data and is located in the United States. See Google’s privacy policy.

Microsoft Clarity (session replay)

Clarity is the most invasive thing on this site and we would rather state it plainly than bury it. It records your session: your pointer movements, scroll depth, clicks and taps, rage-clicks and dead-clicks, the pages you move between and how long you spend, and your browser, device, operating system, referrer and a coarse location derived from your IP address. Those interactions are reassembled into a replay of your visit that we can watch, and aggregated into heatmaps showing where visitors click and how far they scroll.

Two things bound what a replay of this site can contain. First, this website has no forms, no input fields and no login — there is nothing here for you to type into, so a replay is a recording of reading, scrolling and clicking. Second, payment happens inside Paddle’s own iframe on the checkout page, which is a separate origin that Clarity cannot see into; your card details are never in a recording because they are never in this site’s page.

Clarity’s masking and recording behaviour is configured in Microsoft’s dashboard rather than in this site’s source code, so we describe what the product does rather than pointing at a setting in our repository. We set no custom Clarity tags. Microsoft is an independent recipient of this data, is located in the United States, and its handling is governed by the Microsoft privacy statement.

Paddle (checkout only)

The checkout page loads Paddle, our payment provider and Merchant of Record. Paddle sets strictly functional cookies needed to open and complete the payment session — fraud prevention and session state — and collects your name, billing address and payment details inside its own overlay. Paddle is an independent controller for that data; your card details never reach our systems. This is governed by Paddle’s privacy policy. No Paddle scripts load anywhere else on the site.

Retention

We have not set custom retention windows for either analytics tool. Google Analytics and Microsoft Clarity each apply their own retention policy, configured in their dashboards and changeable by their vendors, and we are not going to quote a number here that we cannot verify from our own code. If you need the exact current window for a data-protection request, email [email protected]and we will confirm it against the live dashboards rather than guess. Paddle’s retention of transaction records is set by Paddle and by the tax and accounting law it operates under.

Your choice

Nothing non-essential is stored until you choose. On your first visit a banner appears at the bottom of the page with three options — Accept all, Essential only and Configure— and until you pick one, Clarity is not on the page at all and Tag Manager is on it under a standing instruction to store nothing. Analytics writes its first cookie when you agree, and not before. There is no pre-ticked box, and no “by continuing to browse you agree”: scrolling, clicking and reading are not consent, and we do not treat them as consent.

There are three categories. They are separate because they are genuinely different asks:

  • Strictly necessary.Always on, and it cannot be switched off. It covers exactly two things: remembering the choice you make in the banner, and running Paddle’s payment overlay on the checkout page when you are actually buying something. Nothing in this category tracks you.
  • Analytics. Google Tag Manager and Google Analytics 4 — page views and the five button clicks listed above, counted in aggregate.
  • Session replay and behavioural. Microsoft Clarity — the recording of your individual visit, the heatmaps, and the identifier sync with c.bing.com. This is deliberately not bundled into Analytics. Agreeing to be counted is not the same as agreeing to be recorded, so accepting Analytics does not switch this on; it has its own checkbox and you have to tick it yourself.

Changing or withdrawing your choice. Withdrawing is as easy as granting, and takes the same number of clicks. Use the Cookie settings link in the footer of every page, or . Turning a category off reloads the page, so a script that had already started is genuinely gone rather than merely told to stop, and the first-party cookies it set on this domain are cleared at the same time. Cookies Microsoft or Google hold on their own domains are outside our reach — the vendor opt-outs below are the route for those.

Global Privacy Control is honoured. If your browser broadcasts the GPC signal (Brave and DuckDuckGo do by default; Firefox and several extensions can), we read it as an opt-out: Analytics and Session replay stay off, and you are not shown a banner at all, because you have already answered the question. The cookie settings dialog says so when it detects the signal. You can still switch a category on yourself if you want to — a deliberate choice in our dialog, made while the signal is running, overrides the browser-wide default. It works the other way too: if you turn GPC on after accepting something here, the signal is the more recent decision and wins, so the optional categories go back off without you having to do anything else.

How the choice is stored.One entry in your browser’s local storage, under the key portbay.consent.v1, holding a true/false per category, the date you chose, and a version number. It is not a cookie, it is never sent to a server, and it never leaves your browser. If we ever change what the categories mean, the version number changes with them and you are asked again rather than having an old answer applied to a new question. The answer also expires after six months, so you are asked again rather than being held to a choice you made half a year ago. If your browser blocks site storage, the banner still works — your choice applies for that visit and we ask again next time, which is the safe way round.

We are spelling all of this out because an earlier version of this page claimed the site set no cookies and ran no trackers, which had stopped being true. If you would rather we did not have your data at all, email [email protected] and we will delete what is attributable to you.

How to opt out

  • Use the cookie settings. The Cookie settings link in the footer reopens the dialog on any page, at any time. Set both optional categories to off — or click Essential only — and the scripts stop loading. This is the fastest and most complete route, and it is the one this site is built around.
  • Block the scripts.Any content blocker (uBlock Origin, Brave’s shields, Safari’s tracking prevention) stops Tag Manager and Clarity loading. Our code is written so that a blocked script is a no-op — nothing on this site breaks, and no feature is withheld from you for blocking it.
  • Opt out of Clarity directly. Microsoft honours a global opt-out at clarity.microsoft.com/terms, and the Microsoft privacy dashboard lets you see and delete data Microsoft holds.
  • Opt out of Google Analytics. Google’s browser opt-out add-on stops GA4 measurement across every site that uses it.
  • Clear or block cookies in your browser settings. All of the cookies above are third-party or analytics cookies; none of them are needed for this site to work, and clearing them costs you nothing.

If this changes

Any new script that stores or reads information on your device will be added to the tables above, will be placed in one of the categories above (or given its own), and will not load until that category is accepted. This page’s date changes with it, and if the meaning of a category changes, the stored consent version changes too and you are asked again. We will not describe this site as tracker-free again while it runs trackers.

Contact

Questions: [email protected]. See also the Privacy Policy. Operated by Tribal House LLC, registered in Ghana.