pace.Open Pace
Browse all topics

How Pace handles your data

Where your data lives, how your ad credentials are protected, who can see what inside your team, and which third-party services Pace shares data with.

6 min readUpdated 22 May 2026

When you connect an ad account to Pace, you're trusting it with read and write access to one of the most expensive parts of your business. This article spells out exactly what data Pace holds, where it lives, who can see it, and which third-party services it touches.

It's a plain-English walkthrough, not a legal policy. The aim is that you can read it in a few minutes and know what's actually happening with your data, with no marketing fog.

Where your data lives

Your workspace, your ad accounts, your campaigns, your credentials, and your historical performance data all live in Firestore, Google Cloud's managed database. Pace itself runs on Firebase App Hosting, which is also Google Cloud.

Data in Firestore is encrypted at rest by Google's default infrastructure encryption. That's the same layer that protects every other Google Cloud customer's data.

In your browser, Pace stores only what's needed to keep the dashboard fast: campaign drafts you haven't saved, your UI preferences, and a short-lived cache of recent performance numbers. No OAuth tokens, no credentials, and no personally identifying information ever live in your browser.

How your ad platform credentials are protected

OAuth tokens for Google Ads, Meta Ads, LinkedIn Ads, Microsoft Ads, TikTok Ads, and Slack are stored server-side only, in a per-workspace section of Firestore that is completely sealed off from the browser.

The Firestore security rules don't merely discourage client reads of credentials. They forbid them outright. Even a logged-in user can't query that part of the database from the browser.

A few more things are true here:

  • Tokens are never sent to your browser.
  • Tokens never appear in URLs.
  • Tokens are never written to logs.
  • Tokens refresh automatically on the server when they expire.
  • Every call to Google Ads, Meta Ads, LinkedIn Ads, Microsoft Ads, and TikTok Ads goes through Pace's server. Your browser never talks to those platforms directly.

What permissions Pace asks for

When you connect a platform, Pace asks the smallest set of OAuth scopes it needs to read your campaigns and manage budgets. The exact scopes are:

  • Google Ads: https://www.googleapis.com/auth/adwords, plus standard sign-in scopes (openid, email, profile).
  • Meta Ads: ads_management, via Facebook Login for Business.
  • LinkedIn Ads: r_ads, r_ads_reporting, rw_ads.
  • Microsoft Ads: https://ads.microsoft.com/msads.manage, plus openid, profile, and offline_access.

The offline_access scope on Microsoft, and the equivalent on Google, are what let Pace refresh tokens automatically. Without them you'd have to re-authorise every hour.

Who can see your data inside your team

Every Pace workspace is isolated. Members of one workspace can't see another workspace's accounts, campaigns, credentials, or AI insights. Full stop.

That isolation is enforced in two places: at the database layer through Firestore security rules, and again in every protected server route through a membership check. A bug or oversight in one layer can't accidentally expose another workspace, because both layers have to agree before any data is returned.

Inside a workspace there are three roles:

  • Owner — full control, including billing and removing members.
  • Admin — can connect and manage ad accounts, change settings, and edit campaigns, but not billing or the team.
  • Member — read-only access to the workspace's data.

Sensitive actions like starting a Stripe checkout or inviting a teammate require the owner role.

How Pace's AI uses your campaign data

The budget-optimisation flow sends campaign performance metrics (things like spend, conversions, CPA, ROAS, and CTR), together with your stated goals and constraints, to Google's Gemini model through Genkit. That's how Pace generates a budget recommendation for each campaign.

What it does not send to the model: your OAuth credentials, your email, your billing details, or your team-mates' identities.

For the full pipeline, including the safety clamps that bound every AI recommendation before it touches your ad platform, read how Pace decides what to change on your campaign budgets.

Payment and billing data

Pace never sees your card number. When you upgrade, Stripe Checkout collects payment details directly on Stripe's own domain. Pace receives back a Stripe customer ID and a subscription status. That's it.

Sign-in and account security

Sign-in is Google OAuth only. Pace never sees or stores your Google password. Google handles authentication and tells Pace who you are. Sessions are signed JWTs.

The app is HTTPS-only and ships with HSTS preloaded, so browsers refuse to even attempt a plain HTTP connection. It's also non-iframeable (X-Frame-Options: DENY plus a strict frame-ancestors 'none' policy), and ships a hardened browser permissions policy that disables camera, microphone, geolocation, and federated cohort tracking by default.

Third-party services that receive your data

These are the services Pace sends data to, and what each one is for:

  • Google Cloud / Firebase — primary hosting and database.
  • Google (Gemini via Genkit) — the AI model that generates budget recommendations.
  • Stripe — payment processing.
  • Resend — transactional and alert emails.
  • Slack — only if you connect a Slack workspace for notifications.
  • Google Ads, Meta Ads, LinkedIn Ads, Microsoft Ads, TikTok Ads — the ad platforms whose campaigns you've authorised Pace to manage.

Pace doesn't use any third-party analytics, session-replay, or ad-tracking products. There's no Segment, no PostHog, no Sentry, no Hotjar.

Questions

If you want a deeper answer than this article gives, or want a copy of the formal data-processing agreement, email [email protected] and a real person will get back to you.

Was this helpful?

Your feedback helps us improve the help centre.

Related articles