Privacy
What we collect
- If you buy: your email address, your name and billing country if Stripe passes them to us, a Stripe customer and payment reference, your order number, which version you downloaded and when, and — for a consumer purchase — the confirmations you gave at checkout and the time you gave them.
- If you answer the questionnaire: the answers you give and anything you choose to write in the free-text box.
- If you tell us your stack: the email address and the stack you type into the form on our home page, stored with the source, campaign and keyword from
udria_attrif this browser has it. - Everyone, unless you opt out: which pages you viewed and which buttons you clicked, recorded against random identifiers kept in cookies, and which site sent you. If you accept advertising cookies, also the campaign, advertisement or search term that brought you here. The sections on cookies and measurement below say exactly what is stored.
What we never collect
Card numbers, expiry dates and security codes never reach our servers. Stripe collects them directly and stores them; we hold only an opaque reference.
We do not keep your IP address with anything we record. Our servers see it with every request and use it to limit abuse: it is held as the key of a request counter that runs for an hour at most, and a daily clean-up deletes the counter once it has been out of date for a day. What we store with events, orders and downloads is a shortened hash of it.
Why we collect it
- To take your order, deliver the package, and tell you when a covered update lands.
- To tell you if we come to support the stack you told us about. We use that address for nothing else.
- To meet obligations that come with selling to consumers — recording what you agreed at checkout, and handling cancellations and refunds.
- To measure which advertising produces customers, so we know what to spend and on what.
- To compare two versions of the site’s design and learn which works better.
Who we share it with
- Stripe — taking payment, and refunding it. If you have accepted advertising cookies, each order also gives Stripe this browser’s visitor and session identifiers, and the record of how you first arrived and of the most recent advertisement click, so that the sale can be credited to the advertising that led to it. Without that acceptance, or if you have opted out, we send Stripe none of these. We never send Stripe which version of the site you were shown.
- Resend — sending your order confirmation, your download link and update notices.
- Supabase and Vercel — database and hosting.
- Google — our public pages load Google Tag Manager for every visitor. It runs the tags we use to measure our advertising. What those tags receive is in the next section.
We do not sell personal data and we do not share it for anyone else’s marketing.
Advertising measurement
We advertise, and we need to know which advertisements produce sales rather than clicks. Our public pages load Google Tag Manager for every visitor, wherever they are. It loads Google’s advertising and analytics tags. Until you press Accept, we tell those tags not to store advertising or analytics cookies and not to use your data for advertising or personalised advertising (Google Consent Mode). If you accept, we tell them they may, and they may then set Google’s own cookies. If you decline, those signals stay denied. To change your answer, clear this site’s cookies and the banner asks again.
Each event we measure is also handed to Tag Manager in the page. The visitor and session identifiers and the design version described below go with that event only after you accept. When an order completes and you have accepted, the page hands Tag Manager the order number, the amount, the currency and a one-way hash of your email address. We hash the email address before it is sent, and we do not send the plain-text address through this process. Google may compare that hash with information it already holds for advertising measurement, to tell whether the person who bought is the person who clicked an advertisement, a feature it calls enhanced conversions. Without your acceptance the identifiers, the order and the hash are not handed over.
If you accept advertising cookies, we also record which advertisement click brought you here, both the first one and the most recent, so that a sale can be attributed to the campaign that produced it. Without that acceptance we record only which site sent you (its address, not the page), the source and medium named in the link you followed, and the page you landed on.
Cookies
Our own cookies are first-party: they are set on this site, other websites cannot read them, and each name starts with udria_. Scripts on our pages can read all of them except the staff sign-in cookie below, and those scripts include the Google tags that Tag Manager loads. The lifetimes given are the ones we set; a browser may keep a cookie for less. These are the ones a visitor can be given.
udria_vid— a random identifier for this browser, so that visits on different days count as one visitor. Our page script sets it the first time we measure something here. It lasts a year and is not renewed; some browsers, Safari among them, cut a cookie set by a page script to seven days.udria_sid— a random identifier for the current visit. Our page script sets it and renews it each time we measure something, so it runs out after 30 minutes without activity.udria_attr— how you first arrived: the campaign details in the link you followed (itsutm_parameters and matched keyword, and Google Ads’ click identifiers and its campaign, ad group, ad, match type, device and network parameters), the address of the page you landed on including its query string, the address of the page that linked to us, and which version of our landing copy you saw. Only if you accept advertising cookies: our page script sets it when you accept, or on your first visit after, and does not change it afterwards. Declining deletes it. It lasts a year.udria_attr_last— the most recent advertisement click: Google Ads’ click identifier (gclid,wbraidorgbraid) from the latest link to us that carried one, and when you followed it, so that a sale can be credited to the click that came before it. Only if you accept advertising cookies: our page script replaces it only when you arrive through such a link. Declining deletes it. It lasts 90 days, the longest Google matches a sale to a click.udria_exp— which of two versions of the site’s design, classic or Paper, this browser was given at random, so that you see the same one on every visit. A script at the top of each page sets it and renews it on every page, so it lasts until 180 days after your last visit. It holds only that choice.udria_consent— your answer to the cookie banner, so that we do not ask again. The banner sets it when you choose. It lasts a year.udria_internal— marks a browser as one of ours, so that our own visits are left out of the figures. It is set only by opening a link ending in?internal=1, which we use ourselves, and lasts a year.udria_optout— records that you have opted out of measurement (below). Our server sets it when you press the button. It lasts a year.
Two more are set only for our own staff, when they sign in to our dashboards. udria_sess (called __Host-udria_sess on the live site) holds the sign-in: a random value our server looks up, which page scripts cannot read. It lasts 14 days for a password sign-in and 30 for an emailed link, and signing out ends it at once. udria_staff lasts as long and says only that a member of staff uses this browser, so that our pages do not load Google Tag Manager in it. Signing in deletes the two cookies these replaced, udria_admin and udria_mkt. Our pages also stay clear of Google Tag Manager in a browser holding udria_qa_view, which a staff preview tool will set; nothing sets it yet. Our internal Mission Control pages have an address of their own, mc.udria.co, and the cookies set there stay there: udria.co itself never receives them. Signing in there sets __Host-udria_sess and udria_staff as above, for that address alone, where no page loads Google Tag Manager. One more, __Host-udria_mc_gate, is set only there, when the site’s owner sets up a passkey or signs in with one: a random value our server looks up, which page scripts cannot read. It lasts twelve hours. Signing out of Mission Control ends it and the sign-in there at once.
We also keep a few values in your browser’s own storage:
udria_purchase_followed by an order number, in local storage — set on the thank-you page after a purchase, so that reloading the page does not report the sale to Google Ads a second time. It stays until you clear this site’s data.udria_conv_followed by a reference, in local storage — the same, for the confirmation page of the sign-ups we took before the product went on sale.udria_blog_entryandudria_blog_last, in session storage — the first and the latest blog article read in the current tab. Nothing uses them yet and they are never sent to us. They go when the tab is closed.
What our measurement records
Unless you have opted out, each page view and click we measure is sent to our own server, which stores:
- what happened (a page view, a click on a button, scrolling half-way down a page), the page’s path, the time, the design and landing-copy versions you were shown, the source named in the link you followed, and, if you have accepted advertising cookies, the campaign, keyword and Google click identifier from
udria_attr; - the visitor and session identifiers from the cookies above;
- for each visit, which site sent you (its address, not the page), the source and medium named in the link, the page you landed on and the landing copy it showed; if you have accepted advertising cookies, the details in
udria_attrinstead, apart from two of Google’s click identifiers (wbraidandgbraid); and your browser’s user-agent string, which names the browser, its version and your operating system; - for each visitor identifier, when we first and last saw it, and whether it looked like one of ours or an automated crawler;
- a shortened hash of your IP address.
Blog articles record separately, against the same identifiers, which article was read, whether you reached half-way and nine-tenths of the way down, which of its links you clicked, whether you copied one of its code samples, and your answer if you said whether it was useful.
If you buy, the design version you were shown is recorded with the purchase, on our own records only. If you have accepted advertising cookies, the identifiers and the details in udria_attr and udria_attr_last also travel with the order to Stripe and are recorded with the purchase. That links this browser’s measured visits to your order, and so to the email address on it, which makes them information about an identifiable customer rather than about an anonymous browser. Without that acceptance the order is not linked to your visits. The order also records that you started checkout, as one more measured event, and a shortened hash of your IP address combined with your browser’s name, operating system and type of device (never its version), so that we can tell when one device checks out under several visitor identifiers. Neither is recorded if you have opted out.
Opting out of measurement
You can object to this measurement. Press the button and our server sets udria_optout in this browser and deletes udria_vid, udria_sid, udria_attr, udria_attr_last and udria_exp. From then on, in this browser, our pages record nothing about your visits and set none of those cookies again, you see the site’s original design, and an order you place carries none of the identifiers above to Stripe.
Done. This browser is opted out of our measurement.
The choice lasts a year and belongs to this browser: another browser or device is measured as before, and clearing this site’s cookies undoes it. What was recorded before you opted out stays in our records, no longer connected to this browser. The opt-out covers our own measurement. It does not change your answer to the cookie banner, which is what Google’s tags follow, and after a purchase the conversion described above still reaches Tag Manager if you accepted advertising cookies.
How long we keep it
Order records are kept for as long as we need them for accounting and for the statutory periods that come with selling — which for a consumer sale includes the record of what you agreed at checkout.
Measurement records (events, visit and visitor records, and blog reading records) and what you send through the stack form are not yet deleted automatically. We keep them until we remove them, and we have not yet fixed a period.
Your rights
You can ask us for a copy of your data, ask us to correct it, or ask us to delete it entirely. Email hello@udria.co and we will action it within 30 days. Deletion removes your customer record, your order history, questionnaire answers, what you sent through the stack form and any email history. Where we must keep a record of a sale for accounting or consumer-law reasons, we will tell you what is kept and why.

