Legal
Cookie and storage policy
Last updated: 3 October 2026
The short version
Our Weddings is run by Ruben Cipriano, Rua Doutor Mário Sacramento, 18, 2695-747 São João da Talha, Portugal, reachable at [email protected]. We use a small number of cookies and browser storage items, and every one of them is needed to make the site work. There is no advertising and no cross-site tracking. We do count visits, with a small analytics tool that we run ourselves; it uses no cookies and keeps no personal data (see "Visit statistics" below). Everything we set is listed below.
What we store on your device
"Cookie" means a small file your browser sends back to us with each request. "localStorage" and "IndexedDB" are storage inside your browser that is never sent to a server by itself — the page reads it and decides what to send.
| Name | Set by | Purpose | Type | Lifetime |
|---|---|---|---|---|
__Host-token | Us (first party) | Keeps you signed in. HttpOnly, Secure, SameSite=Lax. Strictly necessary. | Cookie | 7 days, sliding — it resets each time you come back |
__Host-oauth_state | Us (first party) | Set only while you are signing in. It carries a one-time value we check when your provider sends you back, which is what stops someone else starting a sign-in in your browser. Deleted the moment sign-in finishes. Strictly necessary. | Cookie | At most 10 minutes, and only during sign-in |
__Host-site_pin_<number> | Us (first party) | Only if a couple protects their wedding with a PIN and you type it: remembers that this browser has the PIN for that one wedding (the number is the wedding's), so you are not asked again. It holds a signed “unlocked” mark, never the PIN itself, and stops working when the couple changes their PIN. HttpOnly, Secure, SameSite=Lax. Strictly necessary. | Cookie | 30 days |
wedding_currency | Us (first party) | Remembers the currency you picked on the pricing page, so prices stay in your own money next time. Set only when you choose a currency yourself, and it holds nothing but that three-letter code. | Cookie | 1 year, or until you clear your cookies |
wedding_device_id | Us (first party) | A random id, created the first time you upload, reply or report something. It limits uploads so a single device can't flood a gallery, lets us count reports from different people rather than repeated clicks, and identifies which device was shown the privacy notice on the RSVP and upload forms. Strictly necessary. | localStorage | Until you clear your browser storage |
wedding-uploads | Us (first party) | The queue of photos and videos you are uploading, so a reload or a lost signal resumes instead of starting again. For each item it keeps the wedding, the file name, type, size and date, the upload's progress and any error and, for files up to 5 MB (photos or short videos), the file itself. An item is removed as soon as it has uploaded or you remove it; one that failed stays until you retry or remove it, and one for a wedding you never open again stays until you clear your browser storage. Strictly necessary. | IndexedDB | Until the upload finishes, or you remove it or clear your browser storage |
support-thread:<reference> | Us (first party) | Only if you open a support conversation from the link we emailed you: the key in that link, taken out of the address bar and kept for this tab, so a reload still opens the conversation. Strictly necessary. | sessionStorage | Until you close the tab |
ow:low-data | Us (first party) | Only if you use the “Data saver” switch on a wedding's photos: remembers whether you turned it on or off, so the gallery keeps your choice on this device. It holds nothing but “on” or “off”. | localStorage | Until you clear your browser storage |
wedding-admin:setup-guide:<wedding> | Us (first party) | Only in a wedding's admin, for the couple and their helpers: which steps of the “Set up your wedding” guide you marked as done, and whether you hid the guide, so it looks the same next time on this device. It holds nothing else. | localStorage | Until you clear your browser storage |
ow:after-sign-in | Us (first party) | Only while you sign in: the page on this site you were going to, kept for this tab while you visit your sign-in provider, so you come back to it. Removed as soon as you are back. Strictly necessary. | sessionStorage | Until you are back from signing in (at most 15 minutes), or you close the tab |
ow:profile-step-skipped:<account> | Us (first party) | Only if you are signed in and press “Skip for now” or save on the “Your profile” step shown after you sign in: that you have seen that step on this device, so signing in does not show it again. It holds nothing else, and your profile itself is kept on your account, not here. | localStorage | Until you clear your browser storage |
wedding-unlock:<wedding> | Us (first party) | Only on a wedding with a PIN, or one the couple closed: that this device typed the right PIN before (or is the couple, signed in), so the next visit opens the page at once instead of asking again. It holds no PIN, only that fact and when. Strictly necessary. | localStorage | 30 days |
wedding-rsvp-edit:<wedding> | Us (first party) | Only if you reply to a wedding's RSVP: the number of your reply and a random secret code we gave this device with it, so “Change my answer” updates that reply instead of adding a second one. We keep only a scrambled copy of the code (a hash) and delete it together with your reply. It holds no name or answer, and it is removed if the reply can no longer be changed. Strictly necessary. | localStorage | Until you clear your browser storage |
wedding-stale:<page>:<wedding> | Us (first party) | Only on a wedding with a PIN, or one the couple closed: the last version of the home page or the invitation card you were shown, so it appears at once on a repeat visit in this tab while we quietly check for anything newer. Strictly necessary. | sessionStorage | Until you close the tab |
ow_lang | Us (first party) | Remembers the language you chose, so the pages open in it next time. It is set when you pick a language in the language menu, when you arrive on a link that carries a language (?lang=, as in our emails) and, if you are signed in and your account has a language, the first time this device learns it. It holds nothing but the language's code (“en”, “pt”, “fil”, “es” or “fr”) and is used only to show you the site in that language: your browser sends it back with its requests like any cookie, but our servers do not use it, and it identifies nobody. A preference you asked us to remember, so strictly functional. SameSite=Lax, Secure. | Cookie | 1 year, renewed each time you pick a language, or until you clear your cookies |
umami.disabled | Us (first party) | Only if you switch on “Don't count my visits” (see “Visit statistics” below): remembers that this browser is to be left out of our visit statistics. It holds nothing but a “1”. Our statistics tool sets nothing else on your device. | localStorage | Until you switch it off or clear your browser storage |
__cf_bm | Cloudflare (our network provider) | Bot management — tells real visitors apart from automated traffic. Cloudflare may set it; most visits get none. Strictly necessary. | Cookie | About 30 minutes |
_cfuvid | Cloudflare (our network provider) | Rate limiting — keeps one source from overwhelming the site. Cloudflare may set it; most visits get none. Strictly necessary. | Cookie | Session — cleared when you close the browser |
cf_clearance | Cloudflare (our network provider) | Only if Cloudflare asks you to prove you are not a bot (a challenge page): remembers that you passed, so you are not asked again. Strictly necessary. | Cookie | As Cloudflare sets it (30 minutes by default) |
| hCaptcha cookies | Intuition Machines, Inc. (third party) | Back-up spam check on the RSVP and support forms. It only loads when our own spam check cannot, so most visitors never get these. Strictly necessary for spam prevention. | Cookies | Set by hCaptcha; see their cookie notice |
One more thing exists only if you ask for it: when you switch on browser notifications in your admin, your browser keeps a small service worker (our sw-push.jsfile) and a push subscription, in storage the browser itself manages. They are not cookies and hold no personal data of yours; turning the notifications off removes them.
That's the whole list. Our own spam check on the RSVP and support forms runs on our servers and is loaded from them when a form is on screen. Cloudflare may also ask your browser to report failed connections to it (the Report-To and NEL headers); those reports say that a connection failed, not what was on the page, and nothing is stored on your device. If you block these items, browsing still works, but you won't be able to stay signed in, uploads will not survive a reload, and a form protected by hCaptcha may refuse to submit.
Why there is no cookie banner
Consent is required for cookies and storage that aren't needed to deliver the service you asked for. Every item in the table above is needed: signing in, protecting sign-in, remembering a currency or a language you chose, stopping upload abuse, resuming your uploads, keeping bots off the site, and protecting forms from spam. We run no advertising and no cross-site tracking, and we don't sell or share this data. Our visit statistics (below) use no cookies, store nothing on your device and keep no personal data, so we don't interrupt you with a banner for them either: instead you can switch them off for your browser yourself, below. If we ever add embedded content from another site, tracking across sites, or anything else that isn't strictly necessary, a consent banner will appear first, and it will be off until you say yes.
Visit statistics
To see which pages people use and where the site can be better, we count visits to its public pages with Umami, an open-source tool that runs on our own servers. It sets no cookies, follows nobody from site to site and shares nothing with anyone else. It does not run on the sign-in, account and admin pages, or on a wedding that has a PIN or that the couple closed, and it respects the Do Not Track and Global Privacy Control signals your browser may send. Exactly what a visit records, and for how long, is in our Privacy Policy.
Maps on wedding pages
If a couple adds a map to their wedding page, the map tiles are loaded from the OpenStreetMap Foundation. Loading those tiles means your browser contacts their servers directly, so they receive your IP address and browser details — we can't prevent that, and it happens when the map comes into view. The map itself doesn't set cookies here. If you'd rather not be seen by them, avoid pages with a map, or block their domain in your browser. Couples who search for an address while placing the map send that search to the OpenStreetMap Foundation too.
Controlling this yourself
Every browser lets you view, block, and delete cookies, and clear the storage sites keep, usually under privacy or site settings. Clearing them signs you out, forgets your currency and your language, resets your device id and drops any uploads still waiting in the queue.
Questions
Email [email protected] and we'll answer within 2 business days. Our full Privacy Policy explains everything else we do with your data, including the providers we rely on and your rights.