> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trybrein.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Otra herramienta

> Conecta cualquier herramienta que mande un webhook. Sin código: una dirección secreta, un aviso de prueba y tú confirmas qué es cada campo.

Si tu herramienta no tiene [plantilla](/es/integraciones), conéctala como **Otra herramienta**. Funciona con cualquier sistema que mande un webhook por `POST`: tu backend, un flujo de Zapier, n8n o Make, o una herramienta con su propio aviso.

Brein lee el primer aviso real, propone qué campo es cada cosa y tú confirmas. Todo se hace en **Ajustes → Integraciones**. Solo el dueño o un admin del espacio puede conectar y confirmar el mapeo.

<Steps>
  <Step title="Crea la Integración">
    En **Ajustes → Integraciones**, elige **Conectar → Otra herramienta**, ponle un nombre y, si quieres que cada aviso abra una Oportunidad, elige el Pipeline y la etapa.
  </Step>

  <Step title="Copia la dirección secreta">
    Brein te da una dirección con esta forma:

    ```text theme={"theme":"github-light"}
    https://api.trybrein.com/api/v1/door/<id de la Fuente>/<token>
    ```

    El token es la contraseña de la Integración. Se muestra **una sola vez**. Brein guarda solo una huella del token, así que no puede mostrártelo de nuevo. Guárdalo como cualquier secreto.
  </Step>

  <Step title="Manda el primer aviso real">
    Pega la dirección en tu herramienta y provoca un aviso de verdad: un registro, un pago, una respuesta. O prueba con `curl`:

    ```bash theme={"theme":"github-light"}
    curl -X POST "https://api.trybrein.com/api/v1/door/<id>/<token>" \
      -H "content-type: application/json" \
      -d '{
        "id": "reg-1001",
        "type": "signup",
        "customer": {
          "name": "Ana Torres",
          "email": "ana@acme.mx",
          "phone": "+52 81 5555 0101",
          "company": "Acme"
        },
        "plan": "pro"
      }'
    ```

    Brein responde `202` con el id de la Llegada y el estado `unmapped`: todavía no hay mapeo, así que el aviso se guarda como ejemplo y no se crea ningún Contacto.
  </Step>

  <Step title="Revisa lo que detectó Brein">
    En la página de la Integración ves el ejemplo con cada campo y lo que Brein propone para él. La detección usa reglas, sin IA:

    * El **correo** por su forma (`algo@dominio.mx`) y el **LinkedIn** por su dirección.
    * El **teléfono** si empieza con `+` y tiene de 7 a 15 dígitos, o si el nombre del campo lo dice (`telefono`, `phone`, `celular`, `whatsapp`).
    * El **nombre**, la **empresa**, el **puesto** y el **sitio** por el nombre del campo, en español o en inglés (`nombre`, `name`, `empresa`, `company`, `cargo`, `role`, `sitio`, `website`). Un nombre y un apellido del mismo bloque se unen en ese orden.
    * El **id del aviso** (`id`, `event_id`, `uuid`…) y el **tipo de evento** (`type`, `event`, `topic`…): no van al Contacto, sirven para no duplicar y para distinguir avisos.
    * Los campos de quien organiza o administra, o de un producto, un plan o un formulario, no se toman como la persona.
  </Step>

  <Step title="Elige el correo del cliente">
    Si el aviso trae más de un correo, o más de un teléfono, Brein te lo marca y tú eliges cuál es el del cliente. Los demás se ignoran.
  </Step>

  <Step title="Decide a dónde va cada campo y confirma">
    Cada campo puede ir a:

    | Destino | Para qué |
    | - | - |
    | **Contacto** | Correo, teléfono, LinkedIn, nombre o puesto. |
    | **Empresa** | Nombre o sitio web. |
    | **Solo en la historia** | Se guarda con la Llegada, para leer qué pasó, pero no se escribe en el Contacto. Útil para el plan que eligió o lo que contestó. |
    | **Ignorar** | No se guarda. |

    El mapeo necesita al menos un campo de correo, teléfono o LinkedIn. Al confirmar, el mapeo queda fijo y con número de versión. Cada cambio sube la versión.
  </Step>
</Steps>

## Avisos en lote

Algunas herramientas mandan varias personas en un solo aviso, por ejemplo `{ "items": [ … ] }` o una lista al nivel de arriba. Brein reconoce las listas que se llaman `data`, `events`, `items`, `records`, `results`, `entries` o `rows`. Cada elemento de la lista se vuelve **su propia Llegada**, con su propio resultado. Un elemento que falla no detiene a los demás. La respuesta trae una lista con el resultado de cada uno.

## Campos nuevos

El mapeo es fijo. Si un día el aviso trae un campo que no estaba en el ejemplo, Brein no lo guarda: lo muestra como **campo nuevo sin decidir**. Elige a dónde va, o ignóralo, y desaparece de la lista. Hasta entonces, ese campo no entra al Contacto. Se guardan hasta 200 campos nuevos por Integración.

## Cambiar el mapeo y reprocesar

Puedes corregir el mapeo cuando quieras en la página de la Integración. Cambiarlo no toca lo que ya se aceptó. Para las Llegadas que quedaron **sin persona** o **no entendidas**:

1. Corrige el mapeo.
2. Elige **Reprocesar**, en una Llegada o en todas las de la Integración.

Brein las lee de nuevo con el mapeo de hoy. Solo se puede mientras el aviso crudo exista: se borra a los 30 días. Las que ya no se pueden reprocesar se cuentan como vencidas.

## Rotar la dirección

Si la dirección se filtró, o alguien que la tenía ya no debe tenerla, usa **Rotar**. Brein crea una dirección nueva y se muestra una sola vez. **La anterior deja de servir al instante**: actualiza tu herramienta antes de que mande el siguiente aviso, o llegará como rechazado.

## Límites

| Límite | Valor |
| - | - |
| Tamaño del aviso | 256 KiB |
| Envíos por minuto | 120 desde una misma IP. Después responde `429` con `Retry-After`. |
| Formatos | JSON, formulario (`application/x-www-form-urlencoded`) y `multipart/form-data`. |
| Campos nuevos sin decidir | 200 por Integración |
| Aviso crudo y ejemplo | Se borran a los 30 días |

| Respuesta | Significa |
| - | - |
| `202` | Recibido. Trae el id de la Llegada. Se procesa en cola. |
| `200` | Ya lo tenías, o es un tipo de aviso que el mapeo no usa y se ignora. |
| `400` | El cuerpo no se pudo leer como JSON, formulario ni multipart. |
| `401` | La dirección es incorrecta o ya se rotó. No dice si la Integración existe. |
| `410` | La Integración está archivada. |
| `413` | El aviso pasa de 256 KiB. |
| `429` | Demasiados envíos. Espera y reintenta. |
| `503` | La Integración está pausada. Reintenta más tarde. |

Si eres desarrollador y quieres firmar tus envíos, el contrato firmado está en [Enviar eventos a Brein](/es/api/door).

Qué pasa con cada Llegada, cómo se reconoce a una persona y qué se guarda: [Integraciones](/es/integraciones).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.