Skip to content

Legal

Privacy Policy. Written from what the code does.

Setupp asks for access to your calendar, so you are owed a precise answer about what happens to it. This page gives one. Every claim here matches the database schema, the Google Calendar client and the scoring code that ship in the product today.

Effective
12 August 2026
On this page

1.Who we are

Setupp is a meeting scheduling product at usesetupp.com. It puts an intake form in front of your calendar, can decline a booking that does not fit, invites every host on a meeting as an equal attendee, and rates each booking that gets through.

This policy covers the Setupp marketing site, the Setupp dashboard, the public booking pages Setupp serves on behalf of its customers, and the embeddable booking widget. Contact us about anything in it at support@usesetupp.com.

Two kinds of people appear in this policy

  • Customers are the people who sign up for a Setupp workspace, add hosts and connect a calendar. For their account and calendar data, Setupp decides how the data is handled and is responsible for it. In GDPR language, we are the controller.
  • Bookers are the people who fill in an intake form and book a meeting with a customer. For that data the customer is in charge and Setupp acts on their instructions. In GDPR language, the customer is the controller and Setupp is the processor. If you are a booker and want something removed, the fastest route is the organisation whose page you booked on. Email us anyway if that goes nowhere.

Check you are looking at the right app

The Google consent screen that asks you to connect a calendar is for the app named Setupp, on the domain usesetupp.com, served from the Google Cloud project setupp-505314 in the usesetupp.com organisation, with support@usesetupp.com as its support address. If a consent screen asking for your calendar says anything else, it is not us.

2.What Setupp collects

Four categories, and nothing outside them, with two exceptions named at the end of this section. If it is not on this list, there is no column for it in the database.

Setupp is pre-launch, so parts of this describe data the product is built to hold from the moment workspaces open. Sign-in is the main one, and it is not switched on yet. Where something is not running today, this page says so at that point rather than describing it as though it were.

Account and workspace data

  • Your email address, and the authentication record created for it when you sign in.
  • Your workspace: its name, its URL slug, its plan, and any brand settings you choose (an accent colour, a font and a logo URL used to style your booking page).
  • Who is in the workspace and what role they hold: owner, admin or member.
  • Each host you add: name, email address, job title, avatar URL, time zone, and whether they are currently active.
  • Your configuration: event types and their durations, buffers and notice periods; availability schedules and date overrides; the questions on your intake forms; your qualification rules; and your scoring profiles, including the ideal-customer paragraph and criteria you write.

Host calendar data, from Google

  • Free/busy windows for each connected calendar: the start and end times of blocks when a host is busy. No titles, no guests, no descriptions, no locations, no attachments. These windows are used to compute availability inside the request that asked for it and are not written to the database.
  • The events Setupp itself creates: we store the Google event id and the Meet link on the booking, so the event can be updated or cancelled later.
  • The email address of the connected Google account, used to label the connection in your dashboard.
  • The OAuth access and refresh tokens that authorise those two things, plus their expiry and the scopes granted.

Data the booker submits

  • Their name and email address.
  • Their company, when your form asks for it.
  • Every answer to your intake form, stored exactly as submitted.
  • The time they chose and the time zone they chose it in.
  • Whether the submission tripped a rule you marked as a flag rather than a block.
  • The state of the booking (confirmed, cancelled, rescheduled, completed or no-show), and a random token generated so a cancellation link can identify the booking without exposing anything else.

If a booker is declined by a blocking rule, nothing about the person is written down. Their name, their email, their company and every answer they gave are checked in memory, the request is refused, and they are discarded. Not hashed, not kept in any form, because a hashed email is still an identifier.

What is recorded is the decision: which event type, which of the customer’s own rules said no, and when. That is what lets an operator see “thirty-two people were turned away by the budget question” and reconsider the question. It cannot be traced to anybody, because there is nothing in the row to trace. See declined_attempts in the exception at the end of this section.

Data Setupp derives

  • The Setupp Score: a number from 0.0 to 10.0, its band, a short paragraph of written reasoning addressed to the host, and one signal per scoring criterion with a value and a one-line note. We also store which engine produced it, so you always know whether a model or the deterministic fallback wrote it.
  • Email delivery records. For each message Setupp tries to send: the recipient address, which template it was, the provider’s message id, whether it succeeded, any error, and the time.

What Setupp does not collect

  • No payment card details, ever. Card data goes to the payment processor and never reaches Setupp. There is no column for it and no code that could read one.
  • No advertising or tracking pixels, no device fingerprinting, no session recording, and no advertising cookies. There is one analytics script: Google Analytics, described in its own section below. It is set to deny every advertising and identification purpose before it loads.
  • IP addresses are read from request headers to rate-limit the public booking endpoints. They are held in the running server process for the length of the rate-limit window (a minute) and are never written to the database.
  • No special categories of personal data, unless a customer's own intake form asks for them. If a form asks, that is the customer's decision and the customer's responsibility.

The two exceptions to the four categories

Two tables are named here rather than folded into one of the four, because neither is about a person. Both are listed in full.

  • billing_events: one row each time a workspace’s plan changes. It holds the workspace id, the plan it moved to, the reason, the name of the payment processor, that processor’s own reference for the event, and the time. No amount, no card, no billing address and no customer name.
  • declined_attempts: one row each time a qualification rule turns somebody away. It holds the workspace id, the event type id, the ids and question keys of the rules that blocked, and the time. No name, no email address, no company, no answers, and no hash or fingerprint of any of them. There is no column a person could be identified from, which is a stronger promise than a policy of not filling one in.

The first exists so a plan change can be proved and reversed; a webhook that silently upgraded a workspace with no record of who sent it would be worse for you than that row is. The second exists so a customer can see which of their own questions turns people away, and it is designed so that answering that question never requires knowing who those people were.

3.Google user data and Limited Use

Setupp requests three Google scopes and no others. Here they are verbatim, with the reason for each one.

https://www.googleapis.com/auth/calendar.readonlyAvailability
Authorises the free/busy read on the calendar you connect. This is how Setupp knows a host is genuinely free before it offers that time to anyone. In practice the only Calendar read Setupp performs is freebusy.query, which returns start and end times and nothing else.
https://www.googleapis.com/auth/calendar.eventsThe meeting
Lets Setupp create the single calendar event for a booking, attach a Google Meet link to it, and update or delete that same event when the meeting is rescheduled or cancelled. Without it there is no meeting on anyone’s calendar.
https://www.googleapis.com/auth/userinfo.emailThe label
Reads the email address of the Google account being connected, so the dashboard can show you which account is connected and so reconnecting the same account replaces it in place instead of creating a duplicate.

What Setupp reads

Availability comes from a single call: freebusy.query. Google answers it with a list of busy start and end times. It does not return event titles, guest lists, descriptions, locations or attachments, and Setupp does not ask for them anywhere else in the product. Setupp never opens, lists or reads the contents of an event it did not create.

Free/busy is read for exactly one purpose: computing the times when every required host on an event type is free at once. The result renders the calendar on your booking page and is checked again at the moment someone books, so a slot that has since been taken cannot be double-booked. Setupp does not keep a copy of your calendar.

What Setupp writes

One event per booking, on the connected calendar. Every host is a full attendee on it, the booker is on it too, and Google sends the invitations, the updates and the cancellations itself.

Each event Setupp creates carries a private marker: extendedProperties.private.setuppBookingId. Any later update or cancellation is matched on the event id Setupp stored for that booking. Setupp does not read, modify or delete any other event on your calendar. There is no code path in the product that can.

Google API Services User Data Policy

Limited Use

Setupp’s use and transfer of information received from Google APIs to any other app will adhere to the Google API Services User Data Policy, including the Limited Use requirements. In plain terms:

  • Google user data is used only to provide and improve the scheduling features you consented to when you connected the calendar: computing availability, creating and updating the meeting, and generating its Meet link.
  • Google user data is never sold, and it is never transferred to anyone for their own purposes.
  • Google user data is never used for advertising, ad targeting, ad measurement, or to build a profile of anyone. Setupp has no advertising business.
  • Google user data is never used to develop, improve or train generalised artificial intelligence or machine learning models, whether ours or anyone else's. It is never sent to Anthropic or to any other AI provider.
  • No human at Setupp reads your Google user data, except with your explicit consent, where it is necessary for security purposes such as investigating abuse or a suspected breach, or where we are required to by law.

The only third parties that ever hold Google user data are Supabase, which stores the OAuth tokens and the ids of the events Setupp created, and Resend, which delivers the confirmation email containing the meeting time and its Meet link to the people you asked us to email. Free/busy windows are never written to the database and never leave the request that computed them.

Taking access away

You can withdraw Setupp’s access to your Google account at any time at myaccount.google.com/permissions. That stops Setupp reading free/busy or writing events immediately, and makes the stored tokens useless. Events already on your calendar stay where they are, because they are yours.

Not built yet

There is no Disconnect button in the Setupp dashboard yet. Revoking at Google is the immediate route and it works today.

To have the stored token row itself deleted, email support@usesetupp.com from the address on the connection and we will remove it. See section 8.

4.What Setupp never does

Six commitments. They are listed separately from everything above because they are the ones worth checking us against.

  • We never sell your data. Not to a data broker, not to a lead vendor, not to anyone. There is no version of Setupp in which your calendar becomes somebody else’s dataset.
  • We never use it for advertising. No ad network, no pixel, no retargeting audience, no profile building.
  • We never train models on your data. Not on calendar data, not on bookings, not on intake answers. Setupp does not fine-tune anything and does not feed customer data back into any model.
  • We never read an event Setupp did not create. Availability is busy times only. The rest of your calendar is not our business.
  • We never send an OAuth token to a browser. Tokens are read on the server, by the server, to call Google.
  • We never show a booker their Setupp Score. The score, its reasoning and its signals go to the host and nowhere else.

5.Who else touches your data

Setupp runs on nine services. This is the complete list. Supabase, Resend and Anthropic receive data on every deployment. Google Analytics sees only public marketing pages, and never a booking page or a dashboard. The rest receive data only for the calendars, conferencing, channels and CRM a customer chooses to connect, and a workspace that connects none of them sends them nothing.

Supabase Inc.AWS ap-south-1 · Mumbai
The Postgres database and the authentication system. Supabase holds everything in section 2 that is stored at all: your account, your workspace and its configuration, your hosts, bookings, intake answers, Setupp Scores, email delivery records, and the Google OAuth tokens.
Resend, Inc.Transactional email
Delivers the emails Setupp sends: the booker’s confirmation with its calendar file attached, and the notification to each host. Resend receives the recipient address and the full content of the message. For a host email, that content includes the booking details, the intake answers and the Setupp Score with its written reasoning.
Anthropic PBCSetupp Score reasoning
Generates the written reasoning and the per-criterion signals behind the Setupp Score. Exactly what is sent is listed below, because “we use AI” is not a disclosure.
Google LLCCalendar and Meet
Provides calendar availability, hosts the event Setupp creates, and generates the Google Meet link on it, for every host who connects a Google account. Google also sends the calendar invitations, the updates and the cancellations, from its own systems.
Microsoft CorporationOutlook Calendar and Teams
The same role as Google, for every host who connects a Microsoft account instead. Microsoft receives the event with the booker and every attending host as attendees, reads those hosts’ free/busy to work out what to offer, and generates the Teams link where the event type asks for one.
Zoom Communications, Inc.Meeting links
Only for event types whose location is set to Zoom. Zoom receives the booker’s name in the meeting topic, the start time and duration, and, in the meeting agenda, the booker’s answers to the intake form. Fields the customer marked private are excluded, the same way they are excluded from the model prompt.
Google Analytics (Google LLC)Page traffic on the marketing site
Counts visits to the public pages: which page, referrer, approximate location from a truncated IP, and device type. It runs with Consent Mode set to denied until a visitor says otherwise, which means no cookie and no identifier that links one visit to the next. It is not present on booking pages, on the embed, or anywhere inside a workspace dashboard. A booker answering your intake form is never measured by it.
HubSpot, Inc.CRM sync
Only for workspaces that have connected a HubSpot portal. Setupp creates or updates a contact from the booker’s email address, name and company, writes any intake answers the customer has mapped onto their own HubSpot properties, and attaches a note containing the Setupp Score, its written reasoning and the non-private answers. Fields the customer marked private on the intake form are removed before anything is sent. Setupp writes contacts and notes only: never deals, companies or pipeline stages.
Slack Technologies, LLCBooking notifications
Only for workspaces that have connected a Slack channel. Each notification carries the booker’s name, their email address, their company if the form captured one, the event type and time, and the Setupp Score with its band. It is posted to whichever channel the customer chose, and everyone in that channel can read it.

Exactly what Anthropic receives

When a booking is confirmed on an event type that has a scoring profile, Setupp sends one request to the Anthropic API. It contains:

  • The workspace's scoring criteria and the ideal-customer paragraph the customer wrote.
  • The booker's answers to the intake form, each with the label of the question it answers. Fields the customer marked private on the form are stripped out before the prompt is built and never reach the model.
  • The booker's name, their company if the form captured one, the title of the event type and how long it is.
  • How many qualification flags the submission tripped, as a number.

That is the whole payload. Setupp does not send the booker’s email address, any calendar or free/busy data, any OAuth token, or anything about any other booking. If your own intake form asks a question whose answer contains personal information, that answer is part of the payload. You decide what your form asks.

These requests go to Anthropic’s commercial API, under terms in which inputs and outputs are not used to train Anthropic’s models. Setupp runs no training or fine-tuning of its own. If the Anthropic integration is unavailable or the call fails, Setupp falls back to a deterministic rules engine that runs entirely on our own server and sends nothing anywhere. The score card tells you which engine produced the number.

Where your data is stored

The database is hosted by Supabase in Amazon Web Services’ ap-south-1 region, in Mumbai, India. Resend, Anthropic and Google process data on their own infrastructure, which for those three includes the United States. If you or your bookers are in the UK or the EEA, that is a transfer outside your region.

We use each provider under the data processing terms they publish. We have not negotiated bespoke agreements with any of them, and we are not going to pretend otherwise.

6.How the data is protected

What follows is what actually protects the data, described as it is implemented rather than as a list of adjectives.

  • Row-level security on every table that holds customer data, with policies keyed to workspace membership. A signed-in user cannot read another workspace’s rows even with a valid token, because the database itself refuses.
  • Tokens live in a table with no read policy at all. The calendar_connections table, which holds Google access and refresh tokens, grants no select to the anonymous key or to any signed-in user. Only the server, using the service role, can read a token, and it does so only to call Google.
  • No token is ever sent to a browser. No API route returns one and no page renders one. The dashboard shows the connected account’s email address, the calendar id, and when the token next refreshes. That is all it has.
  • The public booking path is narrow by construction. Booking pages read through database functions that return only what the page needs. An anonymous visitor cannot enumerate bookings, intake answers or Setupp Scores.
  • Connecting Google is protected against request forgery by a one-time nonce held in an httpOnly, SameSite=Lax cookie that is checked and then deleted on the way back from Google.
  • Public endpoints are rate limited per IP address, and the whole site and API are served over HTTPS.

And what we do not claim

  • Setupp holds no security certification. Not SOC 2, not ISO 27001, not HIPAA. Do not put protected health information into a Setupp intake form.
  • OAuth tokens are stored as Google issues them. The application does not encrypt them a second time before writing them. They are protected by the access controls above, and by whatever storage-level encryption our database provider applies. That is their control, not ours, and we will not claim it as ours.
  • Setupp is a young product built by a small team. If a breach affects your data we will email the workspace owners with what we know, what we are doing, and what you should do.

7.Cookies

Setupp sets four cookies of its own, all of them the same cookie doing the same job for a different provider, and all of them there to keep you safe rather than to watch you. Google Analytics may set a fifth, and only if you have said it can. See below.

  • setupp_gcal_state, setupp_msal_state, setupp_slack_state and setupp_zoom_state: one per provider, set only while you are away at that provider’s consent screen. Each holds a random nonce, is httpOnly and SameSite=Lax, exists to stop request forgery, and is deleted the moment you come back. You will only ever see the one for the provider you are connecting.

There is no advertising cookie and no third-party tracking cookie anywhere in Setupp. The embeddable booking widget mounts into the host page’s own DOM and sets no cookies of its own.

Google Analytics, and the one cookie it may set

The public marketing pages run Google Analytics. It loads with Google Consent Mode set to deny analytics storage, advertising storage, ad user data and ad personalisation. That default is registered before the Google library loads, not after, which is the difference between a default that applies and one that arrives too late to matter.

  • If you decline, or ignore the prompt: no cookie is set. Google receives a cookieless ping (a page address, a referrer, a coarse location from a truncated IP) with nothing that links this visit to any other. We learn that a page was read. We do not learn that you read it.
  • If you accept: Google sets its _ga cookie so repeat visits count as one person rather than several. Advertising storage and personalisation stay denied either way. That is not a preference we offer, because we do not advertise.

Analytics runs on the marketing pages only. It is absent from every booking page, from the embedded widget and from every dashboard, so nothing a booker types, and nothing a customer configures, is ever measured by it. Your choice is stored in your own browser under setupp.consent.v1, is never sent to us, and clearing your site data resets it.

Not built yet

Workspace sign-in is not switched on yet. When it is, Supabase Auth will set a session cookie so that you stay signed in to the dashboard.

That cookie will be strictly necessary: without it there is no dashboard. It will not track you across sites, and we will not add any other cookie without updating this page first.

8.Keeping data, and deleting it

We keep workspace data for as long as the workspace exists. There is no automatic expiry job today: bookings, intake answers, Setupp Scores and email records stay until somebody deletes them.

Deleting a workspace deletes everything that hangs off it: hosts, calendar connections including the Google tokens inside them, event types, intake forms and their rules, scoring profiles, availability schedules, bookings, the intake answers on those bookings, and the Setupp Scores. Those relationships are declared in the database itself, so a deletion follows the data rather than depending on a cleanup script that might miss a table.

One exception, stated because it is true: the email delivery log keeps a row for every message Setupp tried to send, holding the recipient address, the template name, the delivery status and the time. Deleting a booking or a workspace unlinks those rows but does not remove them. Ask us and we will delete them too.

Not built yet

Self-serve deletion is not built. There is no Delete workspace button and no Disconnect calendar button in the dashboard today.

Until there is: email support@usesetupp.com from the workspace owner’s address and tell us what to remove: one calendar connection, one booking, or the entire workspace. We will confirm what was deleted, and we aim to complete deletion requests within 30 days.

To cut Google access off immediately, without waiting for us, revoke Setupp at myaccount.google.com/permissions.

Backups

Our database provider keeps its own backups on its own schedule. A deleted row can persist in those backups until they roll over. We have no mechanism to reach into a provider backup and remove a single row, and we are not going to imply we do.

If you are a booker

If you booked a meeting through a Setupp page and want your data removed, ask the organisation you booked with first. It is their workspace and their data to delete. You can also email support@usesetupp.com and we will pass the request on and help them action it.

9.Your rights over your data

Wherever you live, you can ask us to give you a copy of the personal data we hold about you, correct it if it is wrong, export it in a machine-readable format, delete it, or stop a particular use of it. Email support@usesetupp.com. We will not charge you for it and we will not make it difficult.

If you are in the UK or the EEA, those rights come from the UK GDPR and the GDPR, and you also have the right to object to certain processing and the right to complain to your data protection authority. We answer the same requests the same way for everyone, wherever they live, because operating two standards would be worse than operating one.

Why we are allowed to process it

  • Customer account and workspace data: to perform the contract we have with you.
  • Google calendar data: your consent, given on Google's consent screen, which you can withdraw at any time.
  • Rate limiting and abuse prevention: our legitimate interest in keeping the service available.
  • Booker data: the customer whose booking page it was decides the basis for it. Setupp acts on their instructions.

Automated decisions

Two things in Setupp are automated and worth naming plainly. Qualification rules can decline a booking with no human involved; those rules are written by the customer and are the customer’s responsibility. The Setupp Score is generated after a booking is already confirmed, is shown only to the host, is never used to decline anyone, and is never shown to the booker.

What we are not

Setupp is not certified under GDPR. No such certification exists in the way vendors sometimes imply. We have not completed a SOC 2 audit or an ISO 27001 audit, and we hold no HIPAA attestation. This page is a description of how the product behaves and a commitment about how we will behave. It is not a badge, and you should not treat it as one.

10.Children

Setupp is a business tool. It is not intended for anyone under 16, and we do not knowingly collect personal data from anyone under 16. If you believe a child has submitted data through a Setupp booking page, email support@usesetupp.com and we will delete it.

Customers must not use Setupp to collect personal data from children through their booking pages.

11.Changes to this policy

We update this page when the product changes, and we change the effective date at the top when we do. If a change materially affects how we handle Google user data or booker data, we will email workspace owners before it takes effect rather than expecting anyone to re-read the page and spot the difference.

Continuing to use Setupp after a change takes effect means you accept the updated policy. If you do not, section 8 tells you how to have your data deleted.

12.Contact

One address, read by the people who built the product: support@usesetupp.com. Use it for questions about this policy, for access, correction, export or deletion requests, and for anything about the Google integration.

Not built yet

The legal entity behind Setupp and its registered address are not published here yet. When Setupp is incorporated, the entity name and address will be added to this section.

A privacy policy that does not name its controller is incomplete. We would rather say so than print a placeholder that reads like a fact.