# Channel Setting Overwrites

In most cases, you define your channel settings and features at the [Channel Type](/chat/docs/android/channel_features/) level and then have these inherited by all the channels of the same type. For instance you can configure [Livestream](/chat/docs/android/channel_features/) channels without typing events and enable reactions and replies for all [Messaging](/chat/docs/android/channel_features/) type channels.

This approach does not work well if your application has many different combination of settings for channels and that is when channel-level settings can be useful.

Channel-level settings allow you to override one or more settings for a channel without changing other channels of the same type. A few important things to mention about channel-level settings:

1. Settings that are not overridden at channel level will use the current setting from the channel type

2. Changing channel-level settings can only be done server-side

### List of settings that can be overridden

Not all channel type settings can be configured at the channel level, here is the complete list of settings that can be overridden.

- **typing_events** : Controls if typing indicators are shown.

- **reactions** : Controls if users are allowed to add reactions to messages.

- **replies** : Enables message threads and replies.

- **uploads** : Allows image and file uploads within messages.

- **url_enrichment** : When enabled, messages containing URLs will be enriched automatically with image and text related to the message.

- **commands** : Enable a set of commands for this channel.

- **max_message_length** : The max message length.

- **blocklist** : A list of words you can define to moderate chat messages. More information can be found [here](/moderation/docs/node/configuration/filters/).

- **blocklist_behavior** : set as  `block`  or  `flag` to determine what happens to a message containing blocked words.

- **grants** : Allows to modify channel-type permission grants for particular channel. More information can be found [here](/chat/docs/android/chat_permission_policies/)

- **user_message_reminders** : Allow users to set reminders for messages. More information can be found [here](/chat/docs/android/message_reminders/)

- **shared_locations** : Allow users to share their current location. More information can be found [here](/chat/docs/android/location_sharing/)

- **count_messages** : Enables counting messages on new channels.

- **push_level** : Default push notification level for all members of this channel. Values: `all`, `all_mentions`, `direct_mentions`, `none`. More information can be found [here](/chat/docs/android/push_preferences/).

- **chat_preferences** : Granular per-category push notification preferences for this channel. Mutually exclusive with `push_level`. More information can be found [here](/chat/docs/android/push_preferences/#granular-chat-preferences).

### Examples

#### Use a different blocklist

<Tabs>

```js label="JavaScript"
await channel.updatePartial({
  set: {
    config_overrides: {
      blocklist: "medical_blocklist",
      blocklist_behavior: "block",
    },
  },
});
```

```ruby label="Ruby"
require 'getstream_ruby'
Models = GetStream::Generated::Models

client.chat.update_channel_partial('<channel-type>', '<channel-id>', Models::UpdateChannelPartialRequest.new(
  set: {
    'config_overrides' => {
      'blocklist' => 'medical_blocklist',
      'blocklist_behavior' => 'block'
    }
  }
))
```

```python label="Python"
channel.update_channel_partial(
  set={
    "config_overrides": {
      "blocklist": "medical_blocklist",
      "blocklist_behavior": "block",
    },
  }
)
```

```php label="PHP"
$client->updateChannelPartial("messaging", "general", new Models\UpdateChannelPartialRequest(
    set: (object)["config_overrides" => (object)[
        "blocklist" => "medical_blocklist",
        "blocklist_behavior" => "block",
    ]],
));
```

```go label="Go"
channel := client.Chat().Channel("<channel-type>", "<channel-id>")
channel.UpdateChannelPartial(ctx, &getstream.UpdateChannelPartialRequest{
  Set: map[string]any{
    "config_overrides": map[string]any{
      "blocklist":          "medical_blocklist",
      "blocklist_behavior": "block",
    },
  },
})
```

```java label="Java"
var configOverrides = new HashMap<String, String>();
configOverrides.put("blocklist", "medical_blocklist");
configOverrides.put("blocklist_behavior", "block");

chat.channel("<channel-type>", "<channel-id>")
    .updateChannelPartial(UpdateChannelPartialRequest.builder()
        .set(Map.of("config_overrides", configOverrides))
        .build());
```

```csharp label="C#"
await chat.UpdateChannelPartialAsync("<channel-type>", "<channel-id>", new UpdateChannelPartialRequest
{
    Set = new Dictionary<string, object>
    {
        {
            "config_overrides", new Dictionary<string, string>
            {
                { "blocklist", "medical_blocklist" },
                { "blocklist_behavior", "block" },
            }
        },
    },
});
```

</Tabs>

#### Disables replies

<Tabs>

```js label="JavaScript"
await channel.updatePartial({ set: { config_overrides: { replies: false } } });
```

```ruby label="Ruby"
require 'getstream_ruby'
Models = GetStream::Generated::Models

client.chat.update_channel_partial('<channel-type>', '<channel-id>', Models::UpdateChannelPartialRequest.new(
  set: { 'config_overrides' => { 'replies' => false } }
))
```

```python label="Python"
channel.update_channel_partial(set={"config_overrides": {"replies": False}})
```

```php label="PHP"
$client->updateChannelPartial("messaging", "general", new Models\UpdateChannelPartialRequest(
    set: (object)["config_overrides" => (object)["replies" => false]],
));
```

```go label="Go"
channel := client.Chat().Channel("<channel-type>", "<channel-id>")
channel.UpdateChannelPartial(ctx, &getstream.UpdateChannelPartialRequest{
  Set: map[string]any{
    "config_overrides": map[string]any{
      "replies": false,
    },
  },
})
```

```java label="Java"
var configOverrides = new HashMap<String, Boolean>();
configOverrides.put("replies", false);

chat.channel("<channel-type>", "<channel-id>")
    .updateChannelPartial(UpdateChannelPartialRequest.builder()
        .set(Map.of("config_overrides", configOverrides))
        .build());
```

```csharp label="C#"
await chat.UpdateChannelPartialAsync("<channel-type>", "<channel-id>", new UpdateChannelPartialRequest
{
    Set = new Dictionary<string, object>
    {
        { "config_overrides", new Dictionary<string, object> { { "replies", false } } },
    },
});
```

</Tabs>

#### Remove overrides and go back to default settings

<Tabs>

```js label="JavaScript"
await channel.updatePartial({ set: { config_overrides: {} } });
```

```ruby label="Ruby"
require 'getstream_ruby'
Models = GetStream::Generated::Models

client.chat.update_channel_partial('<channel-type>', '<channel-id>', Models::UpdateChannelPartialRequest.new(
  set: { 'config_overrides' => {} }
))
```

```python label="Python"
channel.update_channel_partial(set={"config_overrides": {}})
```

```php label="PHP"
$client->updateChannelPartial("messaging", "general", new Models\UpdateChannelPartialRequest(
    set: (object)["config_overrides" => (object)[]],
));
```

```go label="Go"
channel := client.Chat().Channel("<channel-type>", "<channel-id>")
channel.UpdateChannelPartial(ctx, &getstream.UpdateChannelPartialRequest{
  Set: map[string]any{
    "config_overrides": map[string]any{},
  },
})
```

```java label="Java"
chat.channel("<channel-type>", "<channel-id>")
    .updateChannelPartial(UpdateChannelPartialRequest.builder()
        .set(Map.of("config_overrides", new HashMap<String, String>()))
        .build());
```

```csharp label="C#"
await chat.UpdateChannelPartialAsync("<channel-type>", "<channel-id>", new UpdateChannelPartialRequest
{
    Set = new Dictionary<string, object>
    {
        { "config_overrides", new Dictionary<string, object>() },
    },
});
```

</Tabs>


---

This page was last updated at 2026-04-22T16:43:06.763Z.

For the most recent version of this documentation, visit [https://getstream.io/chat/docs/android/channel-level_settings/](https://getstream.io/chat/docs/android/channel-level_settings/).