Data deletion

Last updated: September 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
  • 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.
  • 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.
  • 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.
  • Your saved reports. For each report: the name you gave it, which source it uses (Google Analytics, Google Ads, or Search Console), 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 report the level it reports at, 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.
  • 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.
  • Your refresh history. For each run: when it happened, whether it was scheduled or started by you, whether it succeeded, how many rows were written, and, if it failed, the error text. That error text can quote the name of a tab or a message returned by Google.
  • 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 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 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.
  • A daily monitoring list. Once a day, for our own monitoring, Fresh Sheets records which accounts have reports but no successful refresh in the past week. The list holds only each account's internal identifier, a random value Fresh Sheets assigns, and not your email address or anything about your reports. Deleting your account removes your identifier from every list already recorded, leaving the day's totals with nothing identifying in them. The lists themselves are kept with no end date.
  • 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, and our email provider keeps its copy for 30 days. Deleting your account does not remove them.
  • 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 or spreadsheet a report uses, a tab name, your Stripe customer reference, and the text of an error, which can quote a message returned by Google 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.
  • Analytics on our marketing site. If you allowed analytics on freshsheets.uk, Google Analytics holds records of your visits: the page address, the referring page, browser and device details and your IP address. Google holds them, 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 a spreadsheet, 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 a spreadsheet.
  • 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.

What Fresh Sheets does not store

No marketing data from Google Analytics, Google Ads, or Search Console 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 your Google account and written directly into your own spreadsheet, 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 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. When you point a report at an existing tab in the sidebar and Fresh Sheets finds something in it, you are asked to confirm before it is used.

The cached field list described above is the other detail worth stating plainly here, for the same reason. It comes from your Google Analytics property, and the names in it are chosen by whoever set that property up, so they can describe your business. It is a list of what could be reported on. It is never a reported figure, and no refresh result is stored in it.

Fresh Sheets also never writes to your Google Analytics, Google Ads, or Search Console 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 Connections 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 Connections 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 or you open the sidebar, and at that point deletes the same records a disconnect does. Either way, your reports stop refreshing.

Deleting your account is a separate action, covering every record listed above except these, which it does not remove: the record that the deletion ran, 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 marketing-site analytics Google holds, and what Stripe holds. Two others are handled differently and neither keeps anything identifying: the daily monitoring list keeps that day's totals but loses your identifier, and the billing event records are removed by the daily check described above rather than at the moment you delete. 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.

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.

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

Deletion completes within 30 days, and usually at once. 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.