diff --git a/website/docs/advanced/code-references/azure-devops.mdx b/website/docs/advanced/code-references/azure-devops.mdx index d7a63eff6..95b8e7be2 100644 --- a/website/docs/advanced/code-references/azure-devops.mdx +++ b/website/docs/advanced/code-references/azure-devops.mdx @@ -3,17 +3,23 @@ id: azure-devops title: Azure DevOps - Scan your source code for feature flags --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + This section describes how to use the [ConfigCat CLI](../cli.mdx) in Azure DevOps Pipelines to automatically scan your source code for feature flag and setting usages and upload the found code references to ConfigCat. ## Setup -1. Create a new ConfigCat Management API credential and store its values in Azure DevOps Pipeline Variables with the following names: `CONFIGCAT_API_USER`, `CONFIGCAT_API_PASS`. + + +Create a new ConfigCat Management API credential and store its values in Azure DevOps Pipeline Variables with the following names: `CONFIGCAT_API_USER`, `CONFIGCAT_API_PASS`. Azure secrets - -2. Get your selected [Config's ID](overview.mdx#config-id). - -3. Create a new or open your existing `azure-pipelines.yml` file, and add the following job to your `jobs` definition. + + +Get your selected [Config's ID](overview.mdx#config-id). + + +Create a new or open your existing `azure-pipelines.yml` file, and add the following job to your `jobs` definition. Don't forget to replace the `PASTE-YOUR-CONFIG-ID-HERE` value with your actual Config ID. ```yaml - job: configcat_scan_and_upload @@ -41,7 +47,10 @@ to automatically scan your source code for feature flag and setting usages and u :::info If you are using a different VCS than Azure DevOps' Git, you should set the `--file-url-template` and `--commit-url-template` according to your VCS provider. ::: - -4. Commit & push your changes. + + +Commit & push your changes. + + Scan reports are uploaded for each branch of your repository that triggers the job. diff --git a/website/docs/advanced/code-references/bitbucket-pipe.mdx b/website/docs/advanced/code-references/bitbucket-pipe.mdx index b6dbc29c5..2656be840 100644 --- a/website/docs/advanced/code-references/bitbucket-pipe.mdx +++ b/website/docs/advanced/code-references/bitbucket-pipe.mdx @@ -3,36 +3,45 @@ id: bitbucket-pipe title: Bitbucket Pipe - Scan your source code for feature flags --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + This section describes how to use ConfigCat's Bitbucket Pipe to automatically scan your source code for feature flag and setting usages and upload the found code references to ConfigCat. You can find more information about Bitbucket Pipelines here. ## Setup -1. Create a new ConfigCat Management API credential and store its values in secure pipeline variables with the following names: `CONFIGCAT_API_USER`, `CONFIGCAT_API_PASS`. - Bitbucket Pipe secrets - -2. Get your selected [Config's ID](overview.mdx#config-id). - -3. Add the following snippet to the script section of your `bitbucket-pipelines.yml` file. - Don't forget to replace the `PASTE-YOUR-CONFIG-ID-HERE` value with your actual Config ID. - - ```yaml - - pipe: configcat/scan-repository-pipe:1.8.1 - variables: - CONFIG_ID: 'PASTE-YOUR-CONFIG-ID-HERE' - # LINE_COUNT: '3' # optional - # TIMEOUT: '1800' # optional - # SUB_FOLDER: '/src' # optional - # EXCLUDE_KEYS: > # optional - # flag_key_to_exclude_1 - # flag_key_to_exclude_2 - # ALIAS_PATTERNS: (\w+) = :CC_KEY,const (\w+) = feature_flags\.enabled\(:CC_KEY\) # optional - # USAGE_PATTERNS: feature_flags\.enabled\(:CC_KEY\) - # VERBOSE: 'true' # optional - ``` - -4. Commit & push your changes. + + +Create a new ConfigCat Management API credential and store its values in secure pipeline variables with the following names: `CONFIGCAT_API_USER`, `CONFIGCAT_API_PASS`. +Bitbucket Pipe secrets + + +Get your selected [Config's ID](overview.mdx#config-id). + + +Add the following snippet to the script section of your `bitbucket-pipelines.yml` file. +Don't forget to replace the `PASTE-YOUR-CONFIG-ID-HERE` value with your actual Config ID. + +```yaml +- pipe: configcat/scan-repository-pipe:1.8.1 + variables: + CONFIG_ID: 'PASTE-YOUR-CONFIG-ID-HERE' + # LINE_COUNT: '3' # optional + # TIMEOUT: '1800' # optional + # SUB_FOLDER: '/src' # optional + # EXCLUDE_KEYS: > # optional + # flag_key_to_exclude_1 + # flag_key_to_exclude_2 + # ALIAS_PATTERNS: (\w+) = :CC_KEY,const (\w+) = feature_flags\.enabled\(:CC_KEY\) # optional + # USAGE_PATTERNS: feature_flags\.enabled\(:CC_KEY\) + # VERBOSE: 'true' # optional +``` + + +Commit & push your changes. + + Scan reports are uploaded for each branch of your repository that triggers the job. diff --git a/website/docs/advanced/code-references/bitrise-step.mdx b/website/docs/advanced/code-references/bitrise-step.mdx index cf356f3c9..4c288dc40 100644 --- a/website/docs/advanced/code-references/bitrise-step.mdx +++ b/website/docs/advanced/code-references/bitrise-step.mdx @@ -3,18 +3,23 @@ id: bitrise-step title: Bitrise - Scan your source code for feature flags --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + This section describes how to use ConfigCat's Bitrise Step to automatically scan your source code for feature flag and setting usages and upload the found code references to ConfigCat. Bitrise is full-featured mobile CI/CD platform. You can find more information about Bitrise Steps here. ## Setup - -1. Create a new ConfigCat Management API credential and store its values in secure pipeline variables with the following names: `CONFIGCAT_API_USER`, `CONFIGCAT_API_PASS`. - Bitrise secrets - -2. Get your selected [Config's ID](overview.mdx#config-id). - -3. Add the following step to the workflows section of your `bitrise.yml` file. + + +Create a new ConfigCat Management API credential and store its values in secure pipeline variables with the following names: `CONFIGCAT_API_USER`, `CONFIGCAT_API_PASS`. +Bitrise secrets + + +Get your selected [Config's ID](overview.mdx#config-id). + + +Add the following step to the workflows section of your `bitrise.yml` file. Don't forget to replace the `PASTE-YOUR-CONFIG-ID-HERE` value with your actual Config ID. ```yaml @@ -30,8 +35,11 @@ to automatically scan your source code for feature flag and setting usages and u # - usage-patterns: feature_flags\.enabled\(:CC_KEY\) # optional # - verbose: true # optional ``` - -4. Commit & push your changes. + + +Commit & push your changes. + + Scan reports are uploaded for each branch of your repository that triggers the job. diff --git a/website/docs/advanced/code-references/circleci-orb.mdx b/website/docs/advanced/code-references/circleci-orb.mdx index 303eca432..f7180c9d6 100644 --- a/website/docs/advanced/code-references/circleci-orb.mdx +++ b/website/docs/advanced/code-references/circleci-orb.mdx @@ -3,19 +3,24 @@ id: circleci-orb title: CircleCI Orb - Scan your source code for feature flags --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + This section describes how to use ConfigCat's CircleCI Orb to automatically scan your source code for feature flag and setting usages and upload the found code references to ConfigCat. You can find more information about CircleCI Orbs here. ## Setup - -1. Create a new ConfigCat Management API credential and store its values in CircleCI Environment Variables with the following names: `CONFIGCAT_API_USER`, `CONFIGCAT_API_PASS`. - CircleCI Orb secrets - -2. Get your selected [Config's ID](overview.mdx#config-id). - -3. Create a new CircleCI YAML config in your repository under the `.circleci` folder, and put the following snippet into it. - Don't forget to replace the `PASTE-YOUR-CONFIG-ID-HERE` value with your actual Config ID. + + +Create a new ConfigCat Management API credential and store its values in CircleCI Environment Variables with the following names: `CONFIGCAT_API_USER`, `CONFIGCAT_API_PASS`. +CircleCI Orb secrets + + +Get your selected [Config's ID](overview.mdx#config-id). + + +Create a new CircleCI YAML config in your repository under the `.circleci` folder, and put the following snippet into it. +Don't forget to replace the `PASTE-YOUR-CONFIG-ID-HERE` value with your actual Config ID. ```yaml version: 2.1 @@ -40,8 +45,11 @@ You can find more information about CircleCI Orbs Scan Repository GitHub Action to automatically scan your source code for feature flag and setting usages and upload the found code references to ConfigCat. You can find more information about GitHub Actions here. ## Setup - -1. Create a new ConfigCat Management API credential and store its values in your repository's GitHub Secrets with the following names: `CONFIGCAT_API_USER`, `CONFIGCAT_API_PASS`. - Github Action secrets - -2. Get your selected [Config's ID](overview.mdx#config-id). - -3. Create a new Actions workflow in your GitHub repository under the `.github/workflows` folder, and put the following snippet into it. Don't forget to replace the `PASTE-YOUR-CONFIG-ID-HERE` value with your actual Config ID. + + +Create a new ConfigCat Management API credential and store its values in your repository's GitHub Secrets with the following names: `CONFIGCAT_API_USER`, `CONFIGCAT_API_PASS`. +Github Action secrets + + +Get your selected [Config's ID](overview.mdx#config-id). + + +Create a new Actions workflow in your GitHub repository under the `.github/workflows` folder, and put the following snippet into it. Don't forget to replace the `PASTE-YOUR-CONFIG-ID-HERE` value with your actual Config ID. ```yaml on: [push] @@ -42,8 +47,11 @@ You can find more information about GitHub Actions GitLab CI/CD to automatically scan your source code for feature flag and setting usages and upload the found code references to ConfigCat. ## Setup - -1. Create a new ConfigCat Management API credential and store its values in GitLab's CI/CD Variables with the following names: `CONFIGCAT_API_USER`, `CONFIGCAT_API_PASS`. - GitLab secrets - -2. Get your selected [Config's ID](overview.mdx#config-id). - -3. Create a new or open your existing `.gitlab-ci.yml` file, and put the following job into it. - Don't forget to replace the `PASTE-YOUR-CONFIG-ID-HERE` value with your actual Config ID. + + +Create a new ConfigCat Management API credential and store its values in GitLab's CI/CD Variables with the following names: `CONFIGCAT_API_USER`, `CONFIGCAT_API_PASS`. +GitLab secrets + + +Get your selected [Config's ID](overview.mdx#config-id). + + +Create a new or open your existing `.gitlab-ci.yml` file, and put the following job into it. +Don't forget to replace the `PASTE-YOUR-CONFIG-ID-HERE` value with your actual Config ID. ```yaml configcat-scan-repository: @@ -33,7 +38,9 @@ to automatically scan your source code for feature flag and setting usages and u --upload --non-interactive ``` - -4. Commit & push your changes. - + + +Commit & push your changes. + + Scan reports are uploaded for each branch of your repository that triggers the job. diff --git a/website/docs/advanced/code-references/manual.mdx b/website/docs/advanced/code-references/manual.mdx index 62d08cc89..fb82ee76d 100644 --- a/website/docs/advanced/code-references/manual.mdx +++ b/website/docs/advanced/code-references/manual.mdx @@ -3,14 +3,24 @@ id: manual title: CLI - Add to CI/CD pipelines manually --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + This section describes how to use the [ConfigCat CLI](../cli.mdx) to scan your source code for feature flag and setting usages and upload the found code references to ConfigCat. ## Prerequisites -- [Install](../cli.mdx#installation) the CLI in your CI/CD or local environment. -- [Setup](../cli.mdx#setup) the CLI with your ConfigCat Management API credentials. -- Get your selected [Config's ID](overview.mdx#config-id). + + +[Install](../cli.mdx#installation) the CLI in your CI/CD or local environment. + + +[Setup](../cli.mdx#setup) the CLI with your ConfigCat Management API credentials. + + +Get your selected [Config's ID](overview.mdx#config-id). + + ## Scan & Upload diff --git a/website/docs/advanced/code-references/overview.mdx b/website/docs/advanced/code-references/overview.mdx index ed9f0bca1..293ca6d68 100644 --- a/website/docs/advanced/code-references/overview.mdx +++ b/website/docs/advanced/code-references/overview.mdx @@ -4,6 +4,7 @@ title: Scan & Upload Code References Overview --- import CodeRefIntro from './\_intro.mdx' +import { Steps, Step, Title } from '@site/src/components/Steps'; @@ -46,13 +47,17 @@ In non-interactive environments, like in a CI/CD pipeline, you have to pass the To get the ID of a Config, follow the steps below: -1. Go to your ConfigCat Dashboard, select the desired Config, and click the code references icon on one of your feature flags. - + + +Go to your ConfigCat Dashboard, select the desired Config, and click the code references icon on one of your feature flags. ConfigCat code references button -2. Copy the Config ID from the highlighted box. - + + +Copy the Config ID from the highlighted box. ConfigCat Config ID + + ## How Scanning Works diff --git a/website/docs/advanced/config-v2-migration-guide.mdx b/website/docs/advanced/config-v2-migration-guide.mdx index fd1364374..c4ad77968 100644 --- a/website/docs/advanced/config-v2-migration-guide.mdx +++ b/website/docs/advanced/config-v2-migration-guide.mdx @@ -4,6 +4,8 @@ title: Config V2 Migration Guide description: A detailed guide on how to migrate from Config V1 to Config V2. --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + This guide will help you migrate from Config V1 to Config V2. ## What is Config V2? @@ -30,8 +32,14 @@ The migration process starts with copying your V1 config to a new V2 one and upd ### Step 1: Create the V2 config -1. Open the ConfigCat Dashboard and click on the `Start migration` button on top of a V1 config. -2. Click `Create V2 config` to create a new config with the same settings as the V1 config. + + +Open the ConfigCat Dashboard and click on the `Start migration` button on top of a V1 config. + + +Click `Create V2 config` to create a new config with the same settings as the V1 config. + + It's important to note that the V2 config will be created with the same settings as the V1 config and the V1 config will still be accessible and unchanged. diff --git a/website/docs/advanced/mcp-server.mdx b/website/docs/advanced/mcp-server.mdx index f96524ffb..8ab476df5 100644 --- a/website/docs/advanced/mcp-server.mdx +++ b/website/docs/advanced/mcp-server.mdx @@ -6,6 +6,7 @@ description: Use the ConfigCat Model Context Protocol (MCP) server to manage fea import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +import { Steps, Step } from '@site/src/components/Steps'; ## Overview @@ -58,12 +59,19 @@ The MCP server's configuration includes the following environment variables: ### Client Configuration - - -1. Install [Cursor](https://cursor.com/) -2. Open **Preferences** → **Cursor Settings** → **MCP & Integrations** -3. Click **Add Custom MCP** -4. Add (or merge) the snippet below into your JSON settings: + + + +Install [Cursor](https://cursor.com/) + + +Open **Preferences** → **Cursor Settings** → **MCP & Integrations** + + +Click **Add Custom MCP** + + +Add (or merge) the snippet below into your JSON settings: ```json { @@ -79,14 +87,22 @@ The MCP server's configuration includes the following environment variables: } } ``` -5. **Save** – the server will start on demand. -6. You can start writing prompts into Cursor's AI panel. - - - - -1. Install [VS Code](https://code.visualstudio.com/) and [GitHub Copilot](https://code.visualstudio.com/docs/copilot/setup) -2. Create a `.vscode/mcp.json` file in your project root with the following content: + + +**Save** – the server will start on demand. + + +You can start writing prompts into Cursor's AI panel. + + + + + + +Install [VS Code](https://code.visualstudio.com/) and [GitHub Copilot](https://code.visualstudio.com/docs/copilot/setup) + + +Create a `.vscode/mcp.json` file in your project root with the following content: ```json { @@ -102,16 +118,28 @@ The MCP server's configuration includes the following environment variables: } } ``` -3. Save the settings file. The MCP server should now be available in VS Code. -4. You can start writing prompts into VS Code's AI panel. - - - - -1. Install [Claude Desktop](https://claude.ai/download) -2. Open **Settings** → **Developer** -3. Click **Edit Config** -4. In `claude_desktop_config.json` add: + + +Save the settings file. The MCP server should now be available in VS Code. + + +You can start writing prompts into VS Code's AI panel. + + + + + + +Install [Claude Desktop](https://claude.ai/download) + + +Open **Settings** → **Developer** + + +Click **Edit Config** + + +In `claude_desktop_config.json` add: ```json { @@ -127,9 +155,12 @@ The MCP server's configuration includes the following environment variables: } } ``` -5. **Save** & restart Claude Desktop. - - + + +**Save** & restart Claude Desktop. + + + :::info diff --git a/website/docs/advanced/migration-from-launchdarkly.mdx b/website/docs/advanced/migration-from-launchdarkly.mdx index 1384d4498..396053f7a 100644 --- a/website/docs/advanced/migration-from-launchdarkly.mdx +++ b/website/docs/advanced/migration-from-launchdarkly.mdx @@ -7,15 +7,24 @@ description: A guide to migration from LaunchDarkly to ConfigCat. import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; +import { Steps, Step, Title } from '@site/src/components/Steps'; This document is for current LaunchDarkly users who want to migrate to ConfigCat. It guides you through the migration process while providing information on the technical differences between the two services that you need to be aware of. Migration can be done on a LaunchDarkly project basis, and migration of a project usually consists of the following three steps: -1. Migrating LaunchDarkly feature flags and segments to ConfigCat -1. Adjusting the code of your applications to use ConfigCat instead of LaunchDarkly -1. Migrating LaunchDarkly teams and permissions to ConfigCat + + +Migrating LaunchDarkly feature flags and segments to ConfigCat + + +Adjusting the code of your applications to use ConfigCat instead of LaunchDarkly + + +Migrating LaunchDarkly teams and permissions to ConfigCat + + ConfigCat provides a wizard-like tool that is able to do the heavy lifting for step 1. However, there is currently no automation for step 2 and 3. So please expect these steps to require some manual work. @@ -229,23 +238,31 @@ process.exit(0); Let's see now step by step how to convert this code to ConfigCat: -1. Uninstall the LaunchDarkly SDK package, and install the ConfigCat one instead: + + +Uninstall the LaunchDarkly SDK package, and install the ConfigCat one instead: ```bash npm uninstall @launchdarkly/node-server-sdk npm install configcat-node ``` -1. Instead of the `LaunchDarkly` namespace, import `configcat`: + + +Instead of the `LaunchDarkly` namespace, import `configcat`: ```js import configcat from "configcat-node"; ``` -1. Replace the LaunchDarkly SDK key with the ConfigCat one. + + +Replace the LaunchDarkly SDK key with the ConfigCat one. You can obtain it from the [ConfigCat Dashboard](https://app.configcat.com/organization), by selecting the config containing the imported feature flag on the sidebar, and clicking the "VIEW SDK KEY" button in the top right corner of the page. -1. Instead of a LaunchDarkly client instance, obtain a ConfigCat one: + + +Instead of a LaunchDarkly client instance, obtain a ConfigCat one: ```js const client = configcat.getClient(sdkKey, configcat.PollingMode.AutoPoll, { @@ -257,7 +274,9 @@ Let's see now step by step how to convert this code to ConfigCat: polling strategies to get the data necessary for feature flag evaluation. Refer to the [SDK reference](../../sdk-reference/js/overview#creating-the-configcat-client) to learn more about the options. For frontend applications and long-running backend services, Auto Polling mode is usually a good choice. -1. Adjust the wait-for-initialization logic. + + +Adjust the wait-for-initialization logic. * When using Auto Polling mode, you can rewrite it like this: ```js const clientCacheState = await client.waitForReady(); @@ -276,7 +295,9 @@ Let's see now step by step how to convert this code to ConfigCat: Actually, you only need this wait-for-initialization logic at the startup of your applications if you want to use [synchronous feature flag evaluation via snapshots](../../sdk-reference/js/overview#snapshots-and-synchronous-feature-flag-evaluation). * For other polling modes, the wait-for-initialization logic doesn't make sense, so just omit it. -1. Rewrite LaunchDarkly contexts to ConfigCat User Objects. + + +Rewrite LaunchDarkly contexts to ConfigCat User Objects. ConfigCat uses the concept of [User Object](../../targeting/user-object) to pass user and/or session-related contextual data to feature flag evaluation. It serves the same purpose as [LaunchDarkly contexts](https://launchdarkly.com/docs/home/observability/contexts), @@ -299,7 +320,9 @@ Let's see now step by step how to convert this code to ConfigCat: comparators only. This means that it's not possible to specify multiple values for a user attribute if the evaluated feature flag contains a [User Condition](../../targeting/targeting-rule/user-condition) that references the attribute, but has a comparator other than the two mentioned. Unfortunately, no workaround exists for this case. -1. Rewrite feature flag evaluation calls. + + +Rewrite feature flag evaluation calls. This step is pretty straightforward as ConfigCat SDKs provide similar evaluation methods to LaunchDarkly SDKs. Those methods are named `getValue`, `getValueAsync` or similar. @@ -323,6 +346,8 @@ Let's see now step by step how to convert this code to ConfigCat: feature flag evaluation is usually still possible, [via snapshots](../../sdk-reference/js/overview#snapshots-and-synchronous-feature-flag-evaluation). But this works slightly differently from the asynchronous methods, so make sure you understand its behavior and possible pitfalls. + + By adjusting the example code according to the above, we get this: @@ -379,12 +404,18 @@ If you're out of luck, you can still use the ConfigCat SDK directly as explained [contact us](https://configcat.com/support) about the missing OpenFeature provider. Otherwise, to switch to ConfigCat, you need to do the following: -1. Uninstall the LaunchDarkly OpenFeature provider package, and install the ConfigCat one instead. -1. Adjust the initialization logic. + + +Uninstall the LaunchDarkly OpenFeature provider package, and install the ConfigCat one instead. + + +Adjust the initialization logic. Look for a call to `setProvider`, `setProviderAndWait` or similar, and change it so an instance of ConfigCat OpenFeature provider is passed to it. (For ConfigCat, use `setProviderAndWait` if possible.) -1. Convert [LaunchDarkly-specific evaluation context objects](https://github.com/launchdarkly/openfeature-node-server?tab=readme-ov-file#openfeature-specific-considerations) + + +Convert [LaunchDarkly-specific evaluation context objects](https://github.com/launchdarkly/openfeature-node-server?tab=readme-ov-file#openfeature-specific-considerations) to have a data structure compatible with ConfigCat. This is done in a very similar way to what's described in the previous section. Read [this section](../migration-from-launchdarkly-translation#mapping-between-launchdarkly-contexts-and-configcat-user-objects) @@ -423,10 +454,14 @@ Otherwise, to switch to ConfigCat, you need to do the following: "/kind": ["user", "organization"], }; ``` -1. Review feature flag evaluation calls. + + +Review feature flag evaluation calls. Most of the pitfalls pointed out in the "Rewrite feature flag evaluation calls" part of the previous section applies here too. + + ### Implement experiments and analytics diff --git a/website/docs/advanced/notifications-webhooks.mdx b/website/docs/advanced/notifications-webhooks.mdx index 0416fd760..a39bcab96 100644 --- a/website/docs/advanced/notifications-webhooks.mdx +++ b/website/docs/advanced/notifications-webhooks.mdx @@ -6,6 +6,7 @@ description: Webhooks are a way to send notifications to your applications about import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +import { Steps, Step, Title } from '@site/src/components/Steps'; ConfigCat Webhooks can notify your applications when a feature flag or other Setting changes by calling a public HTTP endpoint on your end. This allows your applications to react almost immediately to updates. @@ -14,11 +15,23 @@ To enable Webhooks, simply tell us which HTTP endpoint to call. ConfigCat will s ## Adding a Webhook -1. Go to the Webhooks screen. -2. Click the **+ ADD WEBHOOK** button. -3. Choose **when** webhook notifications should be sent by selecting the **Config** and **Environment** where changes should trigger the Webhook. -4. Define **how** to notify your system by setting the **URL** and the **HTTP METHOD**. This tells us which endpoint to call. -5. (Optional) Add custom HTTP headers and a request body if needed. + + +Go to the Webhooks screen. + + +Click the **+ ADD WEBHOOK** button. + + +Choose **when** webhook notifications should be sent by selecting the **Config** and **Environment** where changes should trigger the Webhook. + + +Define **how** to notify your system by setting the **URL** and the **HTTP METHOD**. This tells us which endpoint to call. + + +(Optional) Add custom HTTP headers and a request body if needed. + + ## Request body with variables @@ -55,16 +68,24 @@ The ##ChangeDetails## variable is replaced with a JSON array in the following fo ``` ## Testing your Webhook - -1. Change some of your settings in the _ConfigCat Dashboard._ -2. Click **SAVE & PUBLISH CHANGES**. -3. Check if your Webhook was called correctly. + + +Change some of your settings in the _ConfigCat Dashboard._ + + +Click **SAVE & PUBLISH CHANGES**. + + +Check if your Webhook was called correctly. :::info **Developer Tip** - Running your Webhook on `localhost`? Expose it to the public internet temporarily by using a tool like ngrok. This enables ConfigCat to call your webhook even in your local development environment. - Just interested in what ConfigCat sends? Try [Webhhok.site](https://webhook.site/). This allows you to catch HTTP requests and see their content without requiring your to run anything anywhere. ::: + + + ## Verifying Webhook requests @@ -378,28 +399,49 @@ it will retry the request up to 5 times, using variable delays between attempts. ## Connecting to Slack A few steps to set up Slack and get a message when a setting changes: - -1. In Slack, create an Incoming Webhook and copy the **Webhook URL**. -2. In ConfigCat, go to the Webhooks screen, and click **+ ADD WEBHOOK**. -3. Paste Slack's **Webhhok URL** to ConfigCat's **URL** field. -4. Select **POST** as the **HTTP METHOD**. -5. Add the following request body: + + +In Slack, create an Incoming Webhook and copy the **Webhook URL**. + + +In ConfigCat, go to the Webhooks screen, and click **+ ADD WEBHOOK**. + + +Paste Slack's **Webhhok URL** to ConfigCat's **URL** field. + + +Select **POST** as the **HTTP METHOD**. + + +Add the following request body: ``` { "text": "<##URL##|##ConfigName## - ##EnvironmentName##> changed in ConfigCat: \n\n##ChangeDetailsSlack##" } ``` + + ## Connecting to Microsoft Teams A few steps to set up Microsoft Teams and get a message when a setting changes: -1. In Microsoft Teams, create an Incoming Webhook and copy the **Webhook URL**. -2. In ConfigCat, go to the Webhooks screen, and click **+ ADD WEBHOOK**. -3. Paste Microsoft Teams' **Webhhok URL** to ConfigCat's **URL** field. -4. Select **POST** as the **HTTP METHOD**. -5. Add the following request body: + + +In Microsoft Teams, create an Incoming Webhook and copy the **Webhook URL**. + + +In ConfigCat, go to the Webhooks screen, and click **+ ADD WEBHOOK**. + + +Paste Microsoft Teams' **Webhhok URL** to ConfigCat's **URL** field. + + +Select **POST** as the **HTTP METHOD**. + + +Add the following request body: ``` { @@ -419,3 +461,5 @@ A few steps to set up Microsoft Teams and get a message when a setting changes: ] } ``` + + diff --git a/website/docs/advanced/proxy/overview.mdx b/website/docs/advanced/proxy/overview.mdx index fa8c89650..90e4e658a 100644 --- a/website/docs/advanced/proxy/overview.mdx +++ b/website/docs/advanced/proxy/overview.mdx @@ -8,6 +8,7 @@ toc_max_heading_level: 5 import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; +import { Steps, Step, Title } from '@site/src/components/Steps'; The ConfigCat Proxy allows you to host a feature flag evaluation service in your own infrastructure. It's a small Go application that communicates with ConfigCat's CDN network and caches/proxies *config JSON* files for your frontend and backend applications. The *config JSON* contains all the data that is needed for ConfigCat SDKs to evaluate feature flags. @@ -110,10 +111,16 @@ You can then check the [status endpoint](monitoring.mdx#status) of the Proxy to This section describes the possible ways of how you can use the Proxy from your application. You can decide where you want the actual feature flag evaluation to happen. -- **Local evaluation**: Feature flags are evaluated by a ConfigCat SDK running in your application. The Proxy only provides the data required for the evaluation process. -- **Remote evaluation**: Feature flags are evaluated within the Proxy, your application only gets the result of the evaluation process. -### 1. Local evaluation using a ConfigCat SDK connected to the Proxy +**Local evaluation**: Feature flags are evaluated by a ConfigCat SDK running in your application. The Proxy only provides the data required for the evaluation process. + +**Remote evaluation**: Feature flags are evaluated within the Proxy, your application only gets the result of the evaluation process. + + + + +### Local evaluation using a ConfigCat SDK connected to the Proxy {#1-local-evaluation-using-a-configcat-sdk-connected-to-the-proxy} + The Proxy has the ability to forward all information required for feature flag evaluation to ConfigCat SDKs via its [CDN proxy](endpoints.mdx#cdn-proxy) endpoint. This means that you can set up your ConfigCat SDK instances to use the Proxy as their data source. @@ -146,7 +153,12 @@ var configCatClient = configcat.getClient( ); ``` -### 2. Remote evaluation with the Proxy's API endpoints + + + + +### Remote evaluation with the Proxy's API endpoints {#2-remote-evaluation-with-the-proxys-api-endpoints} + You can leverage the Proxy's server side feature flag evaluation feature by sending simple HTTP requests to the Proxy's API endpoints. @@ -212,14 +224,15 @@ try { You can find the available API endpoints with their HTTP request/response schemas [here](endpoints.mdx#api). -### 3. Remote evaluation with OpenFeature Remote Evaluation Protocol (OFREP) + -:::info -OFREP compatibility is only available from Proxy version v2.0.0. -::: + + +### Remote evaluation with OpenFeature Remote Evaluation Protocol (OFREP) {#3-remote-evaluation-with-openfeature-remote-evaluation-protocol-ofrep} + :::info -The OFREP feature of the Proxy is turned OFF by default, to use it, you have to turn it ON with the [OFREP endpoint options](endpoints.mdx#available-options-2). +OFREP compatibility is only available from Proxy version v2.0.0. ::: The Proxy conforms to the OpenFeature Remote Evaluation Protocol, which means it can be used with OFREP compatible OpenFeature providers. @@ -261,7 +274,12 @@ OpenFeature.setProvider( You can find the available OFREP endpoints with their HTTP request/response schemas [here](endpoints.mdx#openfeature-remote-evaluation-protocol-ofrep). -### 4. Remote evaluation and streaming with SSE + + + + +### Remote evaluation and streaming with SSE {#4-remote-evaluation-and-streaming-with-sse} + The Proxy has the ability to evaluate feature flags and send notifications about subsequent evaluated flag value changes through Server-Sent Events connections. @@ -308,11 +326,19 @@ evtSource.onmessage = (event) => { For more information and usage examples, see the related [SSE endpoints documentation](endpoints.mdx#sse). -### 5. Remote evaluation and streaming with gRPC + + + + +### Remote evaluation and streaming with gRPC {#5-remote-evaluation-and-streaming-with-grpc} + The Proxy supports both unary feature flag evaluation RPCs and server streaming of evaluated flag value changes. For more information and usage examples, see the [gRPC section of this documentation](grpc.mdx). + + + ## Configuration Options You can specify options for the Proxy either via a YAML file or with environment variables. When an option is defined in both places, the environment variable's value takes precedence. @@ -468,7 +494,11 @@ That is, the SDK identifier is effectively an alias for the associated SDK key a There are two ways to let the Proxy know which SDK Keys it should use: -### 1. Automatic configuration with Proxy profiles + + + +### Automatic configuration with Proxy profiles {#1-automatic-configuration-with-proxy-profiles} + :::info **Beta Feature**: Automatic configuration with Proxy profiles is in public beta. @@ -512,21 +542,18 @@ To connect a Proxy instance to a Proxy profile, follow these steps: ```yaml title="options.yml" profile: - key: - secret: + webhook_signing_key: ``` ```shell - CONFIGCAT_PROFILE_KEY="" - CONFIGCAT_PROFILE_SECRET="" + CONFIGCAT_PROFILE_WEBHOOK_SIGNING_KEY="" ``` -
- #### Select which SDK Keys your Proxy should use Click on the edit icon in the `SDK Keys` column. @@ -859,8 +886,11 @@ To connect a Proxy instance to a Proxy profile, follow these steps: :::info Offline Proxy instances only need the profile's `key` to read the connected profile from the cache, the `secret` option is not mandatory in this mode. ::: - -### 2. Manual configuration +
+ + +### Manual configuration {#2-manual-configuration} + When using environment variables, the SDK keys can be specified as a JSON object, where the **property name is the SDK identifier** (the identifier of the config-environment pair whose SDK Key the underlying SDK instance is configured to use) and the **property value is the actual SDK key**. The **SDK identifier** part is later used in [endpoint routes](endpoints.mdx) to recognize which SDK must serve the given flag evaluation request. @@ -1374,6 +1404,9 @@ CONFIGCAT_MY_SDK_OFFLINE_LOCAL_POLL_INTERVAL=5 + +
+ ## Default User Attributes There's an option to predefine [User Object](../../targeting/user-object.mdx) attributes with default values. Whenever the Proxy receives an evaluation request, it will automatically attach these predefined attributes to the request. If the evaluation request contains a different value for an attribute you previously defined, the request's value will take precedence. diff --git a/website/docs/advanced/team-management/team-management-basics.mdx b/website/docs/advanced/team-management/team-management-basics.mdx index 4faa75f87..f7b460d8d 100644 --- a/website/docs/advanced/team-management/team-management-basics.mdx +++ b/website/docs/advanced/team-management/team-management-basics.mdx @@ -4,16 +4,28 @@ title: Team Management Basics description: ConfigCat provides an unlimited number of team members for every subscription plan, even the free one. Here is how to manage your team. --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + _Team members_ are your friends, colleagues, and clients who work on the same _Product_. You can invite as many of them to your _Product_ as you want. The following guide provides an overview of how to manage your team in ConfigCat. ## Invite others to collaborate -1. Click the `Invite Team Members` button on the sidebar. -1. Enter the invitees' email addresses (comma separated list). -1. Select a _Permission group_ and click on **SEND INVITATION EMAIL**. -1. An invitation will be sent to the invitees' email addresses. + + +Click the `Invite Team Members` button on the sidebar. + + +Enter the invitees' email addresses (comma separated list). + + +Select a _Permission group_ and click on **SEND INVITATION EMAIL**. + + +An invitation will be sent to the invitees' email addresses. + + You can modify their permission group later anytime. diff --git a/website/docs/advanced/troubleshooting.mdx b/website/docs/advanced/troubleshooting.mdx index 2e8c0f96b..334e94880 100644 --- a/website/docs/advanced/troubleshooting.mdx +++ b/website/docs/advanced/troubleshooting.mdx @@ -4,6 +4,8 @@ title: Troubleshooting description: This section helps you troubleshoot your issues. It's a good idea to double check these before contacting support. --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + The following issues were reported by customers. We've collected what we've learned and provided the possible solutions below. ## Long response times and connection issues @@ -12,26 +14,48 @@ First, check the [Service Status Monitor](https://status.configcat.com) to see i ### General SDK Checklist -1. Make sure you're using the latest version of the ConfigCat SDK. -1. Check if you've configured the [Data Governance](../advanced/data-governance.mdx) functionality correctly. -1. Singleton: We strongly recommend using the ConfigCat SDK as a Singleton object. Initializing the SDK multiple times can cause serious performance issues in production. If you need to use multiple SDK Keys in the same application, create only one _ConfigCat Client_ per SDK Key. -1. Are you using the proper polling mode for your use case? Details on polling modes in the [SDK + + +Make sure you're using the latest version of the ConfigCat SDK. + + +Check if you've configured the [Data Governance](../advanced/data-governance.mdx) functionality correctly. + + +Singleton: We strongly recommend using the ConfigCat SDK as a Singleton object. Initializing the SDK multiple times can cause serious performance issues in production. If you need to use multiple SDK Keys in the same application, create only one _ConfigCat Client_ per SDK Key. + + +Are you using the proper polling mode for your use case? Details on polling modes in the [SDK Docs](../sdk-reference/overview.mdx). -1. Are you using the right polling interval for `Auto Polling`? Too frequent polling will increase your network traffic. Please check the [SDK Docs](../sdk-reference/overview.mdx). -1. In `Manual Polling` mode, are you calling `forceRefresh()` in your code as frequently as needed? Excessive refreshes will increase your network traffic. -1. You can try one of our lightweight sample applications to rule out local issues. Find in the [repository of each SDK](https://github.com/configcat). + + +Are you using the right polling interval for `Auto Polling`? Too frequent polling will increase your network traffic. Please check the [SDK Docs](../sdk-reference/overview.mdx). + + +In `Manual Polling` mode, are you calling `forceRefresh()` in your code as frequently as needed? Excessive refreshes will increase your network traffic. + + +You can try one of our lightweight sample applications to rule out local issues. Find in the [repository of each SDK](https://github.com/configcat). + + ### Network Checklist :::caution -Please, **do not load test** the ConfigCat production infrastructure without our consent. +**Do not load test** the ConfigCat production infrastructure without our consent. ::: -1. You can check response times manually by navigating to `https://cdn.configcat.com/ping.txt` and opening your browser's network tab. -1. Does the machine/server running your code have access to the above address? -1. You might need to whitelist the following addresses in your firewall: `cdn.configcat.com`, `cdn-eu.configcat.com`, `cdn-global.configcat.com`. - ---- + + +You can check response times manually by navigating to `https://cdn.configcat.com/ping.txt` and opening your browser's network tab. + + +Does the machine/server running your code have access to the above address? + + +You might need to whitelist the following addresses in your firewall: `cdn.configcat.com`, `cdn-eu.configcat.com`, `cdn-global.configcat.com`. + + ## Too many requests error in Angular diff --git a/website/docs/faq.mdx b/website/docs/faq.mdx index 18ddebe02..b7b3b7c9c 100644 --- a/website/docs/faq.mdx +++ b/website/docs/faq.mdx @@ -6,6 +6,8 @@ description: This is a collection of frequently asked questions and the most typ export const FaqSchema = require('@site/src/schema-markup/faq.json'); +import { Steps, Step, Title } from '@site/src/components/Steps'; + A collection of frequently asked questions. @@ -45,9 +47,17 @@ Discounts are available through our partnership program. [Contact us](https://co Currently, there's no direct way to change the email address of an account. However, you can: -1. Invite the new email to join your ConfigCat organization; this will create a fresh ConfigCat account. -2. Grant all the necessary permissions to the new account. -3. Proceed with deleting your old account from [here](https://app.configcat.com/my-account). + + +Invite the new email to join your ConfigCat organization; this will create a fresh ConfigCat account. + + +Grant all the necessary permissions to the new account. + + +Proceed with deleting your old account from [here](https://app.configcat.com/my-account). + + If you don't have the required permissions, contact your organization admin or a team member who has "Team members and permission groups" permissions. diff --git a/website/docs/getting-started.mdx b/website/docs/getting-started.mdx index ea69aa1e3..b4f91d91f 100644 --- a/website/docs/getting-started.mdx +++ b/website/docs/getting-started.mdx @@ -4,6 +4,8 @@ title: Getting Started description: This is a step-by-step guide on how to get started with ConfigCat feature flags and on how to implement feature flags in an application. --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + This page is an overview and a short guide on how to get started. **ConfigCat** is a cloud-based service that lets you release features without code deployments. @@ -18,10 +20,16 @@ then you can **connect your application** to the ConfigCat service to access you ### Create a feature flag on the _ConfigCat Dashboard_ -1. Log in to the _Dashboard_ -2. Click _ADD FEATURE FLAG_ and give it a name. + + +Log in to the _Dashboard_ + + +Click _ADD FEATURE FLAG_ and give it a name. Add feature flag + + ### Explore with Our Tutorial App diff --git a/website/docs/integrations/amplitude.mdx b/website/docs/integrations/amplitude.mdx index 7b720ef84..b325e96b6 100644 --- a/website/docs/integrations/amplitude.mdx +++ b/website/docs/integrations/amplitude.mdx @@ -7,6 +7,7 @@ description: ConfigCat Amplitude integration reference. This is a step-by-step g import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; +import { Steps, Step } from '@site/src/components/Steps'; ## Overview @@ -22,20 +23,44 @@ Every feature flag change in ConfigCat is annotated on the Amplitude charts as a ### Installation -1. Have an Amplitude subscription. -2. Get an Amplitude API Key and Secret Key. - amplitude_apikey_secretkey -3. Open the integrations tab on ConfigCat Dashboard. -4. Click on Amplitude's **Connect** button and set your Amplitude API key and Secret key. -5. You're all set. Go ahead and make some changes on your feature flags, then check your charts in Amplitude. + + +Have an Amplitude subscription. + + +Get an Amplitude API Key and Secret Key. +amplitude_apikey_secretkey + + +Open the integrations tab on ConfigCat Dashboard. + + +Click on Amplitude's **Connect** button and set your Amplitude API key and Secret key. + + +You're all set. Go ahead and make some changes on your feature flags, then check your charts in Amplitude. + + ### Un-installation -1. Open the integrations tab on ConfigCat Dashboard. -2. Click on Amplitude's **Connected** button. -2. Select the connection from the **Connected** dropdown. -3. Click the **Disconnect** button in the edit dialog. -4. Click **Yes** in the confirmation dialog. + + +Open the integrations tab on ConfigCat Dashboard. + + +Click on Amplitude's **Connected** button. + + +Select the connection from the **Connected** dropdown. + + +Click the **Disconnect** button in the edit dialog. + + +Click **Yes** in the confirmation dialog. + + ### Chart Annotation @@ -53,202 +78,213 @@ Ensures that feature flag evaluations are logged into Identify API in Amplitude to enrich all your events with feature flag metadata. This way you can easily group/filter your existing Amplitude events by feature flag evaluations. - -Code samples: - - -```js -const configCatClient = configcat.getClient("#YOUR_SDK_KEY", PollingMode.AutoPoll, { - setupHooks: (hooks) => - hooks.on('flagEvaluated', evaluationDetails => { + + +**Install SDKs:** Add both the ConfigCat SDK and Amplitude SDK to your application. + + +**Configure SDKs:** +- **ConfigCat SDK:** Initialize with your ConfigCat SDK key. +- **Amplitude SDK:** Set up with your Amplitude ApiKey. + + +**Integrate Feature Flag Evaluations:** +- During the initialization of the ConfigCat SDK, subscribe to the `flagEvaluated` hook. +- Send feature flag evaluation data to Amplitude using the `$exposure` event name. Include the following parameters: + - `flag_key`: the feature flag's key. + - `variant`: the evaluated feature flag's value or variation ID + - `variation_id` (optional): the evaluated feature flag's variation ID +- You can use the Identify API in Amplitude to enrich all your events with feature flag metadata. This way you can easily group/filter your existing Amplitude events by feature flag evaluations. + +- Code samples: + + + ```js + const configCatClient = configcat.getClient("#YOUR_SDK_KEY", PollingMode.AutoPoll, { + setupHooks: (hooks) => + hooks.on('flagEvaluated', evaluationDetails => { + // Send an `$exposure` event. + amplitude.track('$exposure', + { + 'flag_key': evaluationDetails.key, + 'variant': evaluationDetails.value, + 'variation_id': evaluationDetails.variationId + }); + + // Use the identify API. + const identifyEvent = new amplitude.Identify(); + identifyEvent.set("configcat_" + evaluationDetails.key, evaluationDetails.value); + amplitude.identify(identifyEvent); + }), + }); + ``` + + + + ```tsx + + hooks.on('flagEvaluated', evaluationDetails => { // Send an `$exposure` event. amplitude.track('$exposure', { - 'flag_key': evaluationDetails.key, - 'variant': evaluationDetails.value, - 'variation_id': evaluationDetails.variationId + 'flag_key': evaluationDetails.key, + 'variant': evaluationDetails.value, + 'variation_id': evaluationDetails.variationId }); // Use the identify API. const identifyEvent = new amplitude.Identify(); identifyEvent.set("configcat_" + evaluationDetails.key, evaluationDetails.value); amplitude.identify(identifyEvent); - }), -}); -``` - - - -```tsx - - hooks.on('flagEvaluated', evaluationDetails => { + }), + }} + > + + ``` + + + + ```python + def on_flag_evaluated(evaluation_details): + # Send an `$exposure` event. + amplitude.track( + BaseEvent( + event_type="$exposure", + user_id=evaluation_details.user.get_identifier(), + event_properties={ + "flag_key": evaluation_details.key, + "variant": evaluation_details.value, + "variation_id": evaluation_details.variation_id + } + )) + + # Use the identify API. + identify_obj=Identify() + identify_obj.set(f'configcat_{evaluationDetails.key}', evaluation_details.value) + amplitude.identify(identify_obj, EventOptions(user_id=evaluation_details.user.get_identifier())) + pass + + client = configcatclient.get('#YOUR-SDK-KEY#', + ConfigCatOptions( + hooks=Hooks(on_flag_evaluated=on_flag_evaluated) + ) + ) + ``` + + + + ```go + client := configcat.NewCustomClient(configcat.Config{SDKKey: "#YOUR-SDK-KEY#", + Hooks: &configcat.Hooks{OnFlagEvaluated: func(details *configcat.EvaluationDetails) { + // Send an `$exposure` event. + amplitude.Track(amplitude.Event{ + UserID: details.Data.User.(*configcat.UserData).Identifier, + EventType: "$exposure", + EventProperties: map[string]interface{}{ + "flag_key": details.Data.Key, + "variant": details.Value, + "variation_id": details.Data.VariationID, + }, + }) + + // Use the identify API. + identifyObj := amplitude.Identify{} + identifyObj.Set("configcat_" + details.Data.Key, details.Value) + amplitude.Identify(identifyObj, amplitude.EventOptions{UserID: details.Data.User.(*configcat.UserData).Identifier}) + }}}) + ``` + + + + ```java + ConfigCatClient client = ConfigCatClient.get("#YOUR-SDK-KEY#", options -> { + options.hooks().addOnFlagEvaluated(details -> { // Send an `$exposure` event. - amplitude.track('$exposure', - { - 'flag_key': evaluationDetails.key, - 'variant': evaluationDetails.value, - 'variation_id': evaluationDetails.variationId - }); + JSONObject eventProps = new JSONObject(); + eventProps.put("flag_key", details.getKey()); + eventProps.put("variant", details.getValue()); + eventProps.put("variation_id", details.getVariationId()); + Event event = new Event("$exposure", details.getUser().getIdentifier()); + amplitude.logEvent(event); // Use the identify API. - const identifyEvent = new amplitude.Identify(); - identifyEvent.set("configcat_" + evaluationDetails.key, evaluationDetails.value); - amplitude.identify(identifyEvent); - }), - }} -> - -``` - - - -```python -def on_flag_evaluated(evaluation_details): - # Send an `$exposure` event. - amplitude.track( - BaseEvent( - event_type="$exposure", - user_id=evaluation_details.user.get_identifier(), - event_properties={ - "flag_key": evaluation_details.key, - "variant": evaluation_details.value, - "variation_id": evaluation_details.variation_id - } - )) - - # Use the identify API. - identify_obj=Identify() - identify_obj.set(f'configcat_{evaluationDetails.key}', evaluation_details.value) - amplitude.identify(identify_obj, EventOptions(user_id=evaluation_details.user.get_identifier())) - pass - -client = configcatclient.get('#YOUR-SDK-KEY#', - ConfigCatOptions( - hooks=Hooks(on_flag_evaluated=on_flag_evaluated) - ) -) -``` - - - -```go -client := configcat.NewCustomClient(configcat.Config{SDKKey: "#YOUR-SDK-KEY#", - Hooks: &configcat.Hooks{OnFlagEvaluated: func(details *configcat.EvaluationDetails) { + JSONObject userProps = new JSONObject(); + userProps.put("configcat_" + details.getKey(), details.getValue()); + Event updateUser = new Event("$identify", details.getUser().getIdentifier()); + updateUser.userProperties = userProps; + amplitude.logEvent(event); + }); + }); + ``` + + + + ```java + ConfigCatClient client = ConfigCatClient.get("#YOUR-SDK-KEY#", options -> { + options.hooks().addOnFlagEvaluated(details -> { // Send an `$exposure` event. - amplitude.Track(amplitude.Event{ - UserID: details.Data.User.(*configcat.UserData).Identifier, - EventType: "$exposure", - EventProperties: map[string]interface{}{ - "flag_key": details.Data.Key, - "variant": details.Value, - "variation_id": details.Data.VariationID, - }, - }) - + amplitude.track( + "$exposure", + mutableMapOf( + "flag_key" to details.getKey(), + "variant" to details.getValue(), + "variation_id" to details.getVariationId() + )) + // Use the identify API. - identifyObj := amplitude.Identify{} - identifyObj.Set("configcat_" + details.Data.Key, details.Value) - amplitude.Identify(identifyObj, amplitude.EventOptions{UserID: details.Data.User.(*configcat.UserData).Identifier}) - }}}) -``` - - - -```java -ConfigCatClient client = ConfigCatClient.get("#YOUR-SDK-KEY#", options -> { - options.hooks().addOnFlagEvaluated(details -> { - // Send an `$exposure` event. - JSONObject eventProps = new JSONObject(); - eventProps.put("flag_key", details.getKey()); - eventProps.put("variant", details.getValue()); - eventProps.put("variation_id", details.getVariationId()); - Event event = new Event("$exposure", details.getUser().getIdentifier()); - amplitude.logEvent(event); - - // Use the identify API. - JSONObject userProps = new JSONObject(); - userProps.put("configcat_" + details.getKey(), details.getValue()); - Event updateUser = new Event("$identify", details.getUser().getIdentifier()); - updateUser.userProperties = userProps; - amplitude.logEvent(event); + val identify = Identify() + identify.set("configcat_" + details.getKey(), details.getValue()) + }); }); -}); -``` - - - -```java -ConfigCatClient client = ConfigCatClient.get("#YOUR-SDK-KEY#", options -> { - options.hooks().addOnFlagEvaluated(details -> { - // Send an `$exposure` event. - amplitude.track( - "$exposure", - mutableMapOf( - "flag_key" to details.getKey(), - "variant" to details.getValue(), - "variation_id" to details.getVariationId() - )) + ``` + - // Use the identify API. - val identify = Identify() - identify.set("configcat_" + details.getKey(), details.getValue()) - }); -}); -``` - - - -```swift -let client = ConfigCatClient.get(sdkKey: "#YOUR-SDK-KEY#") { options in - options.hooks.addOnFlagEvaluated { details in - // Send an `$exposure` event. - let event = BaseEvent( - eventType: "$exposure", - eventProperties: [ - "flag_key": details.key, - "variant": details.value, - "variation_id": details.variationId ?? "" - ] - ) + + ```swift + let client = ConfigCatClient.get(sdkKey: "#YOUR-SDK-KEY#") { options in + options.hooks.addOnFlagEvaluated { details in + // Send an `$exposure` event. + let event = BaseEvent( + eventType: "$exposure", + eventProperties: [ + "flag_key": details.key, + "variant": details.value, + "variation_id": details.variationId ?? "" + ] + ) - // Use the identify API. - let identify = Identify() - identify.set(property: "configcat_" + details.key, value: details.value) - amplitude.identify(identify: identify) + // Use the identify API. + let identify = Identify() + identify.set(property: "configcat_" + details.key, value: details.value) + amplitude.identify(identify: identify) + } } -} -``` - - - -While our documentation primarily provides code examples for languages that Amplitude natively supports and has an official SDK, -you can integrate with other languages by sending an event to Amplitude with a third-party SDK or with using the Amplitude's Upload request API. - -1. **Subscribe to the FlagEvaluated hook** in the ConfigCat SDK. -2. **Send an event to Amplitude** using the `$exposure` event name. Include the following event properties: - - `flag_key`: the feature flag's key from the FlagEvaluated hook's EvaluationDetails - - `variant`: the evaluated feature flag's value or the variationId from the FlagEvaluated hook's EvaluationDetails - - `variation_id`: the evaluated feature flag's value or the variationId from the FlagEvaluated hook's EvaluationDetails - - `user_id` (optional): in case you are using the tracking in a backend component or you don't identify all your event sendings to Amplitude with user details, -you have to send the `user_id` property as well to identify your user. You can use the User object's Identifier property from the FlagEvaluated hook or a value that best describes your user. - - - + ``` + + + + While our documentation primarily provides code examples for languages that Amplitude natively supports and has an official SDK, + you can integrate with other languages by sending an event to Amplitude with a third-party SDK or with using the Amplitude's Upload request API. + + + **Subscribe to the FlagEvaluated hook** in the ConfigCat SDK. + + + **Send an event to Amplitude** using the `$exposure` event name. Include the following event properties: + - `flag_key`: the feature flag's key from the FlagEvaluated hook's EvaluationDetails + - `variant`: the evaluated feature flag's value or the variationId from the FlagEvaluated hook's EvaluationDetails + - `variation_id`: the evaluated feature flag's value or the variationId from the FlagEvaluated hook's EvaluationDetails + - `user_id` (optional): in case you are using the tracking in a backend component or you don't identify all your event sendings to Amplitude with user details, + you have to send the `user_id` property as well to identify your user. You can use the User object's Identifier property from the FlagEvaluated hook or a value that best describes your user. + + + + + :::note For Text feature flags with lengthy values (e.g., JSON), send the `variationId` instead of the `value` as the `variant` to Amplitude. @@ -257,7 +293,11 @@ The `variationId` is a hashed version of the feature flag value, accessible on t For more information about Variation IDs, see [Variation ID for analytics](/advanced/variation-id-for-analytics). ::: -4. Deploy your application and wait for feature flag evaluations to happen so Experiments in Amplitude could be populated. + + +Deploy your application and wait for feature flag evaluations to happen so Experiments in Amplitude could be populated. + + ### Usage with Experiments Check your Experiments page in Amplitude and select your feature flag as the Experiment. diff --git a/website/docs/integrations/datadog.mdx b/website/docs/integrations/datadog.mdx index a81f40fa7..a2262189f 100644 --- a/website/docs/integrations/datadog.mdx +++ b/website/docs/integrations/datadog.mdx @@ -4,6 +4,8 @@ title: Datadog - Monitor your feature flags events description: ConfigCat Datadog integration. This is a step-by-step guide on how to connect the ConfigCat feature flag service events to Datadog. --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + ## Overview Monitor feature flag events in real-time. Feature flag changes will appear as events in Datadog, tagged with relevant product, config, and environment details. @@ -12,23 +14,47 @@ Monitor feature flag events in real-time. Feature flag changes will appear as ev ## Installation -1. Have a Datadog subscription. -2. Get a Datadog API Key. + + +Have a Datadog subscription. + + +Get a Datadog API Key. Datadog API Key - -3. Open the integrations tab on ConfigCat Dashboard. -4. Click on Datadog's **Connect** button and set your Datadog API key. -5. OPTIONAL - Set the proper site of your Datadog account. [More about Datadog site](https://docs.datadoghq.com/getting_started/site/). -6. You're all set. Go ahead and make some changes on your feature flags, then check your Events in Datadog. + + +Open the integrations tab on ConfigCat Dashboard. + + +Click on Datadog's **Connect** button and set your Datadog API key. + + +OPTIONAL - Set the proper site of your Datadog account. [More about Datadog site](https://docs.datadoghq.com/getting_started/site/). + + +You're all set. Go ahead and make some changes on your feature flags, then check your Events in Datadog. + + ## Un-installation - -1. Open the integrations tab on ConfigCat Dashboard. -2. Click on Datadog's **Connected** button. -3. Select the connection from the **Connected** dropdown. -4. Click the **Disconnect** button in the edit dialog. -5. Click **Yes** in the confirmation dialog. + + +Open the integrations tab on ConfigCat Dashboard. + + +Click on Datadog's **Connected** button. + + +Select the connection from the **Connected** dropdown. + + +Click the **Disconnect** button in the edit dialog. + + +Click **Yes** in the confirmation dialog. + + ## Event details diff --git a/website/docs/integrations/google-analytics.mdx b/website/docs/integrations/google-analytics.mdx index 56562ded5..4f0a5610d 100644 --- a/website/docs/integrations/google-analytics.mdx +++ b/website/docs/integrations/google-analytics.mdx @@ -7,18 +7,24 @@ description: ConfigCat Google Analytics integration. This is a step-by-step guid import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; +import { Steps, Step, Title } from '@site/src/components/Steps'; ## Sending Feature Flag Evaluation Analytics to Google Analytics Integrate your feature flag evaluations with [Google Analytics experiments](https://developers.google.com/analytics/devguides/collection/ga4/integration) to gain advanced insights into how your features are used and to assess the outcomes of A/B tests. ### Setup Instructions - -1. **Install SDKs:** Add both the ConfigCat SDK and the Google Analytics SDK to your application. -2. **Configure SDKs:** + + +**Install SDKs:** Add both the ConfigCat SDK and the Google Analytics SDK to your application. + + +**Configure SDKs:** - **ConfigCat SDK:** Initialize with your ConfigCat SDK key. - **Google Analytics SDK:** Set up with your Google Analytics measurement ID. -3. **Integrate Feature Flag Evaluations:** + + +**Integrate Feature Flag Evaluations:** - During the initialization of the ConfigCat SDK, subscribe to the `flagEvaluated` hook. - Send feature flag evaluation data to Google Analytics using the `experience_impression` event name. Include the following parameter: - `exp_variant_string`: Construct this string to include the tool name (`configcat`), the feature flag's key, and its value. For example: `configcat-isMyAwesomeFeatureEnabled-true`. @@ -65,12 +71,17 @@ const configCatClient = configcat.getClient("#YOUR_SDK_KEY", PollingMode.AutoPol While our documentation primarily provides code examples for JavaScript-based SDKs, you can integrate with other languages by utilizing the Send Measurement Protocol events to Google Analytics endpoint. Here's how to set it up: -1. **Subscribe to the FlagEvaluated hook** in the ConfigCat SDK. -2. **Send an event to Google Analytics** using the `experience_impression` event name. Include the following event properties: + + +**Subscribe to the FlagEvaluated hook** in the ConfigCat SDK. + + +**Send an event to Google Analytics** using the `experience_impression` event name. Include the following event properties: - `exp_variant_string`: Format this string as `configcat--`. For example, `configcat-isMyAwesomeFeatureEnabled-true`. - `variant_id`: The evaluated feature flag's value or the variationId from the FlagEvaluated hook's EvaluationDetails. - `user_id` (optional): If tracking in a backend component and utilizing the user_id feature in Google Analytics, include this property to identify your user. Use the Identifier property from the User object in the FlagEvaluated hook, or another value that best describes your user. - + + @@ -79,10 +90,14 @@ For Text feature flags with lengthy values (e.g., JSON), send the `variationId` For more information about Variation IDs, see [Variation ID for analytics](/advanced/variation-id-for-analytics). ::: - -4. **Deploy your application** and wait for feature flag evaluations to occur. This process might take 1-2 days for the `experience_impression` events to populate in Google Analytics. - -5. **Define an audience** in Google Analytics using the `exp_variant_string` parameter with the same values you used in your events (e.g. `configcat-isMyAwesomeFeatureEnabled-true`) by following the guide [here](https://support.google.com/analytics/answer/9267572). This allows you to leverage feature flag evaluation events effectively. + + +**Deploy your application** and wait for feature flag evaluations to occur. This process might take 1-2 days for the `experience_impression` events to populate in Google Analytics. + + +**Define an audience** in Google Analytics using the `exp_variant_string` parameter with the same values you used in your events (e.g. `configcat-isMyAwesomeFeatureEnabled-true`) by following the guide [here](https://support.google.com/analytics/answer/9267572). This allows you to leverage feature flag evaluation events effectively. + + ### Example audiences reports diff --git a/website/docs/integrations/intellij.mdx b/website/docs/integrations/intellij.mdx index cb21695f1..2477d7721 100644 --- a/website/docs/integrations/intellij.mdx +++ b/website/docs/integrations/intellij.mdx @@ -4,6 +4,8 @@ title: JetBrains/IntelliJ Plugin - Manage your feature flags from JetBrains/Inte description: ConfigCat IntelliJ IDE Plugin. This is a step-by-step guide on how to use the ConfigCat JetBrains/IntelliJ Plugin to manage feature flags in your IDEs. --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + ConfigCat's JetBrains/IntelliJ IDE plugin to manage feature flags from IDEs. Connect your ConfigCat Product and Config to your JetBrains/IntelliJ IDE. Find your Feature Flag's usages in your code easily. @@ -30,19 +32,43 @@ This guide will help you install the JetBrains/IntelliJ IDE Plugin and familiari ### Install within the IDE from Marketplace -1. In your IDE, open the **File** > **Settings/Preferences** menu. -1. Go to the **Plugin** page and select the **Marketplace** tab. -1. Search for **ConfigCat Feature Flags**. -1. **Install** the plugin. -1. Configure the plugin ([see below](#configure-extension)). + + +In your IDE, open the **File** > **Settings/Preferences** menu. + + +Go to the **Plugin** page and select the **Marketplace** tab. + + +Search for **ConfigCat Feature Flags**. + + +**Install** the plugin. + + +Configure the plugin ([see below](#configure-extension)). + + ### Install manually within the IDE -1. Download the latest release from [GitHub](https://github.com/configcat/intellij-plugin/releases/latest) or from [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/26096-configcat-feature-flags). -1. In your IDE, open the **File** > **Settings/Preferences** menu. -1. Go to the **Plugin** page and open the **Gear Icon** menu. -1. Select the **Install plugin from disk...** option. -1. Configure the plugin ([see below](#configure-extension)). + + +Download the latest release from [GitHub](https://github.com/configcat/intellij-plugin/releases/latest) or from [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/26096-configcat-feature-flags). + + +In your IDE, open the **File** > **Settings/Preferences** menu. + + +Go to the **Plugin** page and open the **Gear Icon** menu. + + +Select the **Install plugin from disk...** option. + + +Configure the plugin ([see below](#configure-extension)). + + ### Compatible IDEs The plugin is compatible with the following IDEs. Check the plugin [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/26096-configcat-feature-flags) page for the full, detailed compatibility list. @@ -67,26 +93,45 @@ The plugin is compatible with the following IDEs. Check the plugin [JetBrains Ma ### Authentication -1. Get your API credentials for [ConfigCat Public Management API](https://app.configcat.com/my-account/public-api-credentials). -1. In your IDE, open the **File** > **Settings/Preferences** menu. -1. Search for **ConfigCat Feature Flags** page. -1. Fill out the **Basic auth user name** and **Basic auth password** inputs. + + +Get your API credentials for [ConfigCat Public Management API](https://app.configcat.com/my-account/public-api-credentials). + + +In your IDE, open the **File** > **Settings/Preferences** menu. + + +Search for **ConfigCat Feature Flags** page. + + +Fill out the **Basic auth user name** and **Basic auth password** inputs. + + + ### Advanced This section is for you if you use a dedicated hosted/[on-premise](https://configcat.com/on-premise/) ConfigCat instance. In that case, you can specify your custom ConfigCat URLs in the IDE. -1. In your IDE, open the **File** > **Settings/Preferences** menu. -1. Search for **ConfigCat Feature Flags** page. -1. Fill out the **Public Api Base URL** and **Dashboard Base URL** inputs. + + +In your IDE, open the **File** > **Settings/Preferences** menu. + + +Search for **ConfigCat Feature Flags** page. + + +Fill out the **Public Api Base URL** and **Dashboard Base URL** inputs. - `Public Api Base URL`: the base URL for the ConfigCat Public Management API. Defaults to: https://api.configcat.com. - `Dashboard Base URL`: the base URL for ConfigCat Dashboard. Defaults to: https://app.configcat.com. + + ## Usage of ConfigCat Feature Flags Plugin @@ -108,47 +153,96 @@ After you successfully configured your ConfigCat account in the **Settings**, yo #### Create a new Feature Flag - -1. Select the Config in the tree where you want to create your new flag. -1. Click the **+** button on the action bar to open the **Create Flag** dialog. -1. Select the setting type. -1. Enter the new Feature Flag name. -1. Enter the new Feature Flag key. -1. Add a hint to your Feature Flag (optional). -1. Select **OK** to confirm the Flag creation. + + +Select the Config in the tree where you want to create your new flag. + + +Click the **+** button on the action bar to open the **Create Flag** dialog. + + +Select the setting type. + + +Enter the new Feature Flag name. + + +Enter the new Feature Flag key. + + +Add a hint to your Feature Flag (optional). + + +Select **OK** to confirm the Flag creation. + + #### Copy a Feature Flag's key to the clipboard - -1. Select the Feature Flag in the tree whose key you want to copy. -1. Click the **Copy** button on the action bar to copy the key to the clipboard. + + +Select the Feature Flag in the tree whose key you want to copy. + + +Click the **Copy** button on the action bar to copy the key to the clipboard. + + #### Open your Feature Flags on the ConfigCat Dashboard - -1. In the tree, select the Feature Flag you want to open in the Dashboard. -1. Click the **Open Config in ConfigCat Dashboard** button on the action bar to open the Feature Flag in the Dashboard. + + +In the tree, select the Feature Flag you want to open in the Dashboard. + + +Click the **Open Config in ConfigCat Dashboard** button on the action bar to open the Feature Flag in the Dashboard. + + #### Find your Feature Flag's usages in your code - -1. Select the Feature Flag in the tree you want to search. -1. Click the **Find Usage** button on the action bar. -1. See the search results in the opened dialog. + + +Select the Feature Flag in the tree you want to search. + + +Click the **Find Usage** button on the action bar. + + +See the search results in the opened dialog. + + #### Create a new Config under a product - -1. Select the Products in the tree where you want to create your new config. -1. Click the **+** button on the action bar to open the **Create Config** dialog. -1. Enter a name for the new config. -1. Add a hint to your config (optional). -1. Select **OK** to confirm the Config creation. + + +Select the Products in the tree where you want to create your new config. + + +Click the **+** button on the action bar to open the **Create Config** dialog. + + +Enter a name for the new config. + + +Add a hint to your config (optional). + + +Select **OK** to confirm the Config creation. + + #### Open your Configs on the ConfigCat Dashboard -1. Select the Config which you want to open in the Dashboard. -1. Click the **Open Config in ConfigCat Dashboard** button on the action bar to open the Config in the Dashboard. + + +Select the Config which you want to open in the Dashboard. + + +Click the **Open Config in ConfigCat Dashboard** button on the action bar to open the Config in the Dashboard. :::info The actions are available by right click menu as well. ::: + + ### Help & Feedback Tab diff --git a/website/docs/integrations/jira.mdx b/website/docs/integrations/jira.mdx index 905a81b3d..46f4c805d 100644 --- a/website/docs/integrations/jira.mdx +++ b/website/docs/integrations/jira.mdx @@ -4,6 +4,8 @@ title: Jira Cloud Plugin - Manage feature flags from Jira description: ConfigCat Jira Cloud Plugin. This is a step-by-step guide on how to connect and manage feature flags from Jira Cloud boards. --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + The ConfigCat Feature Flags Jira Cloud Plugin allows you to connect your Jira Issues and feature flags. Create or link existing flags to your Jira issues without leaving your Jira instance. Turn features On/Off right from a linked Issue on your Jira board. You can also easily modify the linked flags to edit or add new Targeting or Percentage Rules. @@ -16,10 +18,18 @@ This integration is for Jira Cloud. It does not work on Jira Data Center or Jira ## Installation -1. Add ConfigCat Feature Flags to your Jira Cloud instance. -2. Select **Configure**. -3. Copy your ConfigCat Public API credentials to the inputs. Read more about ConfigCat Public API credentials here. -4. Click **Authorize**. + + +Add ConfigCat Feature Flags to your Jira Cloud instance. + + +Select **Configure**. + + +Copy your ConfigCat Public API credentials to the inputs. Read more about ConfigCat Public API credentials here. + + +Click **Authorize**. :::info Every Jira user must authorize ConfigCat in Jira who wants to use the ConfigCat Feature Flags Plugin. @@ -29,77 +39,138 @@ Every Jira user must authorize ConfigCat in Jira who wants to use the ConfigCat Your browser does not support the video tag. + + ## Usage ### Linking existing feature flags -1. Navigate to any Issue on your Jira board. -2. Open the **ConfigCat Feature Flag** issue context. -3. On the **Link existing** tab, select a ConfigCat Product, Config, Environment, and Feature Flag to be linked to your Issue. -4. When linked, you can manage the selected feature flag from this Issue. + + +Navigate to any Issue on your Jira board. + + +Open the **ConfigCat Feature Flag** issue context. + + +On the **Link existing** tab, select a ConfigCat Product, Config, Environment, and Feature Flag to be linked to your Issue. + + +When linked, you can manage the selected feature flag from this Issue. + + + ### Creating new feature flags -1. Navigate to any Issue on your Jira board. -2. Open the **ConfigCat Feature Flag** issue context. -3. On the **Create and Link** tab, select a ConfigCat Product and Config where you want to create the feature flag. -4. Set up your feature flag. -5. Select which environment you would like to link to this item. -6. When linked, you can manage the selected feature flag from this Issue. + + +Navigate to any Issue on your Jira board. + + +Open the **ConfigCat Feature Flag** issue context. + + +On the **Create and Link** tab, select a ConfigCat Product and Config where you want to create the feature flag. + + +Set up your feature flag. + + +Select which environment you would like to link to this item. + + +When linked, you can manage the selected feature flag from this Issue. + + ### View and Edit linked feature flags -1. Open an Issue on your Jira board with a linked feature flag. -2. See the linked feature flags in the **Feature Flag (ConfigCat)** issue section. -3. You can manage the selected feature flag from this Issue. -4. You can add new Targeting Rules or Percentage Options to Feature Flags. -5. You can add new Targeting Rules with User, Segment or Prerequisite Conditions with a large selection of Comparators. [Read more about Targeting.](../targeting/targeting-overview.mdx) -6. You can remove Targeting Rules as well. + + +Open an Issue on your Jira board with a linked feature flag. + + +See the linked feature flags in the **Feature Flag (ConfigCat)** issue section. + + +You can manage the selected feature flag from this Issue. + + +You can add new Targeting Rules or Percentage Options to Feature Flags. + + +You can add new Targeting Rules with User, Segment or Prerequisite Conditions with a large selection of Comparators. [Read more about Targeting.](../targeting/targeting-overview.mdx) + + +You can remove Targeting Rules as well. + + ### Remove linked feature flags -1. Open an Issue on your Jira board with a linked feature flag. -2. Remove the linked feature flag by opening the **More menu** and selecting the **Remove from Issue** option. + + +Open an Issue on your Jira board with a linked feature flag. + + +Remove the linked feature flag by opening the **More menu** and selecting the **Remove from Issue** option. + + ### View flag status in Releases -1. Open an Issue on your Jira board with a linked feature flag. -2. Check the **Releases** field values in the issue **Details** section to see the linked feature flags status in the Issue. -3. Click it for a more detailed dialog. + + +Open an Issue on your Jira board with a linked feature flag. + + +Check the **Releases** field values in the issue **Details** section to see the linked feature flags status in the Issue. + + +Click it for a more detailed dialog. + + -1. Open a version in the Jira project's Release Hub page to see the related issues feature flag status. -2. Click it for a more detailed dialog. + + +Open a version in the Jira project's Release Hub page to see the related issues feature flag status. + + +Click it for a more detailed dialog. + + :::info This plugin doesn't implement the **Releases - Create/Connect feature flag** action. Instead, you can create or link @@ -108,7 +179,7 @@ feature flags from the ConfigCat Feature Flags section below the Details section ### View linked issues in ConfigCat -1. View linked issues next to your Feature Flags in ConfigCat and jump to the Jira Issue directly. +View linked issues next to your Feature Flags in ConfigCat and jump to the Jira Issue directly. + + + ## Usage ### Linking existing feature flags -1. Open any Item on your monday.com board. -2. Push the **Link existing feature flag** button. -3. Select a Product, Config, Environment, and Feature Flag to be linked to your monday.com Item. -4. When linked, you can manage the selected feature flag from this monday.com Item. + + +Open any Item on your monday.com board. + + +Push the **Link existing feature flag** button. + + +Select a Product, Config, Environment, and Feature Flag to be linked to your monday.com Item. + + +When linked, you can manage the selected feature flag from this monday.com Item. + + + ### Creating new feature flags -1. Open any Item on your monday.com board. -2. Push the **Create and link feature flag** button. -3. Select a Product and Config where you want to create the feature flag. -4. Set up your feature flag. -5. Select which environment you would like to link to this Item. -6. When linked, you can manage the selected feature flag from this monday.com Item. + + +Open any Item on your monday.com board. + + +Push the **Create and link feature flag** button. + + +Select a Product and Config where you want to create the feature flag. + + +Set up your feature flag. + + +Select which environment you would like to link to this Item. + + +When linked, you can manage the selected feature flag from this monday.com Item. + + ### View and Edit linked feature flags -1. Open any Item on your monday.com board. -2. See the linked feature flags in the **Feature Flag (ConfigCat)** view. -3. You can manage the selected feature flag from this Item. -4. You can add new Targeting Rules or Percentage Options to Feature Flags. -5. You can add new Targeting Rules with User, Segment or Prerequisite conditions with a large selection of Comparators. [Read more about Targeting.](../targeting/targeting-overview.mdx) -6. You can remove Targeting Rules as well. + + +Open any Item on your monday.com board. + + +See the linked feature flags in the **Feature Flag (ConfigCat)** view. + + +You can manage the selected feature flag from this Item. + + +You can add new Targeting Rules or Percentage Options to Feature Flags. + + +You can add new Targeting Rules with User, Segment or Prerequisite conditions with a large selection of Comparators. [Read more about Targeting.](../targeting/targeting-overview.mdx) + + +You can remove Targeting Rules as well. + + ### Remove linked feature flags -1. Open any Item on your monday.com board with a linked feature flag. -2. Remove the linked feature flag by opening the **More menu** and selecting the **Unlink** option. + + +Open any Item on your monday.com board with a linked feature flag. + + +Remove the linked feature flag by opening the **More menu** and selecting the **Unlink** option. + + ### View linked Items in ConfigCat -1. View the linked Item next to your Feature Flags in ConfigCat and jump to the monday.com Item directly. +View the linked Item next to your Feature Flags in ConfigCat and jump to the monday.com Item directly. + + + ## Usage ### Linking existing feature flags -1. Open any Card on your Trello board. -2. Push the **Link Feature Flag** button. -3. Select a ConfigCat Product, Config, Environment, and Feature Flag to be linked to your Card. -4. When linked, you can manage the selected feature flag from this Card. + + +Open any Card on your Trello board. + + +Push the **Link Feature Flag** button. + + +Select a ConfigCat Product, Config, Environment, and Feature Flag to be linked to your Card. + + +When linked, you can manage the selected feature flag from this Card. + + ### Creating new feature flags -1. Open any Card on your Trello board. -2. Push the **Create and Link Feature Flag** button. -3. Select a ConfigCat Product and Config where you want to create the feature flag. -4. Set up your feature flag. -5. Select which environment you would like to link to this item. -6. When linked, you can manage the selected feature flag from this Card. + + +Open any Card on your Trello board. + + +Push the **Create and Link Feature Flag** button. + + +Select a ConfigCat Product and Config where you want to create the feature flag. + + +Set up your feature flag. + + +Select which environment you would like to link to this item. + + +When linked, you can manage the selected feature flag from this Card. + + ### View and Edit linked feature flags -1. Open a Card on your Trello board with a linked feature flag. -2. See the linked feature flags in the **Feature Flag (ConfigCat)** section. -3. You can manage the selected feature flag from this Card. -4. Add new Percentage Options to Feature Flags or Targeting Rules. -5. You can add new Targeting Rules with User, Segment or Prerequisite conditions with a large selection of Comparators. [Read more about Targeting.](../targeting/targeting-overview.mdx) -6. You can remove Targeting Rules as well. + + +Open a Card on your Trello board with a linked feature flag. + + +See the linked feature flags in the **Feature Flag (ConfigCat)** section. + + +You can manage the selected feature flag from this Card. + + +Add new Percentage Options to Feature Flags or Targeting Rules. + + +You can add new Targeting Rules with User, Segment or Prerequisite conditions with a large selection of Comparators. [Read more about Targeting.](../targeting/targeting-overview.mdx) + + +You can remove Targeting Rules as well. + + ### Remove linked feature flags -1. Open a Card on your Trello board with a linked feature flag. -2. In the **ConfigCat** section, click the **⋮** ("More" menu) in the top right corner of the feature flag panel. -3. Remove the linked feature flag by selecting the **Remove from card** option. + + +Open a Card on your Trello board with a linked feature flag. + + +In the **ConfigCat** section, click the **⋮** ("More" menu) in the top right corner of the feature flag panel. + + +Remove the linked feature flag by selecting the **Remove from card** option. + + ### View linked Cards in ConfigCat -1. In ConfigCat, find your feature flag. -2. Locate the **Connected tickets** section in the top right corner of the feature flag panel. -3. Jump to the Trello cards directly by clicking the links in the **Connected tickets** section. + + +In ConfigCat, find your feature flag. + + +Locate the **Connected tickets** section in the top right corner of the feature flag panel. + + +Jump to the Trello cards directly by clicking the links in the **Connected tickets** section. + + diff --git a/website/docs/integrations/vscode.mdx b/website/docs/integrations/vscode.mdx index 967877a56..bb6471391 100644 --- a/website/docs/integrations/vscode.mdx +++ b/website/docs/integrations/vscode.mdx @@ -4,6 +4,8 @@ title: Visual Studio Code - Manage your feature flags from VSCode description: ConfigCat Visual Studio Code extension. This is a step-by-step guide on how to use the ConfigCat Visual Studio Code extension to manage feature flags in your project. --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + ConfigCat's Visual Studio Code extension to manage feature flags from Visual Studio Code. Connect your ConfigCat Product and Config to your Visual Studio Code Workspace. Find your Feature Flag's usages in your code easily. @@ -31,23 +33,41 @@ This guide will help you with the Visual Studio Code Extensions installation and ## Install extension ### Install from Visual Studio Code Marketplace - -1. In the Visual Studio Marketplace, open the [ConfigCat Feature Flags Extension](https://marketplace.visualstudio.com/items?itemName=ConfigCat.configcat-feature-flags). -1. Click on the **Install** button. -1. [Configure extension](#configure-extension). + + +In the Visual Studio Marketplace, open the [ConfigCat Feature Flags Extension](https://marketplace.visualstudio.com/items?itemName=ConfigCat.configcat-feature-flags). + + +Click on the **Install** button. + + +[Configure extension](#configure-extension). + + ### Install within Visual Studio Code - -1. In Visual Studio Code, open the Extensions page, and search for ConfigCat Feature Flags. -1. Click on the **Install** button. -1. [Configure extension](#configure-extension). + + +In Visual Studio Code, open the Extensions page, and search for ConfigCat Feature Flags. + + +Click on the **Install** button. + + +[Configure extension](#configure-extension). + + ## Configure extension ### Authentication -1. Get your API credentials for [ConfigCat Public Management API](https://app.configcat.com/my-account/public-api-credentials). -1. Authenticate ConfigCat in Visual Studio Code by + + +Get your API credentials for [ConfigCat Public Management API](https://app.configcat.com/my-account/public-api-credentials). + + +Authenticate ConfigCat in Visual Studio Code by - clicking on the ConfigCat Feature Flags icon on the Activity Bar and clicking on any of the **Authenticate** buttons. - or running the **ConfigCat - Log In** command from the Command Palette. @@ -55,6 +75,8 @@ This guide will help you with the Visual Studio Code Extensions installation and Your browser does not support the video tag. + + ### Advanced @@ -84,34 +106,79 @@ After you successfully connect your ConfigCat Config to your Visual Studio Code #### View or Update your Feature Flag's value -1. Open the **Feature Flags & Settings** view. -1. Find the Flag and click the **View or Update Feature Flag values** icon next to the Flag name. -1. Select the Environment. -1. See the Feature Flag in the opened tab. -1. You can turn your features On / Off right from the opened tab. -1. You can add new Targeting Rules with User, Segment or Prerequisite conditions with a large selection of Comparators. [Read more about Targeting.](../targeting/targeting-overview.mdx) -1. You can add new Percentage Options to Feature Flags or Targeting Rules + + +Open the **Feature Flags & Settings** view. + + +Find the Flag and click the **View or Update Feature Flag values** icon next to the Flag name. + + +Select the Environment. + + +See the Feature Flag in the opened tab. + + +You can turn your features On / Off right from the opened tab. + + +You can add new Targeting Rules with User, Segment or Prerequisite conditions with a large selection of Comparators. [Read more about Targeting.](../targeting/targeting-overview.mdx) + + +You can add new Percentage Options to Feature Flags or Targeting Rules + + #### Create a new Feature Flag -1. Open the **Feature Flags & Settings** view. -1. Click the **+** in the view header. -1. Select the Setting type. -1. Enter the new Feature Flag name. -1. Enter the new Feature Flag key. -1. Add a hint to your Feature Flag (optional). -1. Select **Yes** to confirm the Flag creation. + + +Open the **Feature Flags & Settings** view. + + +Click the **+** in the view header. + + +Select the Setting type. + + +Enter the new Feature Flag name. + + +Enter the new Feature Flag key. + + +Add a hint to your Feature Flag (optional). + + +Select **Yes** to confirm the Flag creation. + + #### Copy a Feature Flag's key to the clipboard -1. Open the **Feature Flags & Settings** View. -1. Find the Flag and click the **Copy Key to clipboard** icon next to the Flag name. + + +Open the **Feature Flags & Settings** View. + + +Find the Flag and click the **Copy Key to clipboard** icon next to the Flag name. + + #### Find your Feature Flag's usages in your code - -1. Open the **Feature Flags & Settings** view. -1. Find the Flag and click the **Find usage** icon next to the Flag name. -1. See the search results in the opened tab. + + +Open the **Feature Flags & Settings** view. + + +Find the Flag and click the **Find usage** icon next to the Flag name. + + +See the search results in the opened tab. + + ### Products & Configs View @@ -129,23 +196,53 @@ Manage your products and configs on the **Products & Configs** view by performin #### Create a new Config under a product -1. Open the **Products & Configs** view. -1. In the products list, click the **+** icon next to the product where you want to create the new config. -1. Enter a name for the new Config. -1. Add a description to your Config (optional). -1. Connect the new config to your current Workspace (optional). + + +Open the **Products & Configs** view. + + +In the products list, click the **+** icon next to the product where you want to create the new config. + + +Enter a name for the new Config. + + +Add a description to your Config (optional). + + +Connect the new config to your current Workspace (optional). + + #### Connect a Config to your current Workspace -1. Open the **Products & Configs** view. -1. Find the Config you want to connect to your current Workspace under your product list. -1. Click the **Connector** icon next to the Config in the list. -1. You can see the Config's Feature Flags in the **Feature Flags & Setting** view. + + +Open the **Products & Configs** view. + + +Find the Config you want to connect to your current Workspace under your product list. + + +Click the **Connector** icon next to the Config in the list. + + +You can see the Config's Feature Flags in the **Feature Flags & Setting** view. + + #### Open your Configs on the ConfigCat Dashboard -1. Open the **Products & Configs** view. -1. Find the Config you want to connect to your current Workspace under your product list. -1. Click the **Open Config in ConfigCat Dashboard** icon next to the Config in the list. + + +Open the **Products & Configs** view. + + +Find the Config you want to connect to your current Workspace under your product list. + + +Click the **Open Config in ConfigCat Dashboard** icon next to the Config in the list. + + ### Help & Feedback View diff --git a/website/docs/integrations/zapier.mdx b/website/docs/integrations/zapier.mdx index 1fa50137b..c1321521b 100644 --- a/website/docs/integrations/zapier.mdx +++ b/website/docs/integrations/zapier.mdx @@ -4,6 +4,8 @@ title: Zapier Zap - Build feature flag workflows description: ConfigCat Zapier integration. This is a step-by-step guide on how to use the ConfigCat Zapier integration to connect manage features from thousands of Zapier apps. --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + ## Connect ConfigCat to hundreds of other apps with Zapier ConfigCat's Zap lets you connect ConfigCat to 8,000+ other web services. Automated connections called Zaps, set up in minutes with no coding, can automate your day-to-day tasks and build workflows between apps that otherwise wouldn't be possible. @@ -14,26 +16,49 @@ Each Zap has one app as the **Trigger**, where your information comes from and w ## Setup ### Connect ConfigCat -1. Log in to your Zapier account or create a new account. -2. Navigate to **App Connections** from the side menu. -3. Click the **Add connection** button and search for **ConfigCat** in the **Add new connection** dialog. -4. Click the **Add connection** button to connect ConfigCat. -5. Get your API credentials for ConfigCat Public Management API. -6. Use the generated **Basic auth user name** and **Basic auth password** to connect your ConfigCat account to Zapier. - + + +Log in to your Zapier account or create a new account. + + +Navigate to **App Connections** from the side menu. + + +Click the **Add connection** button and search for **ConfigCat** in the **Add new connection** dialog. + + +Click the **Add connection** button to connect ConfigCat. + + +Get your API credentials for ConfigCat Public Management API. + + +Use the generated **Basic auth user name** and **Basic auth password** to connect your ConfigCat account to Zapier. zapier_auth + + ## Usage Once ConfigCat is connected, you can start creating an automation! Use a pre-made Zap or create your own with the Zap Editor. Creating a Zap requires no coding knowledge and you'll be walked step-by-step through the setup. Need inspiration? See everything that's possible with ConfigCat and Zapier. ### Setup ConfigCat Trigger -1. Create a new Trigger. -1. Select **ConfigCat** app, **Feature Flag & Setting value changed** as Trigger event and the connected account. -1. Select the Product for which you want to receive notifications about Feature Flag or Setting changes. -1. For more specific notifications, select a Config and/or Environment. - + + +Create a new Trigger. + + +Select **ConfigCat** app, **Feature Flag & Setting value changed** as Trigger event and the connected account. + + +Select the Product for which you want to receive notifications about Feature Flag or Setting changes. + + +For more specific notifications, select a Config and/or Environment. zapier_customize + + + ### ConfigCat fields ConfigCat provide the following fields to include in your flow: diff --git a/website/docs/integrations/zoho-flow.mdx b/website/docs/integrations/zoho-flow.mdx index 4fe38c563..c3d304075 100644 --- a/website/docs/integrations/zoho-flow.mdx +++ b/website/docs/integrations/zoho-flow.mdx @@ -4,6 +4,8 @@ title: Zoho Flow - Automate your feature flag workflows description: ConfigCat Zoho Flow integration. This is a step-by-step guide on how to use the ConfigCat Zoho Flow integration to manage features using Zoho Flow apps. --- +import { Steps, Step, Title } from '@site/src/components/Steps'; + ## Connect ConfigCat to 500+ apps with Zoho Flow ConfigCat's Zoho Flow integration helps you connect ConfigCat to 1000+ other web apps without any code. It helps you automate day-to-day tasks and build complex business workflows within minutes. @@ -14,57 +16,84 @@ You can set **triggers**, add **actions**, use **Delays and Decisions** to creat ## Setup -1. Log in to your Zoho Flow account or create a new one. - -2. Navigate to **My Flows** using the side menu. - -3. Click on **Create Flow**, fill the name and description boxes then click on **Create**. + + +Log in to your Zoho Flow account or create a new one. + + +Navigate to **My Flows** using the side menu. + + +Click on **Create Flow**, fill the name and description boxes then click on **Create**. + + -4. Select the **App** trigger by clicking it's **Configure** button. +Select the **App** trigger by clicking it's **Configure** button. zoho_trigger -5. Search for **ConfigCat**, select it and hit the **NEXT** button. + + +Search for **ConfigCat**, select it and hit the **NEXT** button. zoho_cc_search -6. On the **Choose ConfigCat Trigger** pane select the **Audit event occured** trigger. + + +On the **Choose ConfigCat Trigger** pane select the **Audit event occured** trigger. zoho_audit_trigger -7. On the next pane you have to connect the integration with your ConfigCat environment. Hit the **Connect** button. + + +On the next pane you have to connect the integration with your ConfigCat environment. Hit the **Connect** button. zoho_connect - -8. Get your API credentials for ConfigCat Dashboard. + + + +Get your API credentials for ConfigCat Dashboard. -9. Use the generated **Basic auth user name** and **Basic auth password** to connect your ConfigCat account to Zoho Flow. + + +Use the generated **Basic auth user name** and **Basic auth password** to connect your ConfigCat account to Zoho Flow. zoho_fill_form -10. On the next pane you have to select the ConfigCat [Product](../main-concepts.mdx#product), [Config](../main-concepts.mdx#config) and [Environment](../main-concepts.mdx#environment) you want to be notified about. The **Variable name** field is auto-generated by the system, you can leave it as is. Optionally, you can also set filter conditions to control exactly when should the trigger fire. + + +On the next pane you have to select the ConfigCat [Product](../main-concepts.mdx#product), [Config](../main-concepts.mdx#config) and [Environment](../main-concepts.mdx#environment) you want to be notified about. The **Variable name** field is auto-generated by the system, you can leave it as is. Optionally, you can also set filter conditions to control exactly when should the trigger fire. zoho_product_config_environment -11. Your trigger is set and will be called by ConfigCat. You can go ahead building your flows. See the list of available Zoho Flow Apps for inspiration. - + + +Your trigger is set and will be called by ConfigCat. You can go ahead building your flows. See the list of available Zoho Flow Apps for inspiration. + + ### Example on how to get Slack notifications on feature flag changes. -1. Use the **Send public/private channel message** action from the Slack app and drag it under the ConfigCat trigger. + + +Use the **Send public/private channel message** action from the Slack app and drag it under the ConfigCat trigger. zoho_slack_add - -2. Configure the Slack action to which channel and exactly what it should send. + + +Configure the Slack action to which channel and exactly what it should send. :::info You may have to connect the Zoho Flow Slack app to your Slack subscription if you didn't do it before. ::: zoho_slack_config - -3. Hit the `Test & Debug` button on the right top corner and wait for the results in your Slack workspace. You should get a message like this: + + +Hit the `Test & Debug` button on the right top corner and wait for the results in your Slack workspace. You should get a message like this: zoho_slack_config + + ## Need help? diff --git a/website/docs/news.mdx b/website/docs/news.mdx index da0a960bd..e98e436c4 100644 --- a/website/docs/news.mdx +++ b/website/docs/news.mdx @@ -5,6 +5,7 @@ description: Instead of spamming your mailbox, we're posting news and product up --- import LazyVideo from '@site/src/components/LazyVideo'; +import { Steps, Step, Title } from '@site/src/components/Steps'; Here, you'll find all the latest updates, enhancements, and new features we've added to our service. Stay tuned to this page to keep up with all the latest news from ConfigCat! @@ -134,6 +135,8 @@ For more info about how to set up the MCP server, [see Documentation](../advance #### Aug 22, 2025 +## Automatic ConfigCat Proxy configuration with Proxy profiles / OpenFeature Remote Evaluation Protocol + We have two exciting [ConfigCat Proxy](/docs/advanced/proxy/overview.mdx) related news: 1. From the [v2.0.0](https://github.com/configcat/configcat-proxy/releases/tag/v2.0.0) version, @@ -153,6 +156,8 @@ the Proxy has the ability to use [Proxy profiles](https://app.configcat.com/orga #### Aug 15, 2025 +## New SDK for JavaScript with Cloudflare Workers support + We just released the [new, revamped ConfigCat SDK for JavaScript platforms](https://configcat.com/docs/sdk-reference/js/overview/). Unlike the previous platform-specific SDKs, it ships as a [single, unified NPM package](https://www.npmjs.com/package/@configcat/sdk) that supports multiple JS environments. @@ -195,6 +200,8 @@ For the full list of new features and improvements, take a look at the [release #### July 4, 2025 +## New ConfigCat OpenFeature providers + We're happy to share that we have released new OpenFeature providers for the following platforms: - [Angular](./sdk-reference/openfeature/angular.mdx) @@ -206,8 +213,6 @@ We're happy to share that we have released new OpenFeature providers for the fol [See the documentation](./sdk-reference/openfeature/overview.mdx) for the complete list of currently supported platforms. ---- - ## Quality of Life improvements #### Jun 3, 2025 diff --git a/website/docs/sdk-reference/dotnet.mdx b/website/docs/sdk-reference/dotnet.mdx index 5e30b4c76..bb6375ea7 100644 --- a/website/docs/sdk-reference/dotnet.mdx +++ b/website/docs/sdk-reference/dotnet.mdx @@ -6,6 +6,7 @@ description: ConfigCat .NET SDK Reference. This is a step-by-step guide on how t import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +import { Steps, Step, Title } from '@site/src/components/Steps'; export const NetSchema = require('@site/src/schema-markup/sdk-reference/net.json'); diff --git a/website/docs/sdk-reference/unity.mdx b/website/docs/sdk-reference/unity.mdx index 302849768..38e6870ff 100644 --- a/website/docs/sdk-reference/unity.mdx +++ b/website/docs/sdk-reference/unity.mdx @@ -6,6 +6,7 @@ description: Using the ConfigCat SDK in Unity. This is a step-by-step guide on h import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +import { Steps, Step, Title } from '@site/src/components/Steps'; export const UnitySchema = require('@site/src/schema-markup/sdk-reference/unity.json'); @@ -35,7 +36,9 @@ So, as a first step, you will need to get the assembly .dll files for `netstanda You can do this by downloading these packages and extracting the .dll files manually from the .nupkg files (which are actually plain ZIP files). Or, if you have [.NET](https://dotnet.microsoft.com) installed, you can take a shortcut: -1. Create a file named `Plugins.csproj` (anywhere in your file system) with the following content: + + +Create a file named `Plugins.csproj` (anywhere in your file system) with the following content: ```xml @@ -46,8 +49,14 @@ Or, if you have [.NET](https://dotnet.microsoft.com) installed, you can take a s ``` -1. Run `dotnet publish -c Release` in the same folder. -1. You will now have all the necessary .dll files in the `bin/Release/netstandard2.0/publish` folder. + + +Run `dotnet publish -c Release` in the same folder. + + +You will now have all the necessary .dll files in the `bin/Release/netstandard2.0/publish` folder. + + ### 2. Add the SDK assembly files to your Unity project diff --git a/website/docs/sdk-reference/unreal.mdx b/website/docs/sdk-reference/unreal.mdx index d3a188255..adb26dbe9 100644 --- a/website/docs/sdk-reference/unreal.mdx +++ b/website/docs/sdk-reference/unreal.mdx @@ -6,6 +6,7 @@ description: ConfigCat Unreal Engine SDK Reference. This is a step-by-step guide import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +import { Steps, Step, Title } from '@site/src/components/Steps'; export const CPPSchema = require('@site/src/schema-markup/sdk-reference/cpp.json');