Nightly

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.
email
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.
email
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.
email
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