Data deletion

Last updated: October 2026

Fresh Sheets is a product of Virgo Analytics Ltd, which operates the service. This page explains exactly what Fresh Sheets stores about you, what it never stores, and how to have the stored records deleted. For the fuller picture of how your data is accessed and protected, see the Privacy Policy.

Who we are

  • Registered name: Virgo Analytics Ltd
  • Company number: 17397765
  • Registered in England and Wales
  • Registered office: 2 Parkstone Avenue, Poole, BH14 9LR
  • ICO registration number: ZC247204 (UK Information Commissioner’s Office)
  • Contact: info@virgo-analytics.co.uk

What Fresh Sheets stores

  • Your account identity. A stable account identifier from Google (the subject ID your Google sign-in provides) and the email address on that Google account, and, if we have set your plan by hand, that plan. If you sign in with Microsoft, your account's object ID, your organisation's tenant ID and your verified email address are deleted. Microsoft isn't told. To remove Fresh Sheets from your Microsoft account, revoke its consent at myapps.microsoft.com, or ask your IT administrator.
  • Your connection. An encrypted copy of the OAuth refresh token that lets Fresh Sheets read your data on your behalf, which permissions you granted, when you connected, and whether the connection has since been revoked. A short-lived access token is also cached, encrypted, between refreshes, and is cleared as soon as you disconnect. For a source you connect with an API key or app credentials, such as Klaviyo or Shopify, an encrypted copy of what you pasted in, and the name and identifier of the account or store it belongs to. For TikTok and Meta, which you connect by signing in with them, the access each gives Fresh Sheets is encrypted the same way, with the names of the ad accounts it reaches, read back when you connect, and for Meta the time that access ends, where Meta gives one. For Microsoft, which you connect for Microsoft Excel, the access Microsoft gives Fresh Sheets (a long-lived token and the short-lived access token made from it), encrypted the same way, with the address and identifier of the Microsoft account, read from Microsoft when you connect, and which permissions Microsoft reported you granted.
  • A record that keeps the sidebar connected. So the sidebar can recognise your connection when you reopen it, Fresh Sheets stores a one-way hash of the credential kept in your browser, when it was created and last used, and when it expires, which is 180 days after it was last used. It is deleted when you disconnect.
  • A record that the sidebar was opened. So we can count how many installs reach a working report, Fresh Sheets stores a one-way hash of each spreadsheet's identifier, with when it was first and last opened. It is stored whether or not anyone connects a Google account. If people with Fresh Sheets accounts use the sidebar there, it is linked to one of their accounts. It holds no email address, no name and nothing about your reports, though it can be matched to a spreadsheet one of your reports writes to. Deleting your account removes that link but not the record. It is deleted 12 months after the spreadsheet was last opened.
  • Your saved reports. For each report: the name you gave it, which source it uses (Google Analytics, Google Ads, Search Console, Klaviyo, Shopify, Mailchimp, TikTok Ads, Meta Ads, Apple Ads or Microsoft Advertising), which account or property it queries, the dimensions and metrics you chose, its date range as you set it (a relative range, fixed dates, or the cells it reads the dates from), any filters, including the values you entered in them, for a Google Ads, Apple Ads, Microsoft Advertising, Meta Ads or TikTok Ads report the level it reports at, for a Klaviyo or Shopify report which report type it is, for a Klaviyo report which event counts as a conversion, for a Google Analytics report the name and type of each field it uses that is not in Fresh Sheets's built-in list, its schedule, whether it is paused because your plan runs fewer scheduled reports and when you were told, and where it writes, meaning the spreadsheet, the tab, the starting cell, how many rows and columns it last wrote, and a cached copy of the spreadsheet's name so the report list can identify it without calling Google, and, for a report that writes to an Excel workbook, Microsoft's identifiers for the workbook and its worksheet, their names, and the workbook's web address.
  • A cached list of the fields a property offers. Google Analytics 4 lets each property define its own custom dimensions and metrics, so there is no fixed list of fields that is true for everyone. Fresh Sheets asks Google which fields your property has and keeps the answer so it does not have to ask again every time you open the field picker. Nothing fetches it in the background. The copy is replaced when it is more than a day old and you next open the field picker, so it can be considerably older than a day. If Google cannot be reached at that moment, the copy we already have is kept and reused rather than leaving you with an empty picker. A dimension or metric you have just created may therefore not appear straight away, and the refresh button in the field picker fetches it immediately. It is a list of field names, their descriptions and their categories, exactly as Google supplies them. It contains none of your figures. It is deleted when you disconnect that Google account.
  • A cached list of the events a Klaviyo account records. Klaviyo counts a conversion against an event you choose, and each Klaviyo account defines its own events, so there is no fixed list that is true for everyone. Fresh Sheets asks Klaviyo which events your account records and keeps the answer so it does not have to ask again every time you open a report. Nothing fetches it in the background. The copy is replaced when it is more than a day old and you next open a Klaviyo report. If Klaviyo cannot be reached at that moment, the copy we already have is kept and reused rather than leaving you with an empty picker, and the picker says the list may be out of date. It is a list of Klaviyo's own identifier for each event, its name and the integration that records it, exactly as Klaviyo supplies them. It contains none of your figures. It is deleted when you remove or replace that Klaviyo key, and when your account is deleted.
  • Your BigQuery datasets. If you send reports to BigQuery, the datasets you've added (their project, name and location), your account's freshsheets label value, which table each report writes to with its column names and types, and whether each write worked, how many rows it sent, and any error text.
  • Your refresh history. For each run: when it happened, whether it was scheduled, started by you or requested by an AI tool you connected, whether it succeeded, how many rows were written or returned, and, if it failed, the error text. For a request from an AI tool, also the identifier of the account it read. That error text can quote the name of a tab, a message returned by Google, Klaviyo, Shopify, Mailchimp, TikTok or Meta, an error code returned by Microsoft, a Shopify order number, a Shopify store address, the identifier of a Klaviyo or Mailchimp account, or an account identifier given in an AI tool's request.
  • When we last emailed you about a problem. The date of the last failure alert for each report, of the last notice that your account had reached its plan's allowance, and of a notice, until it clears, that your scheduled reports could not refresh because of your Google account's access, another account you connected stopping Fresh Sheets' access, the Microsoft account a workbook is written through, or a Google usage limit, with the connection or property it was about, so the same email is not sent twice.
  • Your 30 days of free Plus. When they started and when they end, whether choosing a paid plan ended them early, which scheduled report you chose to keep running on the Free plan afterwards, and which reminders we have sent before they end.
  • A record of each AI tool you allowed to connect. Each time you approve one: when, the accounts you were shown and which version of the wording you saw. Deleted with your account.
  • Your choice about product news by email. Each time you answer the question, or skip it in the sidebar: what you chose, where you chose it, which version of the wording you saw, and when.
  • Records of the emails we've sent you, and of any time we opened your account in our support tools, are deleted with your account. Email records are kept for up to 90 days, apart from a record that your address bounced permanently or marked our email as spam, which is kept until your account is deleted so we don't email it again.
  • Whether your account's creation still needs to be reported to Google Analytics, so it is reported at most once. Deleted with your account.
  • When you first saw a preview of your own data in the report builder, whether you have finished the setup steps on Home, and whether we have sent you the reminder to connect a source, so it is sent once. Deleted with your account.
  • A daily count of manual runs. How many times you started a report by hand on each day, which is what the fair use limit on manual refreshes counts.
  • Counts of the report previews you've run, by minute and by day (UTC), per account and per Klaviyo connection, the time of your last Klaviyo preview, and how many requests your connected AI tools made in each hour (UTC), to apply those limits. Older counts are removed the next time you preview or an AI tool makes a request, and all of it is deleted with your account.
  • A single-use sign-in code for the report builder in your spreadsheet, stored scrambled. It stops working after two minutes.
  • A record of sign-ins that did not complete. When a sign-in comes back from Google or Microsoft with an error, or fails as we finish it: when it happened, which provider it was, the stage it stopped at, the error if it is one on our fixed list or a numeric Microsoft sign-in code, and whether the sign-in appears to have started on our page. It holds nothing that identifies a person, so it is not linked to your account and is not removed when you delete it. It is deleted after 90 days.
  • A record that a deletion ran. Each time a deletion goes ahead, whether it completes or stops partway, Fresh Sheets keeps the account's internal identifier, a random value Fresh Sheets assigns, the time, and the outcome of each step. It holds no email address, no name and nothing about your reports. It exists as a record of whether each deletion was carried out, and it is kept with no end date. Deleting your account creates this record rather than removing it.
  • Alerts in our own support inbox, and your emails to us. Any email you send us is kept in our support inbox, which runs on Google Workspace. A few problems also email that inbox rather than you. If an account deletion stops partway, that email carries your account's internal identifier, a random value Fresh Sheets assigns, and the outcome of each deletion step. If a Google usage limit holds back your Search Console reports, it carries that internal identifier, the site's address, the error text the run stored and since when. These emails stay in our support inbox with no end date, and our email provider keeps its copy for 30 days. Deleting your account does not remove them. Alerts also go to that inbox when a billing update from Stripe fails to process, and include the update's ID, type and error.
  • Copies of the emails we send you. Our email provider keeps a copy of each email Fresh Sheets sends you, and its delivery log, for 30 days: your email address and what that email says about your account and reports, as listed in the Privacy Policy's sub-processors table. A copy, including the confirmation that your account was deleted, is removed once its 30 days are up.
  • Runtime logs. The application writes lines to its runtime log at Vercel, which hosts it, when a report runs and when something goes wrong. A line can carry your account's internal identifier, a report's internal identifier, the identifier of the Google Analytics property, Google Ads account, Shopify store address, Klaviyo or Mailchimp account, TikTok ad account, or spreadsheet a report uses, a connection's internal identifier, a report's Excel destination identifier, the identifier of a workbook Fresh Sheets created that went unused, a tab name, your Stripe customer reference, and the text of an error, which can quote a message returned by Google, Klaviyo, Shopify, Mailchimp or Meta, an error code returned by Microsoft, or a value from a request that failed. Vercel also logs each request to the site, including its address. Vercel keeps these logs for a limited period and then discards them, and deleting your account does not remove lines already written.
  • Microsoft Advertising. Microsoft holds what its tag sent from freshsheets.uk: the addresses of the public pages you opened, with any campaign details in them, a random code for each page load, your browser and device details and your IP address, that your account was created, and, if you allowed advertising cookies, the identifiers in them. Deleting your account does not remove it. Microsoft's privacy statement describes how Microsoft handles personal data.
  • Analytics on freshsheets.uk. Google Analytics holds records of your visits to the public site and your account area: the page (in your account area, the kind of page rather than its address), the referring page, browser and device details, your IP address, and the actions the Privacy Policy lists under "Cookies and tracking". If you allowed analytics, they are also linked to a cookie in your browser and, if you were signed in, to your Fresh Sheets account's internal identifier. Google keeps them for 14 months, and deleting your account does not remove them.
  • Your billing records. A reference to your customer record at Stripe, and your subscription status, meaning the plan tier, the billing interval, and the renewal dates. Fresh Sheets also keeps the billing event records Stripe sends it. After your account is deleted, those event records are deleted too, each one once it is more than 30 days old; the check runs every day. Your card details are held by Stripe and never by Fresh Sheets. Stripe also holds your email address and the billing address you give it. Stripe keeps your invoices, so your billing records at Stripe outlive your Fresh Sheets account.
  • Which version of our Terms of Service you accepted at checkout, and when. Recorded when you subscribe to a paid plan, so there is a record of what you agreed to.
  • Short-lived plumbing for connecting. When you connect from the sidebar, Fresh Sheets stores a one-way hash of a single-use token so the sidebar can confirm the connection completed. It carries no identity, it stops working ten minutes after it is created, and it is deleted the next time anyone connects Google.
  • A beta waitlist entry, if you joined the waitlist before having an account. That is the email address you gave, plus the company name and any context you chose to add. It is deleted with your account if it uses your account's email address; under a different address, it stays until you ask us to remove it at support@freshsheets.uk.
  • Your Excel workbooks. For each report that writes to a workbook, the Microsoft connection and account it was chosen under, and whether each write worked, how many rows it wrote, and any error text.

What Fresh Sheets does not store

No marketing data from Google Analytics, Google Ads, Search Console, Klaviyo, Shopify, Mailchimp, TikTok, Meta, Apple Ads or Microsoft Advertising is kept. The permissions Fresh Sheets requests for Google Analytics and Search Console are read only. Google Ads offers no read-only permission: adwords is the only scope Google publishes for its API, and it has no read-only variant. So our access there is registered with Google for reporting only, and our code never issues a write: Fresh Sheets never creates, edits, pauses or deletes a campaign, ad, bid or budget. On each refresh the figures are read from the account you connected and written directly into your own spreadsheet, your Excel workbook, your BigQuery dataset, or more than one of them, and they are not retained in Fresh Sheets's systems afterwards. There is no copy, no cache, and no warehouse of your reporting data.

One related detail, stated so this page matches the system exactly. Fresh Sheets does not keep a copy or a fingerprint of the figures it writes. What protects the rest of your spreadsheet is how reports are set up: each report that writes to your spreadsheet has a tab of its own, and every refresh replaces what is in that tab and nothing outside it, apart from creating the tab in the first place, and the spreadsheet itself when you ask Fresh Sheets to create one. When you point a report at an existing tab in the report builder and Fresh Sheets finds something in it, you are asked to confirm before the report is saved.

A report that writes to an Excel workbook works the same way: it has a worksheet of its own, and every refresh replaces what is in that worksheet and nothing outside it, apart from adding the worksheet, and the workbook itself when you ask Fresh Sheets to create one. When you choose an existing worksheet that already has values in it, you are asked to confirm before the report is saved.

The two cached lists described above are the other detail worth stating plainly here, for the same reason. One comes from your Google Analytics property and one from your Klaviyo account, and the names in both are chosen by whoever set those up, so they can describe your business. Each is a list of what could be reported on. Neither is ever a reported figure, and no refresh result is stored in either.

Fresh Sheets also never writes to your Google Analytics, Google Ads, Search Console, Klaviyo, Shopify, Mailchimp, TikTok Ads, Meta Ads, Apple Ads or Microsoft Advertising accounts. It only ever reads from them.

Revoking access and deleting data are different

These are two separate things, and doing one does not do the other.

You can revoke access yourself, at any time. Go to the Sources page in your Fresh Sheets account and choose Disconnect. Fresh Sheets stops using that Google account straight away, and asks Google to revoke the access. A refresh that is already running when you disconnect can still finish, including writing to its tab. If Google does not confirm the revoke, the Sources page says so at the time. To finish it on Google's side, remove Fresh Sheets at myaccount.google.com/permissions; until then, the access may still exist at Google, although Fresh Sheets will not use it.

You can also revoke from Google's side, at myaccount.google.com/permissions. Fresh Sheets does not hear about that straight away. It records the connection as ended the next time it asks Google to renew its access, which happens when a report runs, an AI tool you connected reads from Google, or you open the sidebar, the report builder or Google's file picker on freshsheets.uk, and at that point deletes the same records a disconnect does. Either way, reports that read from Google or write to Google Sheets stop refreshing.

A TikTok connection is removed on the same page. Choose Remove on the TikTok Ads card: Fresh Sheets stops using it straight away, asks TikTok to end its access, and deletes the access it stored. You can also end it in your TikTok for Business settings, and Fresh Sheets records the connection as ended the next time a report tries to use it. Either way, your TikTok reports stop refreshing.

A Meta connection is removed on the same page. Choose Remove on the Meta Ads card: Fresh Sheets stops using it straight away, asks Meta to end its access, and deletes the access it stored. Your Meta reports stop refreshing.

An AI tool you connected is removed on the Destinations page. Choose Remove under Connected AI tools: it can no longer renew its access, and the access it already has ends within 5 minutes.

Apple Ads: the encrypted tokens and the names of your ad accounts, deleted with your account.

Deleting your account can't end the access at Apple. Use Revoke Access in Apple Ads.

Your Microsoft Advertising tokens and account names are deleted with your account.

Deleting your account doesn't change anything at Microsoft. To remove Fresh Sheets from your Microsoft account too, go to account.live.com/consent/Manage for a personal account. For a work account, use myapps.microsoft.com, or ask your administrator to remove it in Microsoft Entra. Removing it at Microsoft may also end Fresh Sheets' Excel connection for that account.

A Microsoft connection is removed on the Destinations page. Choose Remove on the Microsoft Excel card: Fresh Sheets stops using it straight away and deletes the access it stored. Nothing is sent to Microsoft. To end Fresh Sheets' access on Microsoft's side too, go to myapps.microsoft.com, open the menu on Fresh Sheets, choose Manage your application, then Revoke consent. If Fresh Sheets isn't listed there, ask your organisation's Microsoft administrator to remove it. Either way, Fresh Sheets stops writing to the workbooks it reached; a report that also writes to a spreadsheet keeps refreshing that.

Deleting your account is a separate action, covering every record listed above except these:

  • Records of billing updates Stripe sends us: deleted by a daily clean-up once your account is gone and the update is more than 30 days old, including updates that arrive after the deletion.
  • The record that the sidebar was opened: its link to your account is removed at once, and the record is deleted 12 months after the last open.
  • A record that your account was deleted, kept so we can show the deletion ran.
  • API keys you pasted for Klaviyo, Shopify or Mailchimp: deleted on our side, but they stay valid at those services until you delete them there. For Shopify, also delete the custom app in your Shopify admin.
  • Your BigQuery tables stay in your dataset, and the Fresh Sheets service account keeps its role there until you remove it.
  • A waitlist entry under a different email address from your account's, kept until you ask us to remove it.
  • Access at Google or TikTok, if either doesn't confirm ending it when you delete: remove Fresh Sheets in your Google or TikTok settings.
  • The alerts and emails in our own support inbox, the email provider's copies until their 30 days are up, runtime log lines until Vercel discards them, the analytics Google holds for 14 months, and what Stripe holds.
  • Access at Microsoft: Fresh Sheets sends Microsoft nothing when you delete your account. To end Fresh Sheets' access on Microsoft's side too, go to myapps.microsoft.com, open the menu on Fresh Sheets, choose Manage your application, then Revoke consent. If Fresh Sheets isn't listed there, ask your organisation's Microsoft administrator to remove it.
  • Your Excel workbooks stay in your OneDrive, with everything already written in them.

Deleting your account also asks WorkOS to delete the record it keeps for signing in any AI tool you connected: your account's internal identifier, a made-up email address and the tools you connected.

Revoking access deletes only the records above that say they are deleted or cleared when you disconnect; the rest stay until you delete your account.

Deleting your account removes the datasets you've added and the record of each write. It doesn't touch your BigQuery dataset or any table in it; those are yours. Once your account is deleted, Fresh Sheets can't write to them again, and you can remove its access in Google Cloud.

Deleting your account also removes the record of which workbook each report writes to, and of each write. It doesn't touch your workbooks; those are yours.

How to delete your data

Go to the Settings page in your Fresh Sheets account and choose Delete your account. You confirm by typing your email address, which is how we confirm the request is yours. We send you a confirmation email when it is done, unless your address has bounced permanently or marked our email as spam.

Deleting cancels your subscription immediately. If you subscribed in the last 14 days, you can still claim a refund by email, as our Terms of Service explain. If you want to stop being charged and keep your reports, cancel your plan on the Billing page instead.

If you would rather we did it for you, or you want a copy of your data first, email support@freshsheets.uk from the email address associated with your Fresh Sheets account.

How long it takes

Almost everything is removed at once. Everything kept longer, and how long we keep what we hold, is listed on this page. A request you send by email is answered within 30 days.

Contact

Any questions about this page, or about what Fresh Sheets holds about you: support@freshsheets.uk.