---
title: Custom Payload (clientbound)
description: "Configuration 0x01, server → client."
---

`config` · `0x01` · **clientbound** (server → client)

Plugin message in the configuration state. `channel` is a namespaced identifier and `data` is arbitrary bytes. Vanilla servers send `minecraft:brand` with the server brand; the client ignores unknown channels.

Sent by the server, read by the client. Listen for it with `client.on("CustomPayload", (data) => …)` on the receiving side.

## Fields

| Field | Type | Notes |
|---|---|---|
| `channel` | String |  |
| `data` | Byte[] |  |

## Send it

```ts
await client.sendPacket("CustomPayload", {
  channel: "example:configuration",
  data: Buffer.from([0x01, 0x02, 0x03]),
});
```

The plugin channel defines how `data` is encoded. Vanilla clients ignore channels they do not recognise; custom clients, mods, and proxies can assign their own namespaced channels.

Field aliases listed under Notes are accepted as alternative keys when writing.

Source: [`src/Core/Versions/776/Packets/config/clientbound/CustomPayload.ts`](https://github.com/GDLev/mc-protocol/blob/master/src/Core/Versions/776/Packets/config/clientbound/CustomPayload.ts)
