Privacy
Last updated October 23, 2026. Draft pending legal review.
The short version
Nightly asks you questions about your sleep to build a program for you. Those answers stay with us. We never sell them and we never send them, your score, or anything about your health to advertisers.
Everything we collect
Below is every field we store, table by table, and why. If a field is not listed here, we do not collect it.
Your account
Created when you set a password after purchase.
- id
- Your account id.
- To sign you in and send your plan and receipts.
- funnel_key
- Which program you joined.
- timezone
- To show your sleep window in local time.
- first_name
- Optional, to address you by name.
- stripe_customer_id
- Links your account to your Stripe billing record.
- role
- Whether you are a member or staff.
- marketing_consent
- Whether you agreed to tips emails.
- marketing_consent_at
- When you agreed.
- unsubscribed_at
- When you opted out of tips emails.
- created_at
- When the record was created.
- updated_at
- When the record last changed.
Your quiz answers
What you tell us in the quiz, used only to build and adapt your plan. Never shared with advertisers.
- id
- Record id.
- funnel_key
- Which quiz you took.
- quiz_version_id
- Which version of the questions you saw.
- anon_id
- A random id in a cookie so we can connect your quiz to your purchase without an account.
- user_id
- Your account, once you create one.
- The email you entered after your results.
- answers
- Your answers to each question.
- facts
- Values derived from your answers, such as your sleep window.
- score
- Your sleep score.
- segments
- Which patterns your answers matched.
- safety_flags
- Whether your answers suggested seeing a doctor first.
- routed_to
- Whether you saw results or the talk-to-a-doctor screen.
- experiment_assignments
- Which version of a screen you saw, for testing wording.
- utm
- The campaign link you arrived from.
- last_step_id
- Where you were if you stopped partway.
- started_at
- When you started.
- completed_at
- When you finished.
- converted_at
- When you purchased.
- ip_hash
- A one-way hash of your IP address, for abuse prevention.
- user_agent
- Your browser type, for fixing display problems.
- created_at
- When the record was created.
- updated_at
- When the record last changed.
Your agreements
A record of what you agreed to and when, kept for at least three years as the law requires.
- id
- Record id.
- funnel_key
- Which program.
- anon_id
- Your cookie id at the time.
- user_id
- Your account, once created.
- quiz_response_id
- The quiz this purchase came from.
- kind
- What was agreed: auto-renewal terms, terms of use, health notice, or marketing.
- offer_key
- The plan you chose.
- text_version
- Which wording of the agreement you saw.
- text_snapshot
- The exact wording you agreed to.
- price_snapshot
- The prices and dates shown to you.
- accepted_at
- When you ticked the box.
- ip_hash
- A one-way hash of your IP address at the time.
- user_agent
- Your browser type at the time.
- checkout_session_id
- The Stripe checkout this agreement led to.
- created_at
- When the record was created.
Your plan and billing
Mirrors what Stripe knows about your subscription. We never see your card number.
- id
- Record id.
- funnel_key
- Which program.
- user_id
- Your account, once created.
- anon_id
- Your cookie id at purchase.
- The email used at checkout.
- offer_key
- The plan you chose.
- stripe_subscription_id
- Stripe's id for your subscription.
- stripe_customer_id
- Stripe's id for you as a customer.
- checkout_session_id
- Stripe's id for the checkout.
- status
- Trialing, active, cancelled and so on.
- trial_start
- When your trial started.
- trial_end
- When your trial ends.
- current_period_start
- Start of the paid period.
- current_period_end
- End of the paid period.
- cancel_at_period_end
- Whether you asked to cancel.
- canceled_at
- When you cancelled.
- cancellation_reason
- The reason you gave, if any.
- consent_id
- The agreement this subscription rests on.
- amount_cents
- The renewal price.
- currency
- The currency.
- interval_weeks
- How often it renews.
- metadata
- Which pricing screen you saw and the tracking id for the purchase.
- created_at
- When the record was created.
- updated_at
- When the record last changed.
Your sleep log
What you log each morning and evening, used to adapt your plan.
- id
- Record id.
- user_id
- Your account.
- plan_id
- Which plan the entry belongs to.
- local_date
- The night it refers to.
- kind
- Morning or evening entry.
- bedtime
- When you got into bed.
- lights_out
- When you tried to sleep.
- sleep_latency_min
- How long it took to fall asleep.
- awakenings
- How many times you woke.
- wake_after_sleep_onset_min
- Minutes awake during the night.
- wake_time
- When you woke for the day.
- out_of_bed
- When you got up.
- quality_1_5
- How rested you felt.
- caffeine_after_cutoff
- Whether you had caffeine after your cutoff.
- alcohol_units
- Drinks that evening.
- notes
- Anything you chose to write.
- time_in_bed_min
- Calculated from your entries.
- total_sleep_min
- Calculated from your entries.
- sleep_efficiency
- Calculated from your entries.
- night_score
- Your nightly sleep score, calculated from your entries.
- created_at
- When the record was created.
- updated_at
- When the record last changed.
Your daily checklist
Which items on each day's checklist you ticked, so the app can show today's progress and your streaks.
- id
- Record id.
- user_id
- Your account.
- plan_id
- Which plan the day belongs to.
- day_number
- Which day of the program.
- task_key
- Which checklist item, such as the wind-down or the day's read.
- completed_at
- When you ticked it.
How you move through the site
Screen names and which version of a screen you saw. Never your answers or scores.
- id
- Record id.
- funnel_key
- Which program.
- anon_id
- Your cookie id.
- user_id
- Your account, once created.
- name
- The screen or action, such as quiz started.
- props
- The step or screen version, nothing about your health.
- created_at
- When it happened.
Advertising measurement
For the three events we report to Meta (checkout started, subscribed, purchased) we store an id so each is counted once. We never send quiz answers, scores or health details to Meta.
- event_id
- A random id that lets Meta match the browser and server copies of one event.
- name
- Which of the three events.
- anon_id
- Your cookie id.
- value_cents
- The amount paid.
- currency
- The currency.
- pixel_fired_at
- When the browser reported it.
- capi_sent_at
- When our server reported it.
- capi_response
- Meta's acknowledgement.
- created_at
- When the record was created.
Extras you were offered
The optional extras shown after checkout, and whether you added, skipped, or could not be charged for each.
- id
- Record id.
- funnel_key
- Which program.
- user_id
- Your account, once created.
- anon_id
- Your cookie id at purchase.
- subscription_id
- The plan the extra was offered with.
- upsell_key
- Which extra.
- status
- Shown, added, skipped, failed, or refunded.
- stripe_payment_intent_id
- Stripe's id for the charge, if you added it.
- amount_cents
- What you paid for it.
- variant_key
- Which order the extras were shown in, for testing.
- created_at
- When the record was created.
- updated_at
- When the record last changed.
Your partner seat
If you bought the partner plan: who you invited and whether they joined. The partner gets their own account and their own log.
- id
- Record id.
- subscription_id
- The plan the seat belongs to.
- owner_user_id
- The account that bought the seat.
- partner_email
- The email the invite went to.
- invite_token
- A signed value that makes the invite link work once.
- invited_at
- When the invite was sent.
- partner_user_id
- The partner's account, once they join.
- claimed_at
- When they joined.
- created_at
- When the record was created.
- updated_at
- When the record last changed.
Emails we sent you
Which emails went out and whether they were delivered.
- id
- Record id.
- to_email
- Your address.
- user_id
- Your account, if any.
- template_key
- Which email.
- kind
- Account email or marketing email.
- resend_id
- The delivery provider's id.
- status
- Sent, delivered or failed.
- sent_at
- When it was sent.
Who else sees data
- Stripe processes payments. We never see your card number.
- Supabase hosts our database in the United States.
- Vercel hosts the website.
- Resend delivers our emails.
- Anthropic rewrites the wording of your plan from the reviewed templates we select. It receives the template text and a few plain facts such as your sleep window, never your raw answers.
- ElevenLabs voices the wind-down audio from fixed scripts. It receives no information about you.
- Meta receives three events for advertising measurement: checkout started, subscribed, and purchased, with a hashed email and the amount. It never receives quiz answers, scores or health details.
Cookies
One cookie holds a random id that connects your quiz to your purchase without an account. One holds your finished quiz so your results page can load. Signed-in members have a session cookie. The Meta pixel sets its own cookies only on our production site, and only once it is enabled.
Your choices
- Cancel any time in your account; access continues to the end of the paid period.
- Unsubscribe from tips emails with the link in every one. Account emails such as receipts still arrive.
- Ask us to delete your account and quiz answers by emailing support@nightlyplan.com. Records of what you agreed to are kept as the law requires, with your identity removed.
Contact
support@nightlyplan.com