|
| 1 | +# What is GrowthBook? |
| 2 | + |
| 3 | +GrowthBook is a modular platform. You can use it for either Feature Flags, Experiment Analysis, or both. |
| 4 | + |
| 5 | +[**Feature Flags**](/app/features) you create in the GrowthBook UI are published to our API as a JSON file. Pass this JSON into our SDKs and use the feature flags throughout your code. If a feature is running as part of an A/B test, we'll fire a tracking callback in the SDK so you can record that event in your data warehouse or analytics platform for later analysis. |
| 6 | + |
| 7 | +[**Experiment Analysis**](/app/experiments) queries your data warehouse for raw experiment data and runs it through our stats engine to produce a report. No raw user-level events or PII are ever sent to GrowthBook. We only get back aggregate info instead (mean, stddev, etc.). |
| 8 | + |
| 9 | + |
| 10 | + |
| 11 | +## Feature Flags |
| 12 | + |
| 13 | +[Feature flags](/app/features) are a very powerful developer tool. They give you deep control over how and when new functionality is released to your users. |
| 14 | + |
| 15 | +GrowthBook supports 4 types of features: |
| 16 | + |
| 17 | +- **Boolean (on/off)** |
| 18 | +- **Number** |
| 19 | +- **String** |
| 20 | +- **JSON** |
| 21 | + |
| 22 | +Using features in your code is easy. Here's an example from our Javascript SDK: |
| 23 | + |
| 24 | +```js |
| 25 | +// For boolean features |
| 26 | +if (growthbook.feature("my-feature").on) { |
| 27 | + // ... Do something |
| 28 | +} |
| 29 | + |
| 30 | +// For number, string, and JSON features |
| 31 | +const value = growthbook.feature("other-feature").value; |
| 32 | +``` |
| 33 | + |
| 34 | +GrowthBook also supports different environments, so you can, for example, have a feature enabled in **dev** but not **production**. |
| 35 | + |
| 36 | +You can also change the value of a feature with **Override Rules**. The following types of rules are supported: |
| 37 | + |
| 38 | +- **Targeted** - Choose a subset of users based on targeting attributes |
| 39 | +- **Percentage Rollout** - Use random sampling to pick a certain percent of users |
| 40 | +- **A/B Experiment** - Run an A/B test between different feature values |
| 41 | + |
| 42 | +You can pull feature definitions as a JSON file from the [API](/app/api) or setup a [Webhook](/app/webhooks) to push the same JSON to your servers automatically when something changes. |
| 43 | + |
| 44 | +This feature definitions JSON is passed into our [SDKs](/lib) along with [user targeting attributes](/app/features#targeting-attributes). |
| 45 | + |
| 46 | +Read more about [features here](/app/features). |
| 47 | + |
| 48 | +## Experiment Analysis |
| 49 | + |
| 50 | +GrowthBook needs to connect to your [Data Source](/app/datasources) in order to query experiment results. We support all of the popular SQL data warehouses in addition to Mixpanel and Google Analytics. GrowthBook is extremely flexible and can support almost any schema structure with a little bit of configuration. |
| 51 | + |
| 52 | + |
| 53 | + |
| 54 | +Once connected to a data source, you need to build a re-usable library of [Metrics](/app/metrics). Metrics are what your experiments are trying to improve. Metrics are defined via SQL (if your data source supports it) or a simple query builder. The following types are supported: |
| 55 | + |
| 56 | +- **binomial** - simple yes/no conversion metrics (e.g. `started trial`, `bounce rate`, `purchased`) |
| 57 | +- **count** - when the number or magnitude of conversions matters (e.g. `downloads per user`, `points earned`) |
| 58 | +- **revenue** - the amount of revenue earned (e.g. `revenue per user`, `average order value`) |
| 59 | +- **duration** - the time it takes to do something (e.g. `page load time`, `time on site`) |
| 60 | + |
| 61 | +Once these are metrics are set up, you can import experiments and start analyzing the results. GrowthBook uses a [Bayesian statistics engine](/statistics) to determine the probability that a variation is better than the control, as well as how much better it is and how risky it is to stop the experiment now. |
| 62 | + |
| 63 | + |
| 64 | + |
| 65 | +Your data team can drill down into results by custom [dimensions](/app/dimensions), view the raw SQL that GrowthBook is running on your data warehouse, and export results to a Jupyter notebook for even deeper analysis. |
| 66 | + |
| 67 | +Read more about [experiments here](/app/experiments). |
| 68 | + |
| 69 | +## Use Cases |
| 70 | + |
| 71 | +There are typically three reasons that teams use GrowthBook. |
| 72 | + |
| 73 | +### 1. Full Experimentation Platform |
| 74 | + |
| 75 | +In this use case, companies use Feature Flags and our SDKs to run experiments in their applications. Then they use our Experiment Analysis to look at the results and decide on a winner. |
| 76 | + |
| 77 | +This is best for companies that are either just starting with experimentation or want to completely switch away from their current way of doing things. |
| 78 | + |
| 79 | +### 2. Feature Flags Only |
| 80 | + |
| 81 | +In this use case, companies don't run experiments at all and just use GrowthBook feature flags within their engineering team. |
| 82 | + |
| 83 | +This is best for companies that don't have enough traffic to run full experiments, but still want all of the benefits that feature flags provide. |
| 84 | + |
| 85 | +### 3. Experiment Analysis Only |
| 86 | + |
| 87 | +In this use case, companies are already running experiments and analyzing results usually with either a home-built reporting system or by manually creating Jupyter notebooks. They use GrowthBook to automate and improve the analysis process to save time and make better decisions. |
| 88 | + |
| 89 | +This is best for companies that already have a robust process for running experiments and just need a little help analyzing results at scale. |
| 90 | + |
| 91 | +## Next Steps |
| 92 | + |
| 93 | +<div class="grid grid-cols-1 md:grid-cols-3 gap-4"> |
| 94 | + <a href="/self-host" class="no-underline" style={{ textDecoration: "none" }}> |
| 95 | + <div class="p-4 rounded-lg text-white bg-gradient-to-b from-blue-400 to-blue-500 no-underline text-center"> |
| 96 | + How to Self-Host |
| 97 | + </div> |
| 98 | + </a> |
| 99 | + <a href="/lib" class="no-underline" style={{ textDecoration: "none" }}> |
| 100 | + <div class="p-4 rounded-lg text-white bg-gradient-to-b from-purple-400 to-purple-500 no-underline text-center"> |
| 101 | + SDK Docs |
| 102 | + </div> |
| 103 | + </a> |
| 104 | + <a href="/faq" class="no-underline" style={{ textDecoration: "none" }}> |
| 105 | + <div class="p-4 rounded-lg text-white bg-gradient-to-b from-purple-500 to-purple-600 no-underline text-center"> |
| 106 | + Frequently Asked Questions |
| 107 | + </div> |
| 108 | + </a> |
| 109 | +</div> |
0 commit comments