Scriptaoke
About
How it worksWho it's forWhy read aloudThe CatalogZoom app
CatalogAuthors
LoginRegister

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 entityPeople are Awesome, LLC (Delaware, USA)
Notices address8 The Green, Suite B, Dover, DE, 19901
Privacy contactlegal@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:

FieldWhat it is
TimestampWhen the event occurred
Session codeThe Scriptaoke session it belongs to
Meeting referenceA one-way hash of the Zoom meeting number — the meeting number itself is not stored
Category, phase, eventWhat kind of event it was and where in the flow it happened
OutcomeSuccess, failure, blocked, or informational
Error codePresent only when something failed
LatencyHow long the step took, in milliseconds
Account identifierYour Scriptaoke account, where applicable
PlanYour plan tier at the time
Diagnostic contextA 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 read
  • killBot — a boolean flag present on bot-stop events
  • message — 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:

  1. From Scriptaoke — use the unlink control in your account settings.
  2. 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:

PurposeWhat it does
AuthenticationKeeps you signed in between page loads
Session securityProtects against cross-site request forgery
Guest session tokenIdentifies your browser to a session you joined as a guest
Casting preferencesLocal 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 doWhyLegal basis (GDPR Art. 6)
Create and run your accountTo provide the service you signed up forContract
Run readings and sync sessionsSameContract
Store your quotes and bookmarksSameContract
Send service emails (password reset, account notices)SameContract
Keep operational logsTo keep the service running and diagnose faultsLegitimate interests
Count page viewsTo understand how the site is usedLegitimate interests
Detect and prevent abuse, spam, and ban evasionTo protect the service and its usersLegitimate interests
Retain referrer labels recorded before 6 August 2026To understand which channels brought early accountsLegitimate interests
Improve group reading accuracyTo make the product betterLegitimate interests
Link your Zoom accountTo provide the Zoom integration you asked forContract
Handle billing (future)To take payment for a subscription you choseContract
Respond to legal demandsBecause we have toLegal 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:

ProviderWhat they doWhere
SupabaseDatabase, authentication, file storageUnited States
VercelApplication hosting and deliveryUnited States / global edge
ResendTransactional emailUnited States
InngestBackground job processingUnited States
UnsplashCatalog imagery (we request images; they may log the request)United States
ZoomVideo meetings and the Zoom app platformUnited States
GoogleSign-in with Google, if you use itUnited States
StripePayment processing — not active during betaUnited 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:

  1. At signup, we compute a risk score and may refuse to create an account.
  2. 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

DataRetention
Account and profileUntil you delete your account, then purged from backups within 30 days
Saved quotes, bookmarks, problem reportsUntil you delete them, or until account deletion
Application logs90 days
Hashed IP event records12 months
Network bansFor the duration of the ban, then 12 months
Group session state, guest names, guest tokens30 days after the session ends
Reading-accuracy summaries12 months
Raw session event stream (when enabled)30 days
Zoom account linkUntil you unlink, or within 10 days of removing the app
Zoom session events90 days
Page-view records90 days
Page-view daily totalsIndefinitely
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 requestslegal@scriptaoke.com
Appeals of automated decisionslegal@scriptaoke.com
Privacy OfficerDirector, People are Awesome, LLC
Postal8 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 · © 2026
ContactTermsPrivacySign in