03 / Data access and retention

Know what you are sharing.

BQ Optimizer collects GCP BigQuery job and table metadata, including SQL text and execution account emails. Your uploaded Service Account JSON key is stored in our database with your connection.

Content reviewed

What we read from your project

We use your GCP Service Account to query region-level INFORMATION_SCHEMA.JOBS, INFORMATION_SCHEMA.TABLES, and INFORMATION_SCHEMA.TABLE_STORAGE in your chosen project and region.

  • Job history: job identifiers, timestamps, query status and type, referenced tables, processed and billed bytes, billing metadata, SQL text, and the email of the account that ran the job.
  • Table metadata: project, dataset, table name and type, and creation time.
  • Storage metadata: storage bytes and related table-storage measurements used to estimate storage cost.

We do not query the contents of your tables, modify your data, or delete your tables for you. The predefined roles in the setup guide can grant permissions beyond the metadata operations we perform; the guide also includes a custom-role option.

SQL and account emails are part of the history

Collected SQL helps explain how a table was used and how query costs are grouped. Execution account emails help attribute that activity. SQL can contain literal values or other sensitive text even though we do not read table rows.

We keep this collected metadata in our service's GCP BigQuery storage and analyze it there using the service's own identity. Analysis does not make a fresh metadata query against your project each time you open a report.

The connection owner's protected detail pages show SQL and execution account information. Query-cost summaries and Salesforce Slack reports do not include SQL. Public product documentation contains no customer query history or credentials.

How your Service Account key is used

The JSON key you upload is stored in our database with the Connection. We use it to authenticate metadata collection for the target project and region. We save the connection only after access validation succeeds.

You can revoke the key in GCP Console to stop future authenticated collection. Revoking a key does not delete the history already collected by BQ Optimizer. To remove that collected history, delete the connection as described below.

History has no automatic expiration

We retain collected job history while your connection exists, with no automatic expiration. Older activity helps distinguish long idle periods from limited observation. Table and storage snapshots are replaced as new metadata is collected.

The initial history target does not cap how long collected job history can be retained. See history coverage and its limits for what this means when interpreting a report.

What happens when you delete a connection

  1. The connection and saved key are removed.The JSON key stored with that Connection is deleted from our database.
  2. Collected data is queued for background cleanup.The task removes that connection's collected job history, table snapshots, storage snapshots, and collection-day markers from our GCP BigQuery storage.
  3. Your project's tables remain untouched.This cleanup concerns BQ Optimizer's collected metadata. It does not delete your source tables or revoke a key in GCP Console.

Background cleanup is asynchronous. Queued for deletion does not mean cleanup has already finished when the page returns. A failed task can delay removal of the collected metadata.

Does revoking the key remove my existing reports and history?

No. Revocation stops future use of that key. Deleting the Connection removes its saved key and queues cleanup of the metadata already collected.