Cookie Policy

Last updated: 30 October 2026

1. What cookies are

Cookies are small text files saved by the browser when you visit a website. They are used to remember your preferences, keep your login session active and, optionally, collect statistics on how the site is used or support advertising campaigns.

This policy is drafted in compliance with art. 122 of Legislative Decree 196/2003 (Privacy Code) and the Guidelines on cookies and other tracking tools of the Italian Data Protection Authority (measure of 10 June 2021, no. 231, updated 2024).

Besides cookies in the strict sense, some site features store data directly in your browser via Web Storage (localStorage/sessionStorage) and IndexedDB: technically these are not cookies, but we apply the same safeguards and list them in the same table below, together with the type of storage used.

2. Data controller

OnStage APS, with registered office at Via Paolo VI 54, 73020 Botrugno (LE), Italy, Tax Code 92029150759, VAT number 04810190753.
Email: privacy@onstageaps.com - PEC (certified email): onstagebotrugno@pec.it

3. Categories of cookies used

Necessary

Always on

Essential for the site to function. They cannot be disabled.

Cookies in category Necessary: name, domain, duration, purpose and third-party presence
NameTypeDomainDurationPurposePersonal dataThird parties
os:d:consentBrowser local storage (localStorage).onstageaps.com12 months (then you are asked to make a new choice) Stores the choices made in the cookie banner (necessary/preferences/analytics/marketing) and the date they were made. NoNo
os:d:cookie-consent:session-idBrowser local storage (localStorage).onstageaps.com12 months, aligned with the choice it is linked to Anonymous identifier generated on your device to link, if you are not signed in, the choice you made in the cookie banner to the record kept on the server (no personal data, and not linkable to you until you sign in). NoNo
os:d:auth:session-hintBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Signals, without containing any token, that a session may exist to restore: avoids unnecessarily attempting automatic login renewal for those who have never logged in. NoNo
os:d:auth:rememberBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Remembers whether you chose "Keep me logged in" on login (only the toggle, no login data). NoNo
os:s:auth:refresh:sessionBrowser session storage (sessionStorage).onstageaps.comNo longer written as of 20/07/2026: any residual value from a previous session is read once and immediately deleted on first startup Legacy namespace for session refresh token. As of 20/07/2026 (security fix), the refresh token remains exclusively in memory and is no longer written here: this entry exists only to automatically clear any residuals left by sessions opened before that date. YesNo
os:d:auth:refresh:persistentBrowser local storage (localStorage).onstageaps.comNo longer written as of 20/07/2026: any residual value from a previous session is read once and immediately deleted on first startup Legacy namespace for session refresh token (persistent variant of 'os:s:auth:refresh:session', used when the user chose "Keep me logged in"). Same note: no longer written as of 20/07/2026. YesNo
os:d:pos:selected-editionBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Remembers the event selected on the till device (tablet), shared among the operators who take turns at the shift. NoNo
os:d:barpos:catalogBrowser database (IndexedDB).onstageaps.comUntil the next successful read over the network, which replaces it: no automatic expiry. Copy of the bar's price list saved on the till device, to stay readable (names and prices) when there is no network at the counter. NoNo
os:d:bar:catalogBrowser database (IndexedDB).onstageaps.comUntil the next successful read over the network, which replaces it: no automatic expiry. Copy of the bar's public price list saved on the phone, to stay readable (names and prices) when you open "Order and pick up" without a network. NoNo
os:d:scan:feedback-mutedBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Remembers whether the sound and vibration that confirm a QR has been read are switched off on this device. NoNo
os:d:kds:mutedBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Remembers whether the audio alerts of the kitchen display (KDS) are disabled on this device. NoNo
os:d:kds:standBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Remembers the operational station (e.g. "Kitchen", "Bar") manually selected on this device for the kitchen display. NoNo
os:d:receipt-printerBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Remembers which Bluetooth receipt printer you chose on this device (only its name and address), so you do not have to choose it again for every receipt. NoNo
os:d:orders:voice-mutedBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Remembers whether voice announcements of order status changes are disabled on this device. NoNo
os:d:outboxBrowser database (IndexedDB).onstageaps.comEvery order stays in queue until it's successfully sent to the server: then it's deleted automatically, in a few seconds. If the server permanently rejects it, it stays visible at the till until an operator deletes it after checking it. IndexedDB database of the browser: the till and the bar use it to queue a receipt - or, at the bar, also a cash top-up of the wallet - when the connection is missing or unstable during an event, so it can be sent as soon as the network returns. In the OnStage app the content is written in encrypted form (AES-256), with a key kept by the operating system's keychain, in a separate database (named «onstage-secure»); on the website, where that keychain does not exist, it stays in the «onstage» database without its own encryption. It contains the chosen products, quantities, any line notes, the payment method and a technical identifier generated by the device. For bar receipts, and for wallet top-ups, it may also contain the member's identifier, if the operator recognised them to apply the discounted price or to top up their credit, and - for top-ups only - the amount paid: not the name, not the email, but a code that traces back to you if you have an account. For whoever manages the entrance of an event with the app, the same queue also holds the entries registered offline: the scanned QR code and, for a new registration at the door, the data of the completed form (first name, last name, email, date of birth, consents and, for a minor, the data of the person with parental responsibility) until sent. YesNo
os:d:error-report:queueBrowser database (IndexedDB).onstageaps.comUp to 7 days since the last time the same error occurred, and in any case at most the 50 most recent entries: beyond these limits the oldest entry gets deleted automatically. Browser IndexedDB database (name «onstage»): records on the device, in technical form and cleaned of any recognisable personal data (email, tax code, IBAN, session tokens masked or removed), the errors encountered by the site or the app - type of error, page or operation involved, a technical grouping code. It helps the people developing OnStage notice failures and fix them. It never contains email, name, tax code, nor the content of the requests made. NoNo
os:s:pwa:reload-guardBrowser session storage (sessionStorage).onstageaps.comFor the duration of the browser tab: disappears when you close it Technical counter of the latest automatic page reloads made by the site itself when publishing a new version: prevents an update that fails from causing the page to reload in an infinite loop. It contains no personal data, only instants of time. NoNo
os:d:live-update:quarantenaBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) List of app updates that have already prevented startup on this device and were rolled back automatically: it stops them being downloaded again, so the app does not get stuck in a loop of failed launches. It holds only technical version identifiers, no personal data. NoNo
os:d:push:revoche-in-sospesoBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) When you sign out, this device is removed from push notifications so that whoever signs in after you doesn't receive yours. If that step doesn't fully succeed (for example you're offline at the moment you sign out), a note is kept here of what's still missing, so the operation is retried the next time you open the app instead of being silently forgotten. The note contains the technical address your browser or phone uses to receive notifications, and your user identifier, and it disappears as soon as the operation succeeds. YesNo
os:d:push:nativo-attivoBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) App only: remembers that you turned on notifications on this phone, so that at startup the app keeps them connected and doesn't turn them on for people who didn't ask. It disappears when you turn them off. It contains only a yes, no data about you. NoNo
os:d:app-lock:enabledBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Only in the app: it remembers that you turned on the fingerprint, face or PIN lock on this phone, so the app asks for unlocking when it opens. It only contains a yes, no data about you: your fingerprint or face stay on the phone and the app never sees them. It disappears when you turn the lock off. NoNo
os:d:checkin:segnalazioniBrowser local storage (localStorage).onstageaps.comUntil whoever manages the entrance has read the notice and removed it from the list. Only for whoever manages the entrance of an event with the app: if a person came in while the phone had no network and, when the network came back, their code turned out not to be valid (expired or revoked card, or unknown code), this keeps a note of what time they came in and what kind of problem it is, so whoever is at the door sees it and can fix it. The entry is registered anyway. It contains no names and not the content of the code. NoNo
os:d:station:idBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Only for whoever works at the bar till or at an event till: a random code that gives this device a name, so the till can know whether it still has receipts to send before closing. It is not data about you or about the phone: it is a number invented by the app, and it never leaves the app except to tell the till how many receipts you have queued. NoNo
os:d:assets:cache-refresh-commitBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Remembers which images and videos on the site have already been refreshed in your browser's technical cache (as of 10/08/2026: by comparing a technical list of files with the previous version, to update only those that have really changed instead of reloading the entire site on every visit). It contains only file paths and technical codes, no data about you. NoNo
os:u:cartBrowser local storage (localStorage).onstageaps.comAutomatically deleted on logout if you have an account; if you browse without logging in, it remains saved with no automatic expiry The contents of your basket (chosen products, quantities, notes) for the event you are visiting. If you are signed in, a copy is also kept on our servers, linked to your account, so that you find your basket again from your other devices: clearing your browser data removes it from here, but it comes back at your next sign-in. We delete it when you delete your account. Also on our server, linked to your account (section 7)NoNo
os:u:ordersBrowser local storage (localStorage).onstageaps.comAutomatically deleted on logout if you have an account; if you browse without logging in, it remains saved with no automatic expiry Local copy of your order history (status, amount, event) to display it immediately when opening the "My orders" page before even reloading it from the server. NoNo
os:u:user:profileBrowser local storage (localStorage).onstageaps.comAutomatically deleted on logout if you have an account; if you browse without logging in, it remains saved with no automatic expiry Your signed-in profile: name, surname, roles and whether you are old enough for age-restricted products (a yes or a no, not your date of birth). It lets you be shown as signed in as soon as the page reloads, without waiting for the network. Email, phone and date of birth are not saved on your device: they stay in the open page and are read from the server at every start. YesNo
os:s:db-console:tokenBrowser session storage (sessionStorage).onstageaps.comFor the duration of the browser tab: disappears when you close it. It can also disappear earlier: when the console session expires it is deleted immediately and a new login is required The code of the session opened on the administration SQL console, the page reserved for whoever develops and maintains the site. The server issues it to someone who has the Developer role and is in the list allowed by the configuration, and it accompanies every statement sent. It does not concern site visitors: it is never created in a visitor's browser. YesNo
os:s:db-console:expires-atBrowser session storage (sessionStorage).onstageaps.comFor the duration of the browser tab: disappears when you close it; it is also deleted earlier, together with the session code, as soon as the console session expires The instant at which the administration SQL console session expires, as declared by the server: it serves to display the countdown on the page and to close the console itself when time runs out. How long the session lasts is decided by the server configuration, not the browser and not this list. It contains only a date and time. NoNo
os:s:db-console:recent-queriesBrowser session storage (sessionStorage).onstageaps.comFor the duration of the browser tab: disappears when you close it The last five SQL statements successfully executed in the administration console, to be able to recall them from the "recent" list of the editor without rewriting them. The text of the statement is saved, never its result; if the person writing it includes personal data in it (for example an email address in a search filter), that data remains in the saved text. This also exists only in the browser of whoever administers the site. YesNo
os:s:physical-card:pending-codeBrowser session storage (sessionStorage).onstageaps.comFor the duration of the browser tab: disappears when you close it; it is also deleted earlier, as soon as the card turns out to be linked to your account Only if you open a physical card link (for example by scanning its QR code): the card code is kept for the lifetime of the tab, so that if you have to sign in first, the card is linked to your account without you having to enter it again. The code lets whoever presents it link the card, so it is never left in the page address. YesNo
Google Identity Services ("Continue with Google" button)Network request to a third-party service (not a cookie of ours)accounts.google.comManaged by Google, not known to OnStage It appears, loading immediately, on the login and account/event registration pages; on the member registration page it appears instead only if, after submitting the form, your email is already linked to a Google account. The button is rendered by Google inside its own iframe: opening one of those pages contacts accounts.google.com and communicates your IP address, even before clicking. According to Google's policy, accounts.google.com can set its own security/session cookies - names and duration are decided by Google, not by OnStage. NoYes
__Host-onstage_rtCookieapi.onstageaps.com30 days, renewed on every successful login. If you log in with an operational station role (till, digital kitchen/bar, merchandise desk, games, activities) the server stops accepting it after 12 hours, even if it remains saved in the browser until 30 days. In local development the same cookie is called 'onstage_rt'. Keeps you logged in after login, so you don't have to re-enter your password on every visit: it contains the token that renews the session. Readable only by our server, not by JavaScript (HttpOnly); travels only on encrypted connection (Secure) and is never sent to other sites (SameSite=Strict). Set by the API domain (api.onstageaps.com), separate from the site you are visiting (onstageaps.com). It is deleted when you log out. YesNo
onstage_os:auth:refreshPhone's encrypted keychain (app only: iOS Keychain / Android KeyStore)Not a web domain: it exists only inside the OnStage app (Android; on iPhone, once available, the same applies to the system Keychain), in the phone's encrypted keychain, not on a website.30 days, renewed on every successful sign-in in the app. If you sign in with an operational station role (till, digital kitchen/bar, merch stand, games, activities) the server stops accepting it after 12 hours, even though the value stays stored on the phone for up to 30 days. It is deleted when you sign out of the app, or if you uninstall the app (uninstalling, however, does not revoke the session on the server: it stays valid until it expires naturally). In the app (not on the website) the token that keeps you signed in after login is stored in the phone's encrypted operating-system keychain - Keychain on iPhone, an area protected by the Android KeyStore key on Android - instead of a browser cookie, because the app has no browser with an HttpOnly cookie available. It cannot be read by other apps installed on the phone. An unlocked phone in someone else's hands with the app already open still remains accessible under your identity: today the only way to react is to sign out of all devices using the account's "Sign out" function, which also closes that session. YesNo

Functional

Opt-in

They improve your experience by remembering preferences and personal settings.

Cookies in category Functional: name, domain, duration, purpose and third-party presence
NameTypeDomainDurationPurposePersonal dataThird parties
os:d:installBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Remembers that you closed the invitation to install the app (PWA) and for how long to avoid offering it again. NoNo
os:u:pref:*Browser local storage (localStorage).onstageaps.comAutomatically deleted on logout if you have an account; if you browse without logging in, it remains saved with no automatic expiry A family of working preferences for the staff running an event (for example automatic refresh of the dashboard and the stock screens, and the active tab in the inventory panel). Dynamic key: it currently covers os:u:pref:inventoryAutoRefresh, os:u:pref:inventoryActiveTab, os:u:pref:dashboardAutoRefresh. If you are signed in, a copy of these three preferences is also kept on our servers, linked to your account, so that you find them again from your other devices: clearing your browser data removes them from here, but they come back at your next sign-in. We delete them when you delete your account. Also on our server, linked to your account (section 7)NoNo
os:d:tool:setlistBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) The setlist you are creating in the "Setlist builder" tool (songs, duration, key, notes), to find it again if you close the page. NoNo
os:d:ricevid:dataBrowser local storage (localStorage).onstageaps.comNo automatic expiry (you can delete it with the "Clear saved data" button in the tool) The registry data of your association (name, RUNTS number, address, tax code/VAT number) entered in the 'RicevidAPS' tool, saved so you don't have to re-enter it for every receipt. It does not contain donor data: name, tax code and address of the receipt recipient remain only in the completed form and in the PDF receipt generated on your device, and are never saved here. YesNo
os:d:ricevid:counterBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) The serial number of the last receipt generated with 'RicevidAPS', by year, so the numbering starts again where you left off. NoNo
os:d:tool:bracketBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) The bracket you are creating in the "Battle bracket generator" (participants, matches, results). NoNo
os:d:tool:runts-checkBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) The state of the checked checkboxes in the 'RUNTS Check' tool checklist. NoNo
os:d:tool:rhyme-historyBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Recent searches/bookmarks in the "Rhyme dictionary" (up to 20 entries). NoNo
os:d:tool:beat-trainer-sessionsBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) The history of completed sessions in the "Beat Trainer" tool (bpm, pattern, duration). NoNo
os:d:tool:beat-trainer-audioBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Whether the audio of the "Beat Trainer" metronome is on or off. NoNo
os:d:tool:freestyle-statsBrowser local storage (localStorage).onstageaps.comNo automatic expiry (remains on the device until you clear your browser data) Usage statistics for the "Freestyle Generator" (sessions, words, minutes, favourite theme) to show you your progress. NoNo

Analytics

Always on

They measure how the site is used. Part of the data goes to Google Analytics in aggregate form; another part stays on our servers and, if you are signed in, is linked to your account (see section 6 below). They are active from your first visit and stay always on: since 10 September 2026 there is no longer a switch to turn them off, neither in the banner nor via the «Edit preferences» button at the bottom of this page. You can object by writing to privacy@onstageaps.com (see section 9 of the privacy notice).

Cookies in category Analytics: name, domain, duration, purpose and third-party presence
NameTypeDomainDurationPurposePersonal dataThird parties
_gaCookie.onstageaps.com2 years (Google Analytics 4 default value) Statistical identifier for the browser used by Google Analytics 4 to distinguish visits. Active from your first visit and always on: since 10 September 2026 there is no longer a switch to turn it off, neither in the «Customise» panel nor in the cookie banner. You can object by writing to privacy@onstageaps.com. NoYes
_ga_<container-id>Cookie.onstageaps.com2 years (Google Analytics 4 default value) Google Analytics 4 session cookie, used to group together the events of the same visit. Same behaviour as the previous cookie: always on, with no switch to turn it off. NoYes
os:d:analytics:visitor-idBrowser local storage (localStorage).onstageaps.comNo automatic expiry: it stays until you clear your browser data. Internal statistics have been always on since 10 September 2026, there is no longer a switch that clears it. A random number assigned to your browser by the site's internal statistics, so we can tell that you have been here before even if you do not have an account. It is not derived from your personal data nor from your device's characteristics (it is not a «fingerprint»): it is drawn at random. If you are signed in, the browsing recorded on the server stays linked to your account. YesNo
os:s:analytics:sessionBrowser session storage (sessionStorage).onstageaps.comAs long as the browser tab: closing it ends the visit Keeps together the pages and actions of the current visit for the site's internal statistics: when it started, the last activity, whether it is your first visit and which site you came from (only the site name, never the full address). YesNo

Marketing

Opt-in

Third-party cookies set by embedded content on the site (maps, social posts): they serve to display that content but are not under our direct control.

Cookies in category Marketing: name, domain, duration, purpose and third-party presence
NameTypeDomainDurationPurposePersonal dataThird parties
Google Maps cookies (map embed)Cookiegoogle.comDoes not load until you consent to social embed cookies in the banner; once consented, managed by Google, not known to OnStage Set by the Google Maps map embedded on the "About us" page (association address in Botrugno) and in the "How to get there" section of each event detail page (event venue), subject to explicit consent: without consent you see only a placeholder with an invitation to activate it, never the iframe. NoYes
Instagram/Meta cookies (post embed)Cookieinstagram.comDoes not load until you consent to social embed cookies in the banner; once consented, managed by Meta/Instagram, not known to OnStage Set by Instagram posts embedded on the home page ("From our Instagram" section) and, when the edition has linked posts, in the same section of event detail pages, subject to explicit consent: without consent you see only a placeholder with an invitation to activate it. Once consented, the iframe does not start right away: it only mounts when you scroll to the card (or click). NoYes

4. How to manage cookies

You can change or revoke your cookie preferences at any time using the button below or through your browser settings.

To disable cookies from your browser, see the guides for: Chrome, Firefox, Safari.

5. Third-party cookies

Statistical cookies (_ga, _ga_<container-id>) belong to Google Analytics 4 and last two years. They are written already on your first visit, before you have made a choice, and stay active whatever you choose in the banner: there is no function on the site to turn them off. You can still exercise the right to object under Article 21 GDPR by writing to privacy@onstageaps.com - details in the Privacy Policy, section 4. See also Google’s Privacy Policy for information on their processing.

The "About us" page embeds a Google Maps map with the association's address. Every event detail page embeds a similar map, in the "How to get there" section, with the event's venue. The home page embeds posts from our Instagram profile in the "From our Instagram" section, and the same happens on event detail pages when the edition has linked posts.

The map on "About us", the map on event detail pages ("How to get there" section) and the Instagram posts all stay hidden - a placeholder takes their place, with a way to activate them on the spot - until you explicitly consent to social embed cookies, either in the banner or by clicking the placeholder itself.

On the login and registration pages (account and event), the "Continue with Google" button loads a script from accounts.google.com and shows the real button inside a Google iframe: the contact happens already when the page loads, not only on click, and communicates your IP address to Google. On the member registration page it appears instead only if, after submitting the form, your email turns out to already be linked to a Google account.

6. OnStage's own statistics

In addition to Google Analytics, the site keeps its own statistics, which stay on the association’s servers and are not shared with anyone. They are always on, just like Google Analytics: there is no function on the site to stop them. You can exercise the right to object under Article 21 GDPR by writing to privacy@onstageaps.com - details in the Privacy Policy, section 4.

To make them work the site saves two things on your device, listed in the table above under «Statistics»: a random number assigned to your browser (os:d:analytics:visitor-id), which lets us recognise that you have already been here even if you do not have an account, and the identifier of the current visit (os:s:analytics:session), which lasts as long as the browser tab. The random number is not derived from your personal data or from the characteristics of your device: it is drawn at random, and is automatically deleted from your device after the fourteen months of retention described below.

Unlike Google Analytics, these statistics are not anonymous: if you are signed in they stay linked to your account, and they also record the text of the searches you run on the site. What exactly they cover, how long they are kept (14 months) and who may read them is set out in section 9 of the Privacy Policy.

7. Your basket and preferences follow your account

Two of the storage entries listed in the table do not stay on your device alone. If you are signed in with your account, the contents of your basket (os:u:cart) and three working preferences of the management screens (os:u:pref:inventoryAutoRefresh, os:u:pref:inventoryActiveTab, os:u:pref:dashboardAutoRefresh) are also copied to the association's servers, in a row linked to your account. It serves one purpose only: finding your basket and your settings again when you move from the computer to the phone. Nothing else listed in the table is copied to the server this way: not your cookie choice, not your sign-in keys, not the till orders waiting to be sent.

The consequences, stated in full because they change what you can expect. If you clear your browser data those entries disappear from the device but not from the server: they come back at your first subsequent sign-in. Data that is also on our server can be read, for technical necessity, by whoever administers the system; data that stays on your device alone cannot. In exchange, for as long as the copy exists it is data we hold: you receive it when you request your data (Articles 15 and 20 GDPR: the Export my data button in the members' area) and it is deleted when you delete your account (Article 17). The copy remains for as long as your account exists, and every change replaces the previous one: we do not keep a history of what was in your basket before.

8. Retention period of your consent

Your preferences are stored for 12 months. The Garante's Guidelines on cookies (decision no. 231 of 10 June 2021) ask that the banner is not shown again before six months have passed: 12 months respects that limit. When it expires, a new choice will be requested.

9. Updates

This policy may be updated. In case of significant changes, a new expression of consent will be requested.

Manage your preferences

Change or revoke consent to non-essential cookies.