Privacy Policy
Effective date: 27-07-2026 Version: 1.0
1. Who we are
Scriptaoke is operated by Scriptaoke, LLC, a Delaware limited liability company. The service is operated day-to-day from Montréal, Québec, Canada.
| Legal entity | People are Awesome, LLC (Delaware, USA) |
| Notices address | 8 The Green, Suite B, Dover, DE, 19901 |
| Privacy contact | legal@scriptaoke.com |
| Privacy Officer (Québec Law 25) | legal@scriptaoke.com, Director, People are Awesome LLC |
In this policy, "we", "us", and "Scriptaoke" mean Scriptaoke, LLC. "You" means anyone who uses the service, whether or not you have an account.
2. What this policy covers
This policy applies to the Scriptaoke website and web application at Scriptaoke.com, the Scriptaoke Zoom app, and any session you join by invite link as a guest.
It does not cover Zoom itself, or any other third-party service you use alongside Scriptaoke. Those services have their own privacy policies and their own relationships with you.
3. The short version
- We collect the minimum we need to run a script-reading service: an account, some operational logs, and abuse-prevention signals.
- We do not record or store any meeting audio, video, chat, or transcripts — not on the web, and not in Zoom.
- We do not sell your personal information, and we do not share it for advertising.
- We do not use analytics or advertising cookies, we do not track you across other sites, and nothing about you is sent to a third party. We do count page views, using a method that cannot identify you or recognise you tomorrow — section 4.10 explains exactly how. We set a small number of cookies — for sign-in, for security, and for guest sessions. Section 6 lists all of them.
- You can request access to, correction of, or deletion of your data at any time.
4. What we collect
4.1 Account information
When you create an account we collect your email address and either a password (stored hashed, never in plain text) or a Google account identifier if you sign in with Google. If you sign in with Google we receive your email address, name, and profile picture URL from Google — we do not receive access to your Gmail, Drive, contacts, or any other Google service.
We also store a profile record containing your account settings, plan tier, and administrative flags.
4.2 How you found us
We no longer record how you found us. Accounts created before 6 August 2026 may still carry a first-touch referrer source — a short label such as a search engine, a social platform, or a direct visit — recorded on the profile at the time. We no longer collect or update it, and no cookie is set for this purpose.
4.3 IP addresses and abuse prevention
We process the IP address of your connection at signup and login in order to detect and prevent abuse, spam registrations, and evasion of bans.
We do not store your IP address in raw form. Before storage it is:
- Hashed using a keyed one-way function, and
- Truncated to a network prefix, so that individual addresses cannot be recovered from our records.
From these signals we compute a risk score at signup, using factors including the email domain used, whether that domain belongs to a known disposable-email provider, and whether the connection matches a previously banned network. A high score can cause a signup to be refused. We may also ban a network prefix outright, which will prevent new registrations from it.
This is automated decision-making. See section 11 for what that means and what you can do about it.
4.4 Application logs
We keep structured operational logs of how the service is being used. A log record may contain:
- The event type and category (for example: a search, a browse filter, a script view, a billing event)
- A timestamp
- Your account identifier, where you were signed in
- Technical details such as an error message or a response time
We use these to keep the service working, to diagnose faults, to understand which parts of the catalog people actually use, and to detect abuse. Logs are retained for 90 days and then deleted.
4.5 Group session data
When several people read together, we store the state of the live session — the script, the assigned roles, the display names people have chosen, and the current playback position — so that everyone's screen stays in sync. This is deleted 30 days after the session ends.
We also generate a reading-accuracy summary for each participant: an aggregate measure of how closely the reading tracked the script. This exists so that the group-reading feature can be improved.
Separately, there is an optional raw session event stream that captures individual timing events during a session. This is switched off by default and is only ever enabled deliberately, for a limited period, to diagnose a specific problem. When it is on, records are kept for 30 days.
4.6 Guests
You can join a session by invite link without creating an account. If you do:
- You choose a display name. It is visible to everyone else in that session.
- You may assign yourself to a role in the script.
- Our server issues a private guest token to your browser. It identifies your browser to the session so your role and position stay attached to you. It is not linked to any account and is meaningless outside that session.
We do not ask guests for an email address, and we do not create an account for you. Guest display names and tokens are deleted 30 days after the session ends.
Please choose a display name you are comfortable showing to the other people in the session. It is not private within the session, and it will not be private from us during the retention period.
4.7 Things you create
If you have an account, we store what you make:
- Saved quotes and passages you bookmark during a reading, including any quote card you generate
- Bookmarked scripts
- Problem reports you submit, including the snippet of script you were on when you reported it
These are kept until you delete them or delete your account.
4.8 Casting choices stay in your browser
The mapping of performers to characters that you set up before a solo session is stored in your browser's local storage. It never reaches our servers. Clearing your browser data removes it.
4.9 Payment information
We do not currently charge for anything, and no payment processing is active.
When paid subscriptions launch, payments will be handled by Stripe. Card numbers go directly to Stripe and are never transmitted to or stored on our servers. We would store your Stripe customer identifier, your subscription status, and your plan tier. We will update this policy before any charging begins.
4.10 How we count visits
We count page views so that we can tell how many people use the site and which parts of the catalog they read. This is done without cookies and without any identifier that persists.
For each page view we record: the page (with any script identifier replaced by a placeholder), which script the page was about if it was a script page, a short label for where you arrived from, your country, whether your device is a phone, tablet or desktop, and whether you were signed in. We do not record your IP address, your browser's user-agent string, or any link to your account.
To count a person once instead of counting every page separately, we need to recognise that two page views came from the same visit. We do that by combining your IP address and browser with a random value that we generate fresh each day and destroy two days later, and keeping only the result of a one-way calculation over the three. The result cannot be turned back into your IP address, and because the random value is destroyed, the results from one day cannot be matched to the results from any other day. In practice: we can tell that 40 people visited yesterday, and we cannot tell whether any of them had visited before.
Individual records are deleted after 90 days. Before they are deleted they are added into daily totals — how many visitors, how many views of each page, how many arrivals from each source — and those totals are kept indefinitely. The totals are counts only and describe nobody in particular.
5. The Zoom integration
This section describes what the Scriptaoke Zoom app does in detail, because it involves your meeting.
5.1 What the app is for
Scriptaoke's Zoom app lets you run a teleprompter reading inside a Zoom meeting, so that everyone in the meeting can see the current line of the script.
Only authenticated Zoom users can use it. The app does not operate in Zoom's guest mode.
5.2 The "Prompter" participant
To display the script inside your meeting, our server launches a headless browser session that joins your meeting as a visible participant named "Prompter."
The Prompter participant:
- Publishes a video track containing a rendered image of the current script line. That is the entirety of what it sends into the meeting.
- Does not subscribe to, receive, record, or store any other participant's audio or video.
- Does not access meeting chat, transcripts, recordings, or breakout rooms.
- Exists only for the duration of the reading and leaves when the session ends.
We do not record your meeting. We do not store meeting audio, video, chat, or transcripts. We never have a copy of them.
The Prompter joins as an ordinary meeting attendee, using a short-lived join signature that our own server generates and signs. It does not join on your behalf, does not use your Zoom identity, and we do not request, receive, or store any Zoom access token (ZAK or on-behalf-of token) for it. The signature authorises a single join and is never written to our database or logs.
5.3 Participant names
While a reading is running, the app reads the display names of participants in the meeting, so that it can show the right person which line is theirs.
These names are used in the moment and are never written to our database. They are discarded when the meeting ends.
While a reading is running, the app may spotlight the participant whose line is currently showing, so the group's attention follows the active reader. Spotlighting changes what other participants see on their own screens for the duration of the reading; it stores nothing and is cleared when the reading ends. The app does not change any participant's display name.
5.4 Zoom account information we store
When you connect your Zoom account to your Scriptaoke account, we store a single link record: your Zoom user ID paired with your Scriptaoke account ID. We use it solely to match your Zoom identity to your Scriptaoke account, so the app knows which plan you are on and which catalog is yours.
During the one-time linking step we read your Zoom email address only to find the matching Scriptaoke account. We do not store your Zoom email, your name, or your Zoom account ID. The link record is kept until you unlink or delete your account.
5.5 Zoom session events
We record operational events about Zoom sessions in order to keep the integration working and to enforce session limits. Each record contains:
| Field | What it is |
|---|---|
| Timestamp | When the event occurred |
| Session code | The Scriptaoke session it belongs to |
| Meeting reference | A one-way hash of the Zoom meeting number — the meeting number itself is not stored |
| Category, phase, event | What kind of event it was and where in the flow it happened |
| Outcome | Success, failure, blocked, or informational |
| Error code | Present only when something failed |
| Latency | How long the step took, in milliseconds |
| Account identifier | Your Scriptaoke account, where applicable |
| Plan | Your plan tier at the time |
| Diagnostic context | A limited, fixed set of non-identifying keys — see below |
We do not store IP addresses in these records.
The diagnostic context is restricted to a fixed allowlist of keys, enforced at ingest (/api/zoom/telemetry); any other key a caller sends is dropped before storage. The permitted keys are:
scriptId— the catalog identifier of the script being readkillBot— a boolean flag present on bot-stop eventsmessage— a short technical diagnostic string, from which URLs, authorization tokens, and other long opaque values are automatically redacted, and which is capped at 512 characters
None of these is designed to carry personal information.
These records are retained for 90 days.
5.6 Unlinking and removing the app
You can disconnect Zoom from Scriptaoke at any time, in two ways:
- From Scriptaoke — use the unlink control in your account settings.
- From Zoom — remove the Scriptaoke app from your Zoom account through the Zoom App Marketplace.
Either way, we delete the link between your Zoom account and your Scriptaoke account, together with the Zoom account information listed in 5.4, within 10 days. Your Scriptaoke account itself is unaffected and you can keep using the web version.
This is backed by (a) a deauthorization webhook at /api/zoom/deauthorize, which verifies Zoom's request signature and runs on the app_deauthorized event, and (b) a shared unlink routine that deletes the Zoom account-link record and detaches the associated Zoom session events from your identity. Both the Marketplace-removal path and the in-app unlink control use the same routine.
⚠ VERIFY before publication: confirm the webhook subscription is enabled in the submitted Zoom manifest with the production URL, and that ZOOM_WEBHOOK_SECRET_TOKEN is set in the production environment.
6. Cookies and similar technologies
We use a small number of strictly necessary cookies and equivalent browser storage:
| Purpose | What it does |
|---|---|
| Authentication | Keeps you signed in between page loads |
| Session security | Protects against cross-site request forgery |
| Guest session token | Identifies your browser to a session you joined as a guest |
| Casting preferences | Local storage; remembers your performer-to-character assignments |
We do not use analytics cookies, advertising cookies, or any third-party tracking. Because everything we set is strictly necessary to deliver a service you have asked for, we do not display a cookie consent banner.
When paid plans launch, Stripe will set cookies necessary to process a checkout. Those are also strictly necessary.
Note for the operator: page-view measurement was added in August 2026. It sets no cookie, uses no third party, and stores no persistent identifier — see section 4.10 — which is why the statements above remain accurate and no consent banner is shown. Any future change that introduces a cookie, a persistent identifier, or an external analytics provider invalidates this section and creates consent obligations for EU, UK, and Québec visitors. Revisit this policy before making one.
7. Why we process your information, and our legal basis
For people in the EU, the UK, and other places with equivalent law:
| What we do | Why | Legal basis (GDPR Art. 6) |
|---|---|---|
| Create and run your account | To provide the service you signed up for | Contract |
| Run readings and sync sessions | Same | Contract |
| Store your quotes and bookmarks | Same | Contract |
| Send service emails (password reset, account notices) | Same | Contract |
| Keep operational logs | To keep the service running and diagnose faults | Legitimate interests |
| Count page views | To understand how the site is used | Legitimate interests |
| Detect and prevent abuse, spam, and ban evasion | To protect the service and its users | Legitimate interests |
| Retain referrer labels recorded before 6 August 2026 | To understand which channels brought early accounts | Legitimate interests |
| Improve group reading accuracy | To make the product better | Legitimate interests |
| Link your Zoom account | To provide the Zoom integration you asked for | Contract |
| Handle billing (future) | To take payment for a subscription you chose | Contract |
| Respond to legal demands | Because we have to | Legal obligation |
Where we rely on legitimate interests, we have considered whether our interest is overridden by your rights. You can object to any of it — see section 10.
8. Who we share it with
We do not sell your personal information. We do not share it for advertising or cross-context behavioural advertising. We have never done either.
We use the following service providers, who process data on our instructions:
| Provider | What they do | Where |
|---|---|---|
| Supabase | Database, authentication, file storage | United States |
| Vercel | Application hosting and delivery | United States / global edge |
| Resend | Transactional email | United States |
| Inngest | Background job processing | United States |
| Unsplash | Catalog imagery (we request images; they may log the request) | United States |
| Zoom | Video meetings and the Zoom app platform | United States |
| Sign-in with Google, if you use it | United States | |
| Stripe | Payment processing — not active during beta | United States |
We may also disclose information if we are legally required to, or where necessary to establish or defend a legal claim, or to protect someone's safety. If Scriptaoke is ever sold or merged, your information may transfer with it — you will be told before that happens.
9. Where your information goes
Scriptaoke is operated from Québec, Canada, and hosted primarily in the United States. If you are in the EU, the UK, Canada, or elsewhere, your information is transferred to and stored in the United States.
For EU and UK transfers we rely on the Standard Contractual Clauses (and the UK Addendum) incorporated in our agreements with our providers, together with the supplementary measures those providers publish.
For Québec, we have carried out an assessment of the privacy implications of communicating personal information outside the province before doing so, as Law 25 requires, and we keep that assessment on file.
⚠ VERIFY: the Québec transfer assessment must actually exist as a written internal document before this sentence is published. It is short — a page per provider — but it must be real.
10. Your rights
Whoever and wherever you are, you can ask us to:
- Tell you what personal information we hold about you
- Give you a copy, in a structured machine-readable format
- Correct anything inaccurate
- Delete your account and your data
- Stop or restrict a particular use
- Object to processing we base on legitimate interests
- Explain an automated decision that affected you, and have a person review it
To exercise any of these, email support@scriptaoke.com. We will respond within 30 days. If a request is unusually complex we may need longer, and we will tell you why within that first 30 days.
We may ask you to confirm your identity — usually by writing from the email address on the account. We will not charge you, and we will not treat you differently for asking.
If you are in Québec or elsewhere in Canada: you have these rights under Québec's Law 25 and under PIPEDA, including the right to data portability and the right to have your information de-indexed or its dissemination ceased in certain circumstances. If you are unhappy with our response, you can complain to the Commission d'accès à l'information du Québec or to the Office of the Privacy Commissioner of Canada.
If you are in the EU or the UK: you have these rights under the GDPR and the UK GDPR. You can also complain to your national supervisory authority, or to the UK Information Commissioner's Office.
If you are in California: you have the rights above under the CCPA as amended by the CPRA, including the right to know, delete, correct, and opt out of sale or sharing. We do not sell or share personal information as those terms are defined, and we do not process sensitive personal information for purposes requiring an opt-out. You may use an authorised agent. We will not discriminate against you for exercising any right.
Note for the operator: Scriptaoke almost certainly falls below the CCPA's applicability thresholds today. The rights above are being granted voluntarily, which is the right call for trust and simplicity — but it is a commitment, and it becomes a legal obligation if the business crosses those thresholds later.
11. Automated decisions
We use automated logic in two places:
- At signup, we compute a risk score and may refuse to create an account.
- At network level, we may block registrations from a network prefix associated with prior abuse.
Both can result in you being refused service without a person looking at your case first.
If this happens to you, we will tell you at the time, and the message will include an address you can write to. You have the right to:
- Be told what information was used to reach the decision
- Submit your own observations
- Have the decision reviewed by a person
Write to support@scriptaoke.com and a human being will review it.
⚠ OPERATIONAL COMMITMENT: this requires a monitored inbox, a manual override path for bans and refused signups, and rejection messaging that actually surfaces the appeal address. Law 25 requires the notification to be given at or before the time of the decision.
12. How long we keep things
| Data | Retention |
|---|---|
| Account and profile | Until you delete your account, then purged from backups within 30 days |
| Saved quotes, bookmarks, problem reports | Until you delete them, or until account deletion |
| Application logs | 90 days |
| Hashed IP event records | 12 months |
| Network bans | For the duration of the ban, then 12 months |
| Group session state, guest names, guest tokens | 30 days after the session ends |
| Reading-accuracy summaries | 12 months |
| Raw session event stream (when enabled) | 30 days |
| Zoom account link | Until you unlink, or within 10 days of removing the app |
| Zoom session events | 90 days |
| Page-view records | 90 days |
| Page-view daily totals | Indefinitely |
| Billing records (once billing is live) | 7 years, as tax and accounting law requires |
Account deletion is immediate and permanent, with no recovery window. Backups are overwritten on a rolling basis and residual copies are gone within 30 days.
⚠ VERIFY: every row above needs a mechanism. Several of these tables currently have no expiry job. A published retention period that nothing enforces is worse than no published period.
13. Keeping it safe
We protect your information with encryption in transit (HTTPS everywhere), encryption at rest through our hosting providers, row-level database access controls, hashed passwords, hashed IP and meeting identifiers, and restricted administrative access.
No system is perfectly secure, and we cannot promise absolute safety. If a breach occurs that presents a real risk of significant harm, we will notify the appropriate regulators and affected individuals as the law requires — within 72 hours to EU and UK authorities, and promptly to the Commission d'accès à l'information and the Office of the Privacy Commissioner of Canada.
14. Children
Scriptaoke is not intended for anyone under 16. You must be at least 16 to create an account, and at least 16 to join a session as a guest.
We do not knowingly collect personal information from anyone under 16. If we find out that we have, we delete it. If you believe a child under 16 has given us information, write to legal@scriptaoke.com and we will remove it.
If you invite others to a session you are hosting, you are responsible for making sure they meet this requirement.
15. Changes to this policy
If we make a material change, we will post the new version here with a new effective date and notify registered users by email at least 30 days before it takes effect. Past versions are archived at @scriptaoke.com/terms-old.
16. Contact us
| Privacy questions and requests | legal@scriptaoke.com |
| Appeals of automated decisions | legal@scriptaoke.com |
| Privacy Officer | Director, People are Awesome, LLC |
| Postal | 8 The Green, Suite B, Dover, DE, 19901 |
We do not currently have an appointed representative in the European Union or the United Kingdom. If you are in either place and want to raise something, write to us directly at the address above and we will deal with it.
Scriptaoke is a trading name of People are Awesome, LLC, a Delaware limited liability company.
Scriptaoke