---
type: deep-dive
title: "Canal personalizado: lleva tus flujos a cualquier plataforma"
url: "https://hub.jelou.ai/deep-dives/canal-personalizado"
markdown: "https://hub.jelou.ai/deep-dives/canal-personalizado.md"
jobs:
  - conectar mi sistema
  - conectar jelou con un sistema propio
  - entender cómo funciona un canal personalizado
  - recibir las respuestas de Brain en mi backend
  - construir mi propia interfaz de chat
products:
  - brain-studio
themes:
  - brain-studio
topics:
  - architecture
  - custom-channels
access: public
---

# Canal personalizado: lleva tus flujos a cualquier plataforma

Brain Studio como headless flow engine. Diseñas la lógica del agente una vez en Jelou y la conectas a tu propia interfaz vía API y webhook, con firma HMAC en ambas direcciones.

Salió en [Product Pulse 004](https://hub.jelou.ai/updates/product-pulse/004)

Custom Channels ya está en producción. Tu plataforma envía los mensajes por API, Brain ejecuta el flujo y responde al webhook que configures. Diseñas la lógica una vez y la corres donde la necesites, más allá de los canales nativos.

![Jelou como hub central: conecta canales como WhatsApp, Instagram, Slack, Teams y Gmail con tu plataforma vía Canal Personalizado](https://cdn.sanity.io/images/sz9welmm/production/482f9aa91b3a72d812b4c14d7ba431c7f7b7fba7-1024x512.jpg)

*Los canales de entrada (izquierda) llegan a Brain a través de Jelou. Los destinos de la derecha, con línea punteada, son los que un canal personalizado puede alcanzar cuando la conversación necesita vivir en tu propia interfaz.*

Docs.jelou.ai lo llama Canal Personalizado, y la idea central es que Brain Studio funciona como un headless flow engine: el flujo que ya construiste para WhatsApp o Instagram no cambia de lógica cuando lo llevas a tu propia app o a un web widget. Lo que cambia es el transporte — en vez de que Jelou hable directamente con Meta, habla con tu backend.
El modelo es simple en su forma pero exige disciplina en la implementación: tu plataforma envía cada interacción del usuario a un endpoint de Jelou, Jelou ejecuta el flujo que configuraste en el builder, y entrega la respuesta a un webhook que tú controlas. No hay polling — la entrega es push, con un solo intento y 20 segundos de timeout, así que tu endpoint tiene que responder rápido y de forma confiable.

## Cómo se activa
1. **Activar el canal** — Habilita Personalizado desde el builder: nombre del canal, webhook, autenticación opcional y clave de firma HMAC — esta última es obligatoria. [Docs](https://docs.jelou.ai/guides/activacion-canales/personalizado.md)
2. **Firmar las peticiones** — Cada petición entrante lleva X-Jelou-Signature calculado sobre el raw body con HMAC-SHA256. Cada entrega saliente hacia tu webhook lleva la misma firma para que puedas verificarla. [Docs](https://docs.jelou.ai/api/canal-personalizado/firma-hmac.md)
3. **Enviar y recibir** — POST /v1/custom-channel/:botId envía la interacción; Jelou responde de inmediato con un executionId y procesa en segundo plano. La respuesta del bot llega después, por POST, a tu webhook. [Docs](https://docs.jelou.ai/api/canal-personalizado/enviar-interaccion.md)

**Verificar la firma de una entrega — ejemplo real de Jelou Functions**
```typescript
const signature = request.headers.get("x-webhook-signature");
const secret = ctx.env.get("WEBHOOK_SECRET");

const body = await request.clone().text();
const valid = await crypto.subtle.verify(
  "HMAC",
  key, // importado con HMAC-SHA256 a partir de `secret`
  sigBytes,
  encoder.encode(body),
);

if (!valid) return { error: "invalid_signature" };
```

> No todos los nodos están disponibles en un canal personalizado. Plantillas HSM, WhatsApp Flows y la transferencia a un operador humano no aplican aquí — son capacidades específicas de canales nativos. Un flujo que use esos nodos necesita una rama alternativa para este canal.

[Activa tu canal propio](https://docs.jelou.ai/guides/activacion-canales/personalizado.md)

[Ver la API completa y la firma HMAC](https://docs.jelou.ai/api/canal-personalizado/introduccion.md)

## Para implementar

- [Docs · Guía de activación — Canal personalizado](https://docs.jelou.ai/guides/activacion-canales/personalizado.md)
- [Docs · API · Canal personalizado](https://docs.jelou.ai/api/canal-personalizado/introduccion.md)

## Para construir

- [Demo · WebView: selector de asientos dentro de WhatsApp](https://www.youtube.com/watch?v=7nRa3tdAWms)
