# Bandeja de entrada dividida para chatters de OnlyFans: guía paso a paso

> Escala tu agencia con una bandeja de entrada dividida para chatters de OnlyFans: repartir suscriptores evita colisiones de mensajes y maximiza los ingresos.

En las operaciones de gestión de OnlyFans (OFM) de alto volumen, la monetización de los suscriptores depende casi por completo de la rapidez y la calidad de las conversaciones por mensaje directo (DM). Las cuentas de creadores más grandes pueden recibir cientos o incluso miles de mensajes entrantes al día. Gestionar ese volumen desde la interfaz web nativa de OnlyFans con varios operadores humanos crea cuellos de botella catastróficos que provocan colisiones de chats, respuestas tardías e ingresos perdidos.

Para resolverlo, las agencias líderes implementan un sistema de «bandeja de entrada dividida» (split inbox). Esta guía completa explica cómo funcionan las bandejas de entrada divididas, las principales arquitecturas de enrutamiento y las instrucciones paso a paso para desplegarlas con CRM listos para usar o construyendo una infraestructura propia mediante API.

## ¿Qué es una bandeja de entrada dividida en la gestión de OnlyFans?

Una bandeja de entrada dividida separa la cola única de mensajes directos de un creador en subbandejas compartimentadas y mutuamente excluyentes (o grupos de fans asignados). En lugar de ver un único feed cronológico, cada chatter solo ve a los suscriptores que tiene asignados.

Una bandeja de entrada de OnlyFans sin segmentar, gestionada por varios operadores humanos, pierde eficiencia de conversión por las colisiones de mensajes, la priorización desordenada y el solapamiento entre chatters. Al dividir la bandeja de entrada, las agencias aseguran una propiedad determinista de las conversaciones, tiempos de respuesta rápidos y una atribución precisa de los ingresos.

## Por qué las mejores agencias implementan bandejas de entrada divididas

Trabajar sin una bandeja de entrada dividida expone a las agencias a cuatro grandes riesgos operativos:

- **Colisiones de chats:** varios chatters pueden responder al mismo suscriptor a la vez, con tonos contradictorios, guiones que se solapan o precios de Pay-Per-View (PPV) distintos.
- **Sobrecarga cognitiva y tiempo perdido:** los chatters pueden perder buena parte de su turno desplazándose sin fin por un feed principal solo para encontrar mensajes sin leer o historias en curso.
- **Whales desatendidos:** los suscriptores con alto poder adquisitivo (los «whales») quedan enterrados fácilmente bajo cientos de mensajes entrantes que no generan ningún gasto.
- **Brechas de responsabilidad y seguridad:** las plataformas nativas ofrecen poca atribución detallada para saber qué chatter concreto cerró una venta, filtró contenido o gestionó mal una conversación VIP. Para las métricas que conviene seguir por chatter, consulta nuestra guía de [KPI de chatters de OnlyFans](/es/blog/kpi-chatters-onlyfans-ventas-por-chatter).

## Principales arquitecturas de enrutamiento de una bandeja de entrada dividida

Las agencias suelen implementar la bandeja de entrada dividida con uno de tres mecanismos principales de distribución, según su tamaño operativo y la estructura de sus turnos:

### 1. Particionado estático determinista (ID de fan / numeración)

A cada suscriptor se le asigna una partición numérica o por módulo inmutable. Por ejemplo, si una agencia tiene cuatro divisiones activas de la bandeja de entrada, los fans se enrutan de forma determinista según su ID. Es lo mejor para turnos rotativos 24/7 en los que la agencia quiere una afinidad fan-chatter constante en historias que duran varios días.

### 2. Segmentación por nivel / por gasto

Los fans se enrutan según su gasto acumulado (LTV) o su gasto de los últimos 30 días. Los «whales» de alto valor se filtran a una bandeja VIP gestionada por closers sénior. Los que gastan un nivel medio van a chatters de PPV estándar, mientras que las cuentas gratuitas o sin gasto se enrutan a chatters júnior o a bots de triaje con IA.

### 3. Balanceo de carga dinámico / round-robin

Las conversaciones nuevas o los fans que vuelven a estar activos se envían al siguiente chatter disponible en línea con la cola activa más pequeña. Una vez asignada, la conversación queda bloqueada para ese chatter durante toda la sesión activa.

## Cómo configurar una bandeja de entrada dividida con CRM listos para usar

Varias extensiones de navegador y CRM de terceros admiten de forma nativa la bandeja de entrada dividida. Así se configuran las principales plataformas.

### A. Infloww (Messages Pro™)

La interfaz Messages Pro de Infloww permite a las agencias compartimentar el flujo de mensajes de un creador en grupos de subbandejas separados.

1. Abre _Messages Pro_ y activa la función **Split Inbox**.
2. Configura el número de grupos activos.
3. Reparte lotes de suscriptores entre esos grupos.
4. Filtra las vistas de los chatters para que el miembro del equipo A solo vea el grupo 1, el miembro B vea el grupo 2, etc. Los fans fuera del filtro activo de un chatter quedan ocultos, lo que elimina distracciones.
5. Mueve a los fans que más gastan a un grupo VIP dedicado.

### B. CreatorHero

CreatorHero enfoca el enrutamiento con la numeración de fans.

1. Asigna a los suscriptores etiquetas numéricas explícitas, visibles en la lista de chats.
2. Asigna rangos numéricos concretos (p. ej., fans n.º 001 a 250 al chatter 1) por turno.
3. Apóyate en los indicadores visuales que muestran cuándo otro chatter está viendo una conversación para evitar colisiones.

### C. OnlyMonster

OnlyMonster ofrece una función de división de la bandeja de entrada para repartir la comunicación con los fans entre los miembros del equipo.

1. Divide a los fans en bandejas de entrada separadas.
2. Limita a los chatters a sus bandejas asignadas y da a los líderes de equipo permiso para mover fans entre bandejas y reequilibrar el volumen a mitad de turno.
3. Combina las bandejas de entrada divididas con filtros de comportamiento (p. ej., fans que abrieron los últimos 3 PPV) para una interacción hipersegmentada.

## Cómo construir una bandeja de entrada dividida a medida con OnlyFansAPI

Para las agencias de nivel empresarial que usan CRM internos a medida, copilotos de IA propios u operaciones multiplataforma (OnlyFans + Fansly), las extensiones comerciales suelen presentar limitaciones, como riesgo de fallos y algoritmos de enrutamiento rígidos.

Construir una bandeja de entrada dividida a medida mediante [OnlyFansAPI](https://onlyfansapi.com/) permite a las agencias implementar un enrutamiento programático de fans, bloqueos de concurrencia basados en Redis y una atribución directa de los PPV a través de endpoints REST y webhooks casi en tiempo real. A continuación tienes una guía paso a paso para construir esta infraestructura headless.

### Paso 1: suscribirse a los webhooks clave

Configura tu backend para consumir eventos casi en tiempo real de los [webhooks de OnlyFansAPI](https://docs.onlyfansapi.com/webhooks). Los eventos clave son:

- `messages.received`: se dispara casi en tiempo real con cada mensaje entrante de un fan.
- `subscriptions.new`: inicia el enrutamiento de asignación para los fans nuevos.
- `tips.received`: activa las comprobaciones del umbral VIP.

### Paso 2: ingesta y lógica de enrutamiento

Usa un servidor Node.js/Express respaldado por Redis para gestionar el enrutamiento. Puedes asignar chatters de forma determinista con lógica de módulo.

Cada entrega incluye un encabezado `Signature` (HMAC SHA256 en hexadecimal del cuerpo bruto de la solicitud, firmado con tu secreto de firma de webhooks), así que conserva el cuerpo bruto y verifícalo antes de confiar en el sobre `{ event, account_id, payload }`.

```typescript
import crypto from 'node:crypto';
import express, { Request, Response } from 'express';
import Redis from 'ioredis';

const app = express();
const redis = new Redis(process.env.REDIS_URL!);
// conservar el cuerpo bruto para poder verificar el HMAC
app.use(express.json({ verify: (req: any, _res, buf) => { req.rawBody = buf; } }));

async function getAssignedChatter(accountId: string, fanId: string, totalChatters: number): Promise<string> {
  const explicitAssignee = await redis.get(`fan:${fanId}:assignee`);
  if (explicitAssignee) return explicitAssignee;

  const numericId = parseInt(fanId.replace(/\D/g, ''), 10) || 0;
  const chatterSlot = (numericId % totalChatters) + 1;
  return `chatter_${chatterSlot}`;
}

app.post('/webhooks/onlyfans', async (req: Request, res: Response) => {
  const expected = crypto
    .createHmac('sha256', process.env.OFAPI_WEBHOOK_SECRET!)
    .update((req as any).rawBody)
    .digest('hex');
  const received = req.header('Signature') ?? '';
  if (received.length !== expected.length || !crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected))) {
    return res.status(401).end();
  }

  const { event, account_id, payload } = req.body;
  if (event === 'messages.received') {
    const { id: messageId, fromUser, text } = payload;
    const fanId = fromUser.id.toString(); // también sirve como chat_id

    const assignedChatter = await getAssignedChatter(account_id, fanId, 4);
    // Guardar y emitir un evento WebSocket al front-end
  }
  res.status(200).json({ received: true });
});
```

### Paso 3: control de concurrencia y bloqueo de conversaciones

Para garantizar que dos chatters nunca interactúen con el mismo fan a la vez durante los solapamientos de turno, implementa un bloqueo distribuido con Redis:

```typescript
export async function acquireChatLock(fanId: string, chatterId: string, ttlSeconds = 60): Promise<boolean> {
  const result = await redis.set(`lock:chat:${fanId}`, chatterId, 'EX', ttlSeconds, 'NX');
  return result === 'OK';
}
```

### Paso 4: enviar respuestas mediante la API REST

Cuando un chatter envía un mensaje desde tu consola a medida, ejecuta la solicitud mediante los [endpoints de chat de OnlyFansAPI](https://onlyfansapi.com/onlyfans-chatting-automation) y activa el indicador de escritura para dar más realismo.

Un mensaje de pago necesita un `price` entre 3 y 200 y al menos una entrada en `mediaFiles`; un precio distinto de cero sin contenido multimedia se rechaza.

```typescript
import axios from 'axios';

const api = axios.create({
  baseURL: 'https://app.onlyfansapi.com/api',
  headers: { Authorization: `Bearer ${process.env.ONLYFANS_API_KEY}` },
});

export async function sendChatterReply({ accountId, chatId, text, price = 0, mediaFiles = [] }: {
  accountId: string; chatId: string; text: string; price?: number; mediaFiles?: (string | number)[];
}) {
  if (price !== 0 && (price < 3 || price > 200 || mediaFiles.length === 0)) {
    throw new Error('price must be 0 or 3-200, and paid messages require mediaFiles');
  }

  // 1. Activar el indicador de escritura (el fan lo ve durante ~4 segundos)
  await api.post(`/${accountId}/chats/${chatId}/typing`);

  // 2. Enviar el mensaje saliente
  const payload = { text, ...(mediaFiles.length ? { mediaFiles } : {}), ...(price > 0 ? { price } : {}) };
  const response = await api.post(`/${accountId}/chats/${chatId}/messages`, payload);

  return response.data;
}
```

## CRM listos para usar frente a arquitectura API a medida

| Función | Infloww (Messages Pro) | CreatorHero | OnlyMonster | Desarrollo a medida (OnlyFansAPI) |
| --- | --- | --- | --- | --- |
| **Capacidad de división** | Grupos de subbandejas | Bloques de numeración de fans | Bandejas divididas y roles | Divisiones lógicas ilimitadas |
| **Protección contra colisiones** | Aislamiento por vista | Indicadores visuales | Aislamiento por bandeja | Bloqueos distribuidos con Redis |
| **Multiplataforma** | OF, Fansly + otras | Solo OnlyFans | OF, Fansly, MYM | OnlyFans + Fansly |
| **Integración con IA** | AI Copilot (beta) | Asistentes de chat integrados | Asistentes de chat integrados | Integración abierta con LLM |
| **Modelo de precios** | Desde $40/creador/mes, por niveles según ingresos | Precio por creador | Por tramos de ingresos ($30–$250) | Desde $69/mes, planes basados en créditos |

## Buenas prácticas para una bandeja de entrada dividida de alto rendimiento

Tanto si usas un CRM como un desarrollo a medida con la API, seguir buenas prácticas operativas asegura el máximo ROI:

- **Aplica reglas estrictas de propiedad:** evita el cambio dinámico por round-robin en mitad de una conversación. Los suscriptores notan los cambios repentinos de tono y de frecuencia de emojis. Mantén a cada fan bloqueado con un solo chatter durante una ventana mínima de 4 a 8 horas.
- **Estandariza los resúmenes de traspaso de turno:** exige a los chatters que terminan su turno que dejen notas internas concisas sobre cada fan (p. ej., _«Le gusta el contenido de pies, ayer compró un custom de $50, espera el video teaser 2»_).
- **Reserva los whales para closers dedicados:** los fans con un gasto acumulado superior a $1.000 deberían saltarse automáticamente las colas de rotación estándar y enrutarse directamente a account managers sénior.
- **Impón la emulación de escritura y límites de ritmo de envío:** cuando combines el triaje automatizado con IA con bandejas de entrada divididas atendidas por personas, mantén retrasos similares a los de un humano. Usa siempre el endpoint de la API `/typing` antes de enviar respuestas para que la conversación se sienta natural.

## Conclusión

Pasar a una bandeja de entrada dividida es imprescindible para cualquier agencia OFM que crezca más allá de un solo operador por cuenta de creador. Aunque plataformas como Infloww y CreatorHero ofrecen una excelente segmentación lista para usar, las agencias de nivel empresarial se están moviendo cada vez más hacia infraestructuras propias impulsadas por [OnlyFansAPI](https://onlyfansapi.com/). Al tomar el control directo de la lógica de enrutamiento, la segmentación VIP y el bloqueo de sesiones, las agencias pueden eliminar de forma efectiva las colisiones de chats y maximizar el valor de vida de cada suscriptor.