> ## Documentation Index
> Fetch the complete documentation index at: https://support.configview.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GrowthBook setup

ConfigView reads your GrowthBook organization through GrowthBook's REST API, using a **Secret Key** that an admin creates for ConfigView. A Secret Key belongs to the organization, not to a person, so it keeps working when whoever set it up leaves.

You will end up with **1 secret** in ConfigView (`GROWTHBOOK_API_KEY`), plus a second (`GROWTHBOOK_API_URL`) only if you host GrowthBook yourself.

> **Scope of this integration today.** ConfigView reads who is a member of GrowthBook and with what role (including who is an admin and who holds project roles), teams, projects and environments, every feature flag with its owner, project, tags, rule counts and the environments it is switched on in, SDK connections and their settings, experiments and their status and dates, data sources, saved groups and custom validation hooks. ConfigView only reads. It never creates, edits, publishes, archives or deletes anything, and it never stores flag values, rule conditions, SDK client keys, encryption keys, data source SQL or credentials, hook code, or the members of a saved group.

***

## Step 1: Open the GrowthBook page in ConfigView

Open ConfigView in a second browser tab and leave it open:

`https://{companyname}.configview.com/admin/integrations/growthbook`

***

## Step 2: Find your API address

| You use | `GROWTHBOOK_API_URL` |
| - | - |
| GrowthBook Cloud (app.growthbook.io) | leave it empty |
| Self-hosted GrowthBook | your API address, the same value as the `API_HOST` setting, for example `https://gb-api.example.com` |

For a self-hosted install, use the address of the **API**, not the dashboard. ConfigView adds the `/api` and `/v1` parts itself, so either `https://gb-api.example.com` or `https://gb-api.example.com/api` works. The address must be reachable from ConfigView.

If you need to enter it, paste it into `GROWTHBOOK_API_URL` under **Credentials** and click the save icon.

***

## Step 3: Create a Secret Key for ConfigView

You need permission to manage API keys in GrowthBook (an admin).

1. In GrowthBook open **Settings → API Keys** and choose **Create New Secret Key**
2. Name it `ConfigView`
3. Give it the **Read Only** role. This is enough to read feature flags, experiments, projects, environments, SDK connections, data sources and saved groups, and it cannot change anything
4. Copy the key (it starts with `secret_`) into `GROWTHBOOK_API_KEY` under **Credentials** and click the save icon. GrowthBook shows the key once; if you lose it, create a new one

**Members and teams need more than Read Only.** GrowthBook only returns the member list to a key that can manage the team (the Admin role) or manage projects (Project Admin). A Read Only key gets a 403 on that list. ConfigView handles this without failing: the **Members** and **Teams** collectors are skipped with a note, and everything else still works. If you want to see who has access to GrowthBook, you have two choices:

* Create the key with the **Admin** role. That key can change things in GrowthBook even though ConfigView only reads, so use it only if your policy allows, and keep the key short-lived
* Or keep Read Only and accept that the people questions (who is an admin, who has not signed in) are unavailable

If your GrowthBook plan has custom roles, a custom role that can view members and nothing else is the least privilege for this.

If your organization requires keys to expire, ConfigView reads the expiry from GrowthBook and its health check warns you 14 days before the key stops working.

***

## Step 4: Connect and verify

1. Back on `https://{companyname}.configview.com/admin/integrations/growthbook`, confirm the credentials show as saved
2. Click **Connect**. ConfigView creates its tables and schedules every collector at your default run time. Stop any you don't want under **Collectors**:

| Script | Notes |
| - | - |
| **Members** | Everyone invited to the GrowthBook organization: name, email, global role (including who is an admin), environment limits, per-project roles, team membership and last login. Needs the manage-team permission; skipped otherwise. |
| **Teams** | GrowthBook teams: the role each team grants, how many members it has, environment limits, per-project roles and whether it is managed by your identity provider. Skipped if the key cannot read teams. |
| **Projects** | GrowthBook projects with their owner and whether access is restricted to members who have a role in the project. |
| **Environments** | The environments (production, staging, ...) the organization has defined, which projects each is limited to and whether new features start enabled in it. |
| **Feature Flags** | Every feature flag (archived ones too): key, owner, project, value type, tags, how many targeting, rollout and experiment rules it has, which environments it is switched on in, and when it was last changed and by whom. Flag values and rule conditions are not stored. |
| **SDK Connections** | SDK connections that serve feature flags to apps: name, environment, projects, languages, whether the payload is encrypted, whether draft or visual experiments are included, proxy and remote evaluation settings. The client key and encryption keys are never stored. |
| **Data Sources** | The warehouses and analytics tools GrowthBook reads experiment data from: name, type and which projects use each. Connection details and SQL are never stored. |
| **Experiments** | Every A/B test and bandit: name, status (draft, running, stopped), owner, project, when it started and ended, how many variations and linked feature flags it has, and the declared winner. |
| **Saved Groups** | Saved audience groups used in feature targeting: name, type, owner, projects and how many values a list holds. The members of the group are not stored. |
| **Custom Hooks** | Custom validation hooks that run code when someone saves a feature, config or experiment: name, what triggers it, whether it is enabled and when it last succeeded or failed. The hook code is not stored. |

3. Click **Verify now**. The health check confirms the key works, then reads one page from each kind of data.

If a check fails:

* **"GrowthBook API key" fails with 401.** The key is wrong, was deleted or has expired. Create a new key and update `GROWTHBOOK_API_KEY`.
* **The key check fails to connect (self-hosted).** `GROWTHBOOK_API_URL` must be the API address (your `API_HOST`), reachable from ConfigView, not the dashboard address.
* **"Members" or "Teams" is skipped.** The key's role cannot list members. See Step 3. Nothing fails; those tables stay empty.
* **"Custom hooks" or "Data sources" is skipped.** Custom hooks are an Enterprise feature, and the key's role may not be able to view data sources. The table stays empty and nothing fails.
* **Any other check fails with 403.** The key's role cannot read that data. Use Read Only or a role with the matching View permission.

***

## Data Tables

Once the scripts run, these tables are created in your database. Each includes a `run_at` column and keeps only the newest run.

| Table | Source | Key Columns |
| - | - | - |
| `growthbook_members` | `GET /v1/members` | member\_id, name, email, global\_role, is\_admin, limit\_access\_by\_environment, environments, project\_role\_count, team\_ids, managed\_by\_idp, last\_login |
| `growthbook_member_project_roles` | `GET /v1/members` | member\_id, email, project\_id, role, limit\_access\_by\_environment, environments |
| `growthbook_teams` | `GET /v1/teams` | team\_id, name, role, member\_count, member\_ids, project\_role\_count, managed\_by\_idp, default\_project |
| `growthbook_projects` | `GET /v1/projects` | project\_id, name, public\_id, owner, owner\_email, restrict\_access, allow\_targeting |
| `growthbook_environments` | `GET /v1/environments` | environment\_id, toggle\_on\_list, default\_state, project\_ids, parent\_environment |
| `growthbook_features` | `GET /v2/features` | feature\_id, owner, project, value\_type, archived, tags, rule\_count, experiment\_rule\_count, rollout\_rule\_count, enabled\_environments, revision\_version, revision\_date, revision\_published\_by, date\_updated |
| `growthbook_feature_environments` | `GET /v2/features` | feature\_id, environment, enabled, rule\_count |
| `growthbook_sdk_connections` | `GET /v1/sdk-connections` | connection\_id, name, environment, projects, languages, encrypt\_payload, hash\_secure\_attributes, include\_draft\_experiments, include\_visual\_experiments, remote\_eval\_enabled, proxy\_enabled, proxy\_host |
| `growthbook_data_sources` | `GET /v1/data-sources` | data\_source\_id, name, source\_type, event\_tracker, project\_ids, assignment\_query\_count |
| `growthbook_experiments` | `GET /v1/experiments` | experiment\_id, tracking\_key, name, experiment\_type, status, project, owner, owner\_email, variation\_count, first\_started\_at, current\_phase\_started\_at, last\_ended\_at, winner |
| `growthbook_saved_groups` | `GET /v1/saved-groups` | saved\_group\_id, name, group\_type, owner, owner\_email, attribute\_key, value\_count, archived |
| `growthbook_custom_hooks` | `GET /v1/custom-hooks` | hook\_id, name, hook\_type, entity\_type, enabled, last\_success, last\_failure |

***

## Things worth knowing

**GrowthBook's API allows 60 calls a minute.** ConfigView sends one request at a time and keeps to 45 a minute. A full run takes a minute or two; an organization with thousands of feature flags or experiments takes a little longer because lists are read 100 at a time. A self-hosted server may set its own limit.

**"Stale" is measured at the time of the latest collection.** A feature flag counts as stale when it was last changed more than 180 days before ConfigView's latest run, so the answer does not drift while the data sits unchanged.

**Environment names are yours.** Questions about production match any environment whose name contains `prod` (`production`, `eu-production`, `prod`). If you name it differently, tell us.

**Owners are display names.** GrowthBook stores a feature flag's owner as a name, not an email, so the owner of a flag is matched to a member by name.

**Audit history is not available.** GrowthBook's REST API does not expose its audit log or the list of API keys, so ConfigView cannot show who created keys or a history of admin changes. Feature flag revisions record who published the latest one, which ConfigView keeps.

## What isn't collected

* The Secret Key, and any other API key or Personal Access Token
* SDK client keys, payload encryption keys and proxy signing keys
* Feature flag values, rule conditions and the compiled flag definitions
* Data source connection details and assignment-query SQL
* Custom hook code
* The values or conditions of saved groups (only how many values a list holds)
* Experiment hypotheses, results, metrics and screenshots


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.