# Configure and deploy extensions

**Use the Commerce Integration Layer CLI to configure, deploy, and manage extensions in production.**

Before following the steps in this page, [scaffold an extension](/commerce-integration-layer/development/get-started.md#scaffold-an-extension).

### Environment configuration and secrets

#### Set configuration

Sets a value available to resolvers and handlers through `ctx.config`. Add `--secret` to encrypt and mask the value.

```bash
commercetools integration-layer config set MY_API_KEY secure-token-123 --secret
```

#### List configuration

Lists configuration values for the active Project. Secret values are masked.

```bash
commercetools integration-layer config list
```

### Outbound HTTP domain allowlist

Patterns are bare hostnames (`api.example.com`) or suffix wildcards (`*.example.com`); quote wildcards so the shell does not expand them. The list also shows any operator deny patterns that take precedence; those are read-only from the CLI.

#### List allowed domains

Lists external domains that sandboxed extensions can call with `fetch`. Allowed calls are still subject to [outbound request limits](/commerce-integration-layer/limits.md#outbound-requests).

```bash
commercetools integration-layer allowlist list
```

#### Add allowed domains

Adds bare hostnames or suffix wildcard patterns to the allowlist.

```bash
commercetools integration-layer allowlist add api.vendor.com '*.algolia.net'
```

#### Remove an allowed domain

Removes a hostname or pattern from the allowlist.

```bash
commercetools integration-layer allowlist remove api.vendor.com
```

#### Replace the allowlist

Replaces the complete allowlist with one or more hostnames or patterns. Requires at least one host; use `remove` instead to drop individual hosts.

```bash
commercetools integration-layer allowlist set api.vendor.com api.example.com
```

> You can also manage the allowlist from the Merchant Center Commerce Integration Layer application. The CLI commands above require `@commercetools/cli-topic-integration-layer` 0.7.0 or later.

### Publishing, rollouts, and status checks

#### Publish an extension

Builds, validates, and deploys the extension bundle. Use `--no-wait` to exit before the health check or `--wait-timeout` to set its duration.

```bash
commercetools integration-layer extension push --wait-timeout 180
```

#### Check deployment status

Displays the newest stored bundle's version, size, upload time, and source revision, when recorded. It doesn't report lifecycle state, a failure reason, or which revision is actually served — see [Checking what's live](/commerce-integration-layer/development/operations-and-performance.md#checking-whats-live) for where to find those.

```bash
commercetools integration-layer extension status
```

## Further reading

- Walk through enrolling a Project, installing the CLI, and publishing your first extension in [Get started](/commerce-integration-layer/development/get-started.md)
- What happens after a push, including the pending, running, and failed rollout states, in [Operations and performance](/commerce-integration-layer/development/operations-and-performance.md#publishing-and-rollout)

## Related pages

- [Area overview page with navigation](/commerce-integration-layer.md)
- [Previous page: Write Managed API Extensions](/commerce-integration-layer/development/writing-managed-api-extensions.md)
- [Next page: Operations and performance](/commerce-integration-layer/development/operations-and-performance.md)
- [Search documentation and API specs](/search.md)