# Configurar el agente (/es/docs/agent/configuration) Todo lo que hace tu Agente de Consultas sale de una sola pantalla: **Agentes → tu agente**. Está partida en cinco pestañas, y cada una responde una pregunta distinta. Dos cosas antes de arrancar. El agente sabe únicamente lo que le cargues acá — nunca rellena huecos por su cuenta. Y cada cambio actualiza el diagrama de la derecha, así que ves la consecuencia antes que un cliente. ## El diagrama te dice qué configuraste de verdad [#el-diagrama-te-dice-qué-configuraste-de-verdad] El panel de la derecha no es decoración. Es el camino real que sigue una consulta con lo que tenés puesto hoy, y resalta el paso que corresponde a la pestaña en la que estás. El configurador del agente, pestaña Identidad, con el diagrama de atención a la derecha El configurador del agente, pestaña Identidad, con el diagrama de atención a la derecha Mirá la referencia de abajo: **lo que pasa siempre**, **lo que depende del caso** y **todavía sin usar**. El tercer estado es el más útil — un paso en gris es algo que no configuraste, y el diagrama te está avisando que el agente lo va a saltear. ## Identidad [#identidad] Quién es tu agente: nombre, la dirección donde lo encuentran, nacionalidad, género y cómo suena la voz. **Cambiar la Dirección rompe todos los links que ya compartiste.** Es la URL pública del agente: si la cambiás, cualquier link que hayas mandado por WhatsApp, puesto en tu bio o pegado en un anuncio deja de funcionar. Dos ajustes pesan más de lo que parecen: * **Dirección.** Es la URL pública del agente. * **Nacionalidad.** No es cosmética: define el registro. Elegir Argentina / Uruguay pasa al agente al voseo, no le cambia solo la bandera. La velocidad y el timbre afectan únicamente las notas de voz. Un timbre más expresivo con una velocidad pausada suena menos robótico — usá **Escuchar** para comparar antes de decidir. ## Tu agencia [#tu-agencia] Pestaña Tu agencia, con la descripción del negocio y los datos clave Pestaña Tu agencia, con la descripción del negocio y los datos clave Son dos bloques con trabajos distintos: **Qué hace tu agencia** es contexto libre. Qué vendés, en qué te especializás, qué explícitamente no hacés. El agente lo usa para razonar, no para citarlo textual. **Datos clave** es lo contrario: respuestas que el agente repite *literal* cuando aparece el tema — dónde estás, cómo se paga, cuáles son tus plazos. Usalo para todo lo que tiene que salir siempre igual. Para lo que es más largo que un campo —una política, las condiciones de un operador, el FAQ de tu sitio— está [Conocimiento](/es/docs/agent/knowledge), que el agente busca en vez de recitar. ## Reglas [#reglas] Pestaña Reglas, con reglas clasificadas como verificables o solo guía Pestaña Reglas, con reglas clasificadas como verificables o solo guía Escribís las reglas en tus palabras y Trama te muestra cómo las entendió, abajo de **Lo entendimos así** — leé esa línea, porque esa interpretación es la que efectivamente se aplica. Cada regla queda clasificada en uno de dos tipos, y la diferencia es real: * **Verificable** — se puede contrastar contra datos, así que se hace cumplir. "Los precios que diga tienen que salir del catálogo" es verificable. * **Solo guía** — una preferencia que orienta la redacción pero no se puede chequear mecánicamente. "Siempre preguntá si las fechas ya están cerradas" es guía. No esperes que una preferencia se comporte como una barrera. Si algo no puede pasar nunca, escribilo de forma que se pueda verificar. ## Turnos [#turnos] Pestaña Turnos, con los horarios de atención por día Pestaña Turnos, con los horarios de atención por día Los horarios de tu equipo, día por día, en tu zona horaria, con tantas franjas por día como necesites. Fuera de ese horario el agente igual trabaja — lo que cambia es que le avisa al cliente cuándo lo va a tomar una persona, en vez de dar a entender que alguien está por responder. ## Cierre [#cierre] Pestaña Cierre, para adjuntar un link o un PDF Pestaña Cierre, para adjuntar un link o un PDF Lo que recibe el cliente en el momento en que la consulta pasa a tu equipo: un link, un PDF, o los dos. Sale en cada derivación, apenas el agente termina de escribir — un catálogo, un brochure, un formulario de reserva. Agente para configurar tenés desde **Starter**: el plan gratuito no incluye ninguno. Con un plan pago, tu agente responde en el chat web desde el día uno — ese canal viene prendido, y lo que califica ahí consume cupo como cualquier otro. La advertencia que puede aparecer arriba del configurador dice algo más acotado: todavía no hay ningún canal de mensajería conectado, así que nadie puede escribirle por WhatsApp, Instagram ni Messenger. Esos los conectás desde [Canales](/es/docs/channels/overview). # Cómo funciona el agente (/es/docs/agent/how-it-works) El **Agente de Consultas** es el corazón de Trama. Vive en el WhatsApp de tu negocio y cubre todo lo que pasa entre el primer mensaje de un cliente y el momento en que un vendedor toma la oportunidad. El Agente de Consultas empieza en **Starter**: el plan gratuito no incluye ninguno. No lo confundas con el **Trama Agent**, el copiloto que usa tu equipo desde el panel, que está en todos los planes — mirá [Planes](/es/docs/plans/overview). ## El ciclo, paso a paso [#el-ciclo-paso-a-paso] Puede llegar desde un anuncio de Meta, desde tu sitio, o porque alguien le pasó tu número. Saluda, se presenta como parte de tu equipo y arranca una conversación normal sobre lo que la persona necesita. Sobre la marcha junta lo que tu equipo necesita para cotizar: destino, fechas de viaje, cantidad y edades de los pasajeros, presupuesto aproximado, ciudad de origen. Con esos datos determina si es una oportunidad real de venta, y le asigna un score sobre 100 que se traduce en una temperatura: **Caliente**, **Tibio** o **Frío**. Ya calificada, la consulta pasa a ser una tarjeta del tablero en **Oportunidades**, con todos los campos ya cargados. El vendedor asignado recibe el resumen completo, listo para tomar la conversación y cotizar. ## Cuándo deriva [#cuándo-deriva] El agente le pasa la conversación al vendedor cuando: * Ya juntó lo suficiente para calificar la consulta — destino, fechas y pasajeros, como mínimo * El cliente pide hablar con una persona * El cliente pregunta algo que el agente no puede responder * La conversación necesita negociación o atención personalizada Esas reglas las definís vos, en **Agentes**, junto con todo lo que sigue. ## Qué sabe el agente [#qué-sabe-el-agente] Sólo lo que vos le cargues sobre tu negocio: * Los destinos que manejás y qué caracteriza a cada uno * Los servicios que vendés (paquetes, aéreos, hoteles, transfers, excursiones) * Los horarios de atención de tu equipo * Las políticas generales: formas de pago, cancelaciones, documentación necesaria * Cualquier otra cosa que quieras que use en la conversación, incluidos los documentos y páginas que cargues en [Conocimiento](/es/docs/agent/knowledge) ## Qué NO hace el agente [#qué-no-hace-el-agente] * **No inventa.** Si le falta un dato, dice que lo consulta con el equipo en vez de improvisar una respuesta. * **No cotiza.** Ni precios ni presupuestos. Eso es trabajo del vendedor. * **No reserva ni cobra.** No hace reservas de hoteles, vuelos ni servicios, y nunca pide datos de tarjeta. * **No reemplaza al vendedor.** Cuando la consulta está lista, se la pasa a un humano. # Conocimiento (/es/docs/agent/knowledge) Tu agente contesta con lo que vos cargás. La mayor parte vive en [su configuración](/es/docs/agent/configuration), pero hay una cuarta fuente para todo lo que es demasiado largo para escribir en un campo: **Configuración → Conocimiento**. Formas de pago, política de cancelación, las condiciones del operador, las preguntas frecuentes de tu sitio. Lo cargás una vez y lo consultan todos tus agentes. Lo editan el **Dueño y el Administrador**. Quien llegue a la pantalla sin ese rol la ve en sólo lectura. ## Las tres formas de cargarlo [#las-tres-formas-de-cargarlo] PDF, Word o Excel. **Hasta 25 MB, y hasta 50 MB si es PDF.** Varios a la vez está bien. Un título y el contenido, escrito o pegado. Es el indicado para lo que no existe como archivo — cómo se paga, cuáles son tus plazos. Una URL. **Sólo esa URL: no recorre tu sitio entero.** Si querés tres páginas, agregás tres. Cada fuente se procesa en segundo plano —**Pendiente → Procesando → Listo**— y recién cuenta cuando dice Listo. Si vuelve con error, el menú de la fila tiene **Re-procesar**; es también la forma de refrescar una página cuyo contenido cambió, porque una URL no se vuelve a leer sola. ## De quién es cada fuente [#de-quién-es-cada-fuente] Por defecto una fuente es de **toda la organización**: la consultan todos los agentes. Desde el menú de la fila la podés pasar a **un agente puntual**, y de ahí en adelante la ve sólo ése. Es la misma idea que los [grupos del catálogo](/es/docs/tools/catalog#grupos), y por el mismo motivo: si tenés más de un agente en canales o rubros distintos, no todos tienen que estar citando las mismas condiciones. ## Cómo la usa el agente [#cómo-la-usa-el-agente] **Busca** — no se lleva todo puesto en la cabeza. Cuando una pregunta necesita algo que no está en su configuración ni en su catálogo, hace una búsqueda acá y contesta con los fragmentos que vuelven. Dos consecuencias que conviene saber: * **Es una fuente más, no la primera.** El catálogo es de donde salen los precios y los productos; el conocimiento es de donde salen las condiciones y las políticas. El agente elige. * **Una organización sin nada cargado ni siquiera tiene la búsqueda.** Es a propósito: a un agente al que se le ofrece una herramienta que sólo puede volver vacía le baja la propensión a usar las otras. **Borrar una fuente es inmediato y no se puede deshacer.** Desde ese momento el agente deja de usarla para responder. Acá no hay papelera de 30 días, al revés que un [producto de catálogo](/es/docs/tools/catalog) o una oportunidad archivada. ## ¿Conocimiento, datos clave o catálogo? [#conocimiento-datos-clave-o-catálogo] Tres lugares que "le enseñan algo al agente", y meter una cosa en el equivocado es el error más común de esta pantalla: | Cargalo en | Cuándo | Cómo sale | | ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | | **Conocimiento** | Material largo que ya tenés escrito: políticas, condiciones, un FAQ, la planilla del operador | El agente lo busca y contesta **con sus palabras**, en base a lo que encontró | | **Datos clave** ([config del agente](/es/docs/agent/configuration)) | Una respuesta corta que tiene que salir siempre idéntica: dónde están, cómo se paga | Se repite **palabra por palabra** | | **[Catálogo](/es/docs/tools/catalog)** | Lo que vendés: productos, precios, variantes | Es lo que el agente puede ofrecer y cotizar. Ninguna otra cosa le da un precio | La regla práctica: si no puede parafrasearse nunca, es un dato clave. Si son tres páginas de condiciones, es conocimiento. # Esta doc como contexto (/es/docs/ai/docs-as-context) Ésta es la tercera puerta, y la más barata: no conectás tus datos, conectás **la documentación**. Sirve cuando lo que querés no es "qué tengo pendiente hoy" sino "cómo funciona el gate de calificación", o cuando estás escribiendo código contra [la API](/es/docs/api) y querés que tu editor deje de adivinar. ## Cualquier página, en Markdown [#cualquier-página-en-markdown] Agregale `.md` a cualquier URL y te devuelve esa página en texto plano, lista para pegar en un chat: ``` https://trama.so/es/docs/quickstart.md ``` Funciona en los tres idiomas y en todas las páginas, [la referencia de la API](/es/docs/api) incluida — ahí lo que vuelve es el fragmento de OpenAPI de ese endpoint en vez de una transcripción, que es más útil: un asistente que lo lee puede armar el request, no sólo describirlo. ## El sitio entero, para un modelo [#el-sitio-entero-para-un-modelo] | Archivo | Qué es | | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | | [`/docs/llms.txt`](https://trama.so/docs/llms.txt) | Un índice: cada página con su título, su descripción y su URL, en los tres idiomas. Chico como para pasarlo entero | | [`/docs/llms-full.txt`](https://trama.so/docs/llms-full.txt) | La documentación completa en un solo archivo de texto | Empezá por `llms.txt`. Es lo que le permite a un asistente encontrar la página correcta en vez de tener que sostener el sitio entero en contexto. **Viven bajo `/docs/`, no en la raíz.** `trama.so/llms.txt` es el índice del SITIO —la landing, los precios, el blog— y apunta acá. Si lo que querés es sólo la documentación del producto, el que buscás es `/docs/llms.txt`. ## En tu editor [#en-tu-editor] Apuntá la herramienta de fetch o de docs de tu asistente a `https://trama.so/docs/llms.txt` y dejá que siga las URLs `.md` desde ahí. Ésa es toda la configuración: sin key, sin cuenta, sin nada privado. ## Una advertencia que vale decir [#una-advertencia-que-vale-decir] Un asistente con esta doc cargada está citando **documentación**, no tu cuenta. No conoce tu plan, tu configuración ni si tenés WhatsApp conectado. Cuando la respuesta depende de cómo está armada *tu* organización, la fuente es el panel o [el conector del producto](/es/docs/ai/mcp), no esto. # Trama y la IA (/es/docs/ai) Trama ya funciona con IA adentro del producto: el [Agente de Consultas](/es/docs/agent/how-it-works) le contesta a tus clientes y el **Trama Agent** es el copiloto de tu equipo. Esta sección es sobre la otra dirección: **conectar tu propia IA a Trama**. Hay tres puertas, y son para trabajos distintos. Preguntarle y operar tu Trama desde Claude o ChatGPT, en lenguaje común. Sin código. Para una integración que escribís vos, o un agente que estás construyendo. Apuntá cualquier asistente a la documentación para que conteste bien sobre Trama. ## Cuál querés [#cuál-querés] | Si querés… | Usá | | ----------------------------------------------------------------------------------------------------------- | ------------------------------------- | | Preguntar "qué tengo pendiente hoy", mover una tarjeta, redactar un seguimiento — desde tu propio asistente | [MCP](/es/docs/ai/mcp) | | Sincronizar Trama con otro sistema, o construir un producto encima | [La API](/es/docs/api) | | Que Claude, Cursor o ChatGPT contesten preguntas *sobre* Trama | [La doc](/es/docs/ai/docs-as-context) | ## MCP y la API no son la misma puerta [#mcp-y-la-api-no-son-la-misma-puerta] Parecen intercambiables y no lo son: * **El servidor MCP pasa por el Trama Agent**, así que se lleva puestas las reglas del producto: tu rol decide qué herramientas siquiera ves, y escribir una oportunidad va por el mismo camino que usa el panel. Es para una persona manejando un asistente. * **La API es un contrato crudo.** Sin rol, sin agente, sin interpretación — la key lee la organización entera. Es para código. Por eso también tienen alcance distinto: MCP puede crear y mover oportunidades y registrar seguimientos, y [la API no](/es/docs/api). ## Lo que ninguna de las dos hace [#lo-que-ninguna-de-las-dos-hace] **Ninguna puede contestarle a un cliente.** Ni por MCP ni por la API. Hay exactamente una excepción, y es angosta: [contestar una consulta que el agente le hizo al equipo](/es/docs/ai/tools#consultas-del-agente). Todo lo demás que llega a un cliente sale desde Trama. Las dos están **disponibles en todos los planes y sin costo extra**, el gratuito incluido. Lo único que consume el cupo diario de tu plan es la herramienta `ask_trama`, porque ésa corre el Trama Agent. Las demás no. # Conectar Claude o ChatGPT (MCP) (/es/docs/ai/mcp) Trama expone un servidor **MCP** (Model Context Protocol), así que un asistente como Claude o ChatGPT puede consultar y operar tu organización directo — sin copiar y pegar entre apps, y sin código. MCP es un estándar abierto para conectar asistentes de IA con herramientas y datos externos. Agregar Trama como conector le da a tu asistente un juego de herramientas sobre tu operación: oportunidades, clientes, conversaciones, catálogo, pendientes. ``` https://ai.trama.so/mcp ``` Es la única dirección que vas a necesitar. Qué expone el conector una vez prendido está en [Qué expone el conector](/es/docs/ai/tools). **Al conectar, los datos de tu organización salen hacia el asistente que elegiste.** Las oportunidades, los clientes y las conversaciones que tu asistente consulte se procesan en la infraestructura de quien lo provee —Anthropic para Claude, OpenAI para ChatGPT—, con sus términos y sus políticas de retención, no las nuestras. Trama no recorta lo que devuelve: te muestra exactamente lo que tu rol te deja ver en el panel. La decisión de qué asistente conectar, y si conectarlo, es de la organización. El camino más corto es **Configuración → Conectar con IA** en el panel: ahí hay un botón que abre Claude con el conector ya cargado, y la dirección lista para copiar en ChatGPT. ## Antes de empezar [#antes-de-empezar] * Una cuenta de Trama activa, con al menos un ingreso al panel. * La organización sobre la que querés trabajar seleccionada como activa — si pertenecés a varias, el conector usa la activa al momento de autorizar. * Un cliente MCP que soporte OAuth con Dynamic Client Registration. Claude.ai y ChatGPT ya lo soportan. ## Conectarlo [#conectarlo] Necesitás un plan pago de Claude — Pro, Max, Team o Enterprise. Las cuentas gratuitas no pueden agregar conectores. En Claude.ai o en la app de escritorio, andá a **Configuración → Conectores**. Tocá **Agregar conector personalizado** y pegá `https://ai.trama.so/mcp`. Claude te redirige. Usá la misma cuenta con la que entrás al panel. Le das acceso a tu organización activa. Listo — en cualquier conversación podés pedirle que use Trama. Los conectores están sólo en los planes pagos de ChatGPT. En cuentas de equipo, el modo desarrollador lo habilita un administrador del workspace. En **Configuración → Conectores**. Está en **Configuración avanzada**. Elegí **Crear**, pegá `https://ai.trama.so/mcp` y seleccioná autenticación **OAuth**. ChatGPT abre el flujo contra Trama. Después queda disponible en cualquier chat, o adentro de un GPT personalizado. ## Pedirle cosas [#pedirle-cosas] Una vez conectado, le hablás normal: * "Mostrame las oportunidades calificadas de esta semana" * "Cuántos clientes nuevos llegaron desde la campaña de Bariloche" * "Resumí los seguimientos pendientes de María" * "Registrá que llamé a Pérez y me pidió otra opción" Tu cliente además trae [rutinas ya escritas](/es/docs/ai/tools#prompts) —"revisar mi día", "estado del embudo"— en su menú de prompts. ## Permisos y seguridad [#permisos-y-seguridad] * El acceso usa **OAuth 2.1**: nunca compartís tu contraseña de Trama con Claude ni con ChatGPT. * El token vive sólo adentro del cliente que conectaste, y lo podés revocar cuando quieras desde la configuración de Trama. * Cada respuesta corre con **tu rol** sobre la organización activa. Si te reducen los permisos, lo que el conector ofrece cambia con ellos. * Si te invitan a una organización nueva o cambiás la activa, desconectá y volvé a conectar para refrescar el contexto. ## Limitaciones actuales [#limitaciones-actuales] * **No podés contestarle a un cliente.** Las conversaciones son de sólo lectura; la única excepción es [contestar una consulta que el agente le hizo al equipo](/es/docs/ai/tools#consultas-del-agente). * **Abrir una conversación devuelve sus 50 mensajes más recientes**, así que en un hilo largo estás leyendo la cola, no la historia completa. * **Todo lo que necesite un archivo ya subido a una conversación de WhatsApp** —leer un multimedia, armar una cotización desde un documento— no está disponible: un cliente MCP no tiene cómo llegar. * **Podés preparar una campaña pero no enviarla.** Aprobar y enviar sigue siendo del panel. * **El servidor no hace streaming**: cada respuesta llega completa. * **Un cliente sin OAuth dinámico (Dynamic Client Registration) no puede conectarse.** Claude.ai y ChatGPT sí pueden. # Qué expone el conector (/es/docs/ai/tools) Una vez [conectado](/es/docs/ai/mcp), tu asistente ve un conjunto de **herramientas** (cosas que puede hacer), **prompts** (rutinas ya escritas que elegís del menú de tu cliente) y **recursos** (contexto que puede leer solo). Todo devuelve datos estructurados y no prosa, que es lo que le permite a tu asistente encadenar llamadas en vez de releer su propio texto. **Tu rol decide qué herramientas ves.** El servidor no te ofrece las que no podés usar: un vendedor no ve rendimiento del equipo, y sin permiso para sacar oportunidades del embudo, archivar y restaurar directamente no están en la lista. Esto no es un aviso al momento de llamar: la herramienta no está. ## Herramientas [#herramientas] ### Búsqueda [#búsqueda] **`search_workspace`** — una sola llamada sobre oportunidades, clientes, conversaciones, catálogo y agentes. Las conversaciones se buscan **también por contenido**, así que una palabra dicha adentro de un hilo lo encuentra, y el resultado trae el fragmento que coincidió. Suele ser la primera llamada: resuelve el id que todas las demás piden. ### Oportunidades [#oportunidades] | Leer | Escribir | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `list_opportunities` · `get_opportunity` · `get_opportunities_board` · `query_opportunities` · `list_dormant_opportunities` · `list_paused_opportunities` · `list_archived_opportunities` | `create_opportunity` · `update_opportunity` · `move_opportunity` · `pause_opportunity` · `resume_opportunity` · `reactivate_opportunity` · `archive_opportunity` · `restore_opportunity` · `dispute_opportunity` | Los seguimientos también viven acá: `add_opportunity_follow_up`, `update_opportunity_follow_up` y `delete_opportunity_follow_up` — registrar uno, corregirlo, y dar de baja el que se registró por error. `query_opportunities` es la analítica: cuenta y suma montos agrupando por vendedor, día, origen, columna o temperatura, así que "cuánto cotizamos en julio por vendedor" es una llamada y no un recorrido de una lista. ### Clientes [#clientes] `list_customers` · `search_customers` · `get_customer` · `get_customer_facts` · `create_customer` · `update_customer` · `update_customer_profile` `get_customer_facts` es la que conviene conocer: devuelve [lo que Trama aprendió](/es/docs/operations/customers) de esa persona en sus conversaciones, hecho por hecho, que es la diferencia entre "acá tenés un teléfono" y "acá tenés cómo compra esta persona". ### Conversaciones [#conversaciones] `list_conversations` · `get_conversation` · `get_conversation_metrics` · `get_seller_response_gap` **Las conversaciones son de sólo lectura, por diseño.** Podés leer una y resumirla; nunca contestarla ni tomarla desde acá. Y `get_conversation` devuelve los **50 mensajes más recientes**, no el hilo completo. En una conversación larga estás leyendo la cola. Ese tope existe porque del otro lado de esta conexión hay un modelo de terceros, y leer un hilo no es lo mismo que exportarlo. ### Catálogo [#catálogo] `list_catalog_products` · `get_catalog_product` · `create_catalog_product` · `update_catalog_product` · `publish_catalog_product` · `delete_catalog_product` Las variantes tienen su propio juego —`list_product_variants`, `create_product_variant`, `update_product_variant`, `delete_product_variant`, `reorder_product_variants`— y `set_packages_on_link` elige qué se muestra en tu [Link de ofertas](/es/docs/tools/offers-link). Acordate de que **publicar es lo que vuelve vendible a un producto**: uno creado es un borrador hasta que corre `publish_catalog_product`. Es la misma regla que [la pantalla de catálogo](/es/docs/tools/catalog). ### Campañas y anuncios [#campañas-y-anuncios] `preview_campaign_audience` · `list_campaign_templates` · `get_campaign_proposals` · `draft_campaign_message` · `get_ad_performance` Desde acá dimensionás una audiencia y redactás el texto. **Aprobar y enviar sigue siendo del panel** — escribirle a toda tu base de clientes no es algo que un asistente deba poder terminar solo. ### Tus pendientes [#tus-pendientes] `list_pending_follow_ups` · `list_reminders` · `create_reminder` · `reschedule_reminder` · `resolve_reminder` Es la superficie de "qué tengo hoy" — el mismo material que [Mi día](/es/docs/operations/mission-control). ### Consultas del agente [#consultas-del-agente] `list_agent_questions` · `answer_agent_question` Cuando el [Agente de Consultas](/es/docs/agent/how-it-works) no pudo confirmar algo solo, se lo pregunta al equipo. Estas dos te dejan ver qué está esperando y contestarle. **`answer_agent_question` es el único camino por el que algo que escribís desde acá llega a un cliente.** Tu respuesta vuelve al agente y el agente la usa en la conversación. Todo lo demás de esta página se queda adentro de Trama. ### Equipo y organización [#equipo-y-organización] `get_organization_overview` · `get_seller_performance` · `invite_member` · `set_member_assignable` · `set_member_spoken_languages` ### `ask_trama` [#ask_trama] La comodín: le pregunta al Trama Agent en lenguaje natural y trae la respuesta. Es para lo que ninguna herramienta específica cubre — pedidos compuestos, acciones encadenadas, o preguntas sobre cómo funciona Trama. **`ask_trama` es la única herramienta que consume el cupo diario de tu plan**, porque corre el Trama Agent. Las demás son llamadas directas y no cuestan nada. Si llegás al tope, la herramienta te lo dice en su respuesta en vez de fallar. ## Las que tu cliente te va a repreguntar [#las-que-tu-cliente-te-va-a-repreguntar] Cinco herramientas van marcadas como destructivas en el protocolo, que es lo que hace que un cliente bien portado te pida confirmación antes de ejecutarlas: `archive_opportunity` · `dispute_opportunity` · `delete_opportunity_follow_up` · `delete_catalog_product` · `delete_product_variant` Se exponen en vez de esconderse —un asistente que no puede archivar es un asistente que dejás de usar— pero la marca está para que nada de mucho alcance pase en silencio. ## Prompts [#prompts] Tu cliente los muestra en su menú de prompts (en Claude, el **+** al lado del cuadro de mensaje). Son rutinas que escribimos nosotros para que no tengas que formularlas: | Prompt | Qué hace | | -------------------------- | ----------------------------------------------------------------------------------------------------------------------- | | **revisar-mi-dia** | Tus pendientes, tus recordatorios y las oportunidades nuevas de ayer, en una sola lista priorizada | | **estado-del-embudo** | Dónde se traba el pipeline: qué columna acumula, qué vendedor está sobrecargado, qué origen trae volumen sin conversión | | **barrido-de-seguimiento** | A quién contactar hoy y con qué excusa concreta — te muestra la lista antes de escribir nada | | **como-viene-el-equipo** | Los tiempos de respuesta del tablero contra los **reales**, medidos sobre las conversaciones, y la brecha entre los dos | | **huecos-del-catalogo** | Demanda que aparece repetida y no tiene producto que la cubra | Un prompt sólo aparece si tenés todas las herramientas que necesita, así que el menú que ves también se ajusta a tu rol. ## Recursos [#recursos] Dos cosas que tu asistente puede leer sin que se lo pidas: * **`trama://catalog`** — el catálogo de tu organización. * **`trama://organization`** — el panorama operativo: integrantes, canales, inbox y métricas. Existen para que el asistente tenga la forma de tu negocio en la mano antes de que le preguntes nada, en vez de gastar un turno descubriéndola. # Autenticación (/es/docs/api/authentication) Cada request lleva una **API key de organización**. No hay flujo de OAuth ni login de usuario: la key *es* la credencial. ## Sacar una key [#sacar-una-key] En el panel, **Desarrolladores** — está en el menú de la izquierda, arriba de Configuración. Es **sólo para Dueño y Administrador**. Poné un nombre que diga dónde va a correr ("Sitio web", "Sync del backoffice"). Ese nombre es lo que después te deja revocar exactamente la que corresponde. Sin vencimiento, o 30, 90, 180 días o un año. Una key que vence es la versión barata de la rotación: poné una fecha si la integración es algo que vas a estar para renovar. **La key se muestra una sola vez.** Guardamos un hash, no la key, así que si la perdés no hay nada que recuperar — creás una nueva y revocás la vieja. Una API key es una credencial completa sobre los datos de tu organización. Guardala en un servidor, en una variable de entorno o en un gestor de secretos. **Nunca en código de front-end**, en un repositorio ni en un navegador: todo lo que le llega a un visitante le llega con la key adentro. ## Cómo se manda [#cómo-se-manda] Funcionan dos headers, y son equivalentes. Elegí uno. ```bash curl https://api.trama.so/v1/customers \ -H "Authorization: Bearer $TRAMA_API_KEY" ``` ```bash curl https://api.trama.so/v1/customers \ -H "x-api-key: $TRAMA_API_KEY" ``` Si falta o no es válida, sale un `401`: ```json { "error": { "code": "API_KEY_MISSING", "message": "The API key is missing or not valid." } } ``` ## Qué alcanza una key [#qué-alcanza-una-key] **Una organización, entera.** La key queda atada a la organización donde se creó, y ningún request nombra una organización: todo lo que leas y todo lo que escribas se queda adentro de esa. Si operás varias, creá una key por organización. Hoy **no hay alcances por key ni key de sólo lectura**. Toda key puede hacer todo lo que la API puede hacer, que hoy es: leer la operación, y escribir clientes y productos del catálogo. **Una key no es una persona.** No lleva rol y no la afectan las [políticas de la agencia](/es/docs/team/visibility): ésas limitan lo que ve un *integrante* en el panel, y una key no es un integrante. Lo que una key lee es la organización completa. ## Revocar [#revocar] Desde la misma pantalla de **Desarrolladores**. Revocar tiene efecto inmediato, y es lo que hay que hacer ante cualquier sospecha de que una key se expuso: no hay ventana de rotación que esperar y no se rompe nada más, porque las keys son independientes entre sí. Por eso también importa el nombre: con una key por integración revocás la que se filtró en vez de bajar todo junto. ## Mirar cómo se usa [#mirar-cómo-se-usa] **Desarrolladores → Actividad** muestra los requests que hacen tus keys: qué endpoints, con qué status volvieron y cuánto tardaron. Es la forma más rápida de distinguir "mi integración está rota" de "mi integración no está llamando". # Errores (/es/docs/api/errors) Todos los errores —validación, autenticación, no encontrado, límite de volumen, o nuestros— vuelven con el mismo body: ```json { "error": { "code": "CATALOG_PRODUCT_NOT_FOUND", "message": "The catalog product does not exist." } } ``` **Bifurcá por `code`, nunca por `message`.** El código es parte del contrato y no cambia abajo tuyo. El mensaje es una frase para alguien que lee un log, y lo reescribimos cada vez que aparece una más clara. ## Códigos de estado [#códigos-de-estado] | Status | Qué significa | | ------ | ----------------------------------------------------------------------------------------------------- | | `400` | El request no es válido — un parámetro mal, un body mal armado, un contacto duplicado | | `401` | La key falta, está mal formada, fue revocada o venció | | `404` | Ese recurso no existe **en esta organización**. Puede existir en otra; el 404 es el mismo | | `409` | Conflicto con el estado actual del recurso | | `429` | Por encima del techo de requests — ver [Límites de volumen](/es/docs/api/rate-limits) | | `5xx` | Nuestro. Reintentá con backoff; si persiste, escribinos a [support@trama.so](mailto:support@trama.so) | ## Los códigos [#los-códigos] | Código | Status | Cuándo | | ----------------------------------- | ------ | ---------------------------------------------------------------------------------------------------- | | `VALIDATION_FAILED` | 400 | Un parámetro o campo no pasó la validación. El mensaje nombra el campo: `contacts.0.phone: Required` | | `CRM_CUSTOMER_DUPLICATE_IDENTIFIER` | 400 | Otro cliente ya usa uno de esos contactos, o el mismo contacto viene repetido adentro de tu payload | | `CRM_CUSTOMER_INVALID_PHONE` | 400 | El teléfono del contacto no es usable | | `API_KEY_MISSING` | 401 | No vino ni `Authorization` ni `x-api-key` | | `API_KEY_INVALID` | 401 | La key no valida | | `API_KEY_NOT_FOUND` | 401 | La key fue revocada, o nunca existió | | `CUSTOMER_NOT_FOUND` | 404 | | | `OPPORTUNITY_NOT_FOUND` | 404 | | | `CONVERSATION_NOT_FOUND` | 404 | | | `QUOTE_NOT_FOUND` | 404 | | | `CATALOG_PRODUCT_NOT_FOUND` | 404 | | | `NOT_FOUND` | 404 | El endpoint no existe. Revisá el método y el path | | `API_KEY_RATE_LIMITED` | 429 | Ver [Límites de volumen](/es/docs/api/rate-limits) | **Un código que no reconocés igual se puede manejar.** Se agregan códigos nuevos a medida que la API crece, así que tomá la lista de arriba como los que vale la pena bifurcar y todo lo demás como "un error de este status". Lo que no va a pasar es que un código existente cambie de significado. ## Cómo se lee un error de validación [#cómo-se-lee-un-error-de-validación] `VALIDATION_FAILED` pone el campo que falló adelante de todo, como un camino con puntos hacia lo que mandaste: ```json { "error": { "code": "VALIDATION_FAILED", "message": "limit: Number must be less than or equal to 100" } } ``` Ese camino es la parte útil. La frase que sigue sale del schema y puede reescribirse. ## Lo que no vas a recibir [#lo-que-no-vas-a-recibir] * **Ni stack traces ni detalles internos.** Un `5xx` dice que el request no se pudo completar y nada más, a propósito. * **Ningún texto de error en español.** El panel está en español y el código de dominio abajo también; la API traduce en el borde, así que a quien integra nunca le llega un mensaje en un idioma que no pidió. Si alguno se escapa, es un bug y vale reportarlo. # La API de Trama (/es/docs/api) La API REST de Trama te da los datos de tu propia operación —oportunidades, clientes, conversaciones, cotizaciones, catálogo y equipo— desde afuera del panel. Son los mismos datos que ve tu equipo, con el mismo límite de organización. Está **disponible en todos los planes y sin costo extra**, el gratuito incluido. Dos minutos, desde **Desarrolladores** en el panel. Cada página de endpoint tiene un playground: mandás el request desde acá, con tu propia key. ## Lo básico [#lo-básico] | | | | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------- | | **URL base** | `https://api.trama.so` | | **Versión** | Todo cuelga de `/v1` | | **Formato** | JSON de ida y de vuelta. `Content-Type: application/json` en cualquier request con body | | **Autenticación** | Una API key de organización, como bearer token — ver [Autenticación](/es/docs/api/authentication) | | **Spec** | [`api.trama.so/v1/openapi.json`](https://api.trama.so/v1/openapi.json), OpenAPI 3.1, generada desde el código que sirve el tráfico | ```bash curl https://api.trama.so/v1/opportunities \ -H "Authorization: Bearer $TRAMA_API_KEY" ``` ## Qué se puede hacer hoy [#qué-se-puede-hacer-hoy] **Leer**: oportunidades, clientes, conversaciones y sus transcripciones, cotizaciones y sus adjuntos, productos del catálogo, integrantes del equipo. **Escribir**: clientes (crear, editar, archivar) y productos del catálogo (crear, editar, archivar). **El resto es sólo lectura a propósito.** Los caminos que crean una oportunidad o mueven una tarjeta son los que escriben el agente y las automatizaciones, y un segundo escritor sin noción del ciclo de calificación deja el tablero desalineado de la conversación. Si necesitás escribir ahí, la puerta es [el servidor MCP](/es/docs/ai/mcp), que pasa por el Trama Agent y respeta las mismas reglas que el panel. ## Lo que todavía no está [#lo-que-todavía-no-está] Conviene saberlo antes de diseñar tu integración alrededor: * **No hay webhooks.** Nadie te llama: consultás vos. El `updatedAt` de cada recurso y el `Retry-After` de un 429 son lo que hace posible consultar con educación. * **No podés mandar un mensaje.** Ni por WhatsApp ni por ningún canal. Contestarle a un cliente pasa por Trama. * **No hay paginación por cursor.** Es `limit` / `offset` con un `total` — ver [Paginación](/es/docs/api/pagination). ## Convenciones [#convenciones] * **Las fechas con hora** son ISO 8601 en UTC (`2026-08-29T14:03:11.000Z`). Las fechas sin hora (un check-in, por ejemplo) son strings `AAAA-MM-DD`. * **Los IDs son strings opacos.** No los parsees ni asumas un formato. * **Los campos opcionales vuelven en `null`**, no ausentes. Un campo que está en el schema está siempre en la respuesta. * **`stage` es una clave, no un título.** Cada agencia renombra sus columnas del tablero, así que la clave es lo estable para bifurcar. * **Los montos viajan con su moneda al lado.** No se normaliza nada por vos. **Cada key pertenece a UNA organización.** Ningún request nombra una organización, y nada de lo que leas o escribas sale de la que emitió la key. Si operás varias, necesitás una key por organización. # Paginación (/es/docs/api/pagination) Todos los endpoints de listado paginan igual, con `limit` y `offset` en la query string. ```bash curl "https://api.trama.so/v1/customers?limit=50&offset=100" \ -H "Authorization: Bearer $TRAMA_API_KEY" ``` | Parámetro | Default | Máximo | | --------- | ------- | ------- | | `limit` | 25 | **100** | | `offset` | 0 | — | Pedir más de 100 no se recorta en silencio: da un `400` con `VALIDATION_FAILED`. Es a propósito — un request que devuelve menos filas de las que pediste sin decírtelo es la forma en que una integración pierde datos sin que nadie se entere. ## La forma de la respuesta [#la-forma-de-la-respuesta] ```json { "data": [ /* … */ ], "pagination": { "limit": 50, "offset": 100, "total": 1284 } } ``` `total` es el conteo **de los filtros que mandaste**, no de la organización entera. Es lo que te deja saber si hay otra página que pedir, sin tener que pedirla y recibir un array vacío. ```js async function traerTodo(path) { const items = []; let offset = 0; for (;;) { const res = await fetch(`https://api.trama.so${path}?limit=100&offset=${offset}`, { headers: { Authorization: `Bearer ${process.env.TRAMA_API_KEY}` }, }); const { data, pagination } = await res.json(); items.push(...data); offset += pagination.limit; if (offset >= pagination.total) return items; } } ``` **Los offsets se te mueven abajo de los pies.** Una lista es una consulta viva, no una foto: si mientras la recorrés se crean o reordenan filas —y en el catálogo, editar un producto lo reordena— una fila puede saltar de página y la vas a ver dos veces o ninguna. Si estás sincronizando en vez de mirando, no cuentes con haber recorrido todas las páginas limpiamente. Indexá por el `id` del recurso y volvé a recorrer cada tanto, en vez de asumir que una pasada quedó completa. **No hay paginación por cursor**, y es una decisión y no un olvido: un cursor estable necesita un orden que hoy no podemos prometer en todas las listas. Si tu catálogo o tu base de clientes crece hasta que esto duele, contanos: es de las cosas que se versionan, no que se parchan. # Límites de volumen (/es/docs/api/rate-limits) El límite es **por organización**, no por key: crear una segunda key no te compra un segundo presupuesto. Es a propósito — el presupuesto es de la cuenta, y partirlo por credencial haría que la carga de nuestro lado dependa de cuántas keys alguien creó. | Ventana | Límite | | ---------- | ------------------ | | Por minuto | **120 requests** | | Por hora | **3.000 requests** | Se evalúan las dos, y la que se agote primero es la que te frena. Hay además un techo por IP deliberadamente holgado, alto como para que sólo lo toque una sola máquina inundándonos: un partner que integra muchas organizaciones desde un servidor no llega. ## Cómo se ve un 429 [#cómo-se-ve-un-429] ```http HTTP/1.1 429 Too Many Requests Retry-After: 24 ``` ```json { "error": { "code": "API_KEY_RATE_LIMITED", "message": "Rate limit exceeded for this API key." } } ``` **`Retry-After` viene en segundos y es el número real**: esperar eso alcanza. Leelo en vez de adivinar un backoff — un sleep fijo es o más lento de lo necesario o insuficiente. ```js async function llamar(url, init) { for (let intento = 0; intento < 5; intento++) { const res = await fetch(url, init); if (res.status !== 429) return res; const espera = Number(res.headers.get("Retry-After") ?? 5); await new Promise((r) => setTimeout(r, espera * 1000)); } throw new Error("Sigue limitado después de 5 intentos"); } ``` ## Cómo quedarte abajo [#cómo-quedarte-abajo] * **Pedí páginas más grandes.** `limit=100` lee cuatro veces más por request que el default de 25 — ver [Paginación](/es/docs/api/pagination). * **Consultá con una frecuencia, no en un loop.** Todavía no hay webhooks, así que consultar es el patrón; el error es consultar tan rápido como corre el código en vez de tan rápido como cambian los datos. * **Manejá el 429 en vez de esquivarlo.** Un reintento que lee `Retry-After` es más robusto que una frecuencia que calibraste una vez y no volviste a mirar. Si tu integración realmente necesita más que esto, escribinos a [support@trama.so](mailto:support@trama.so) y contanos la forma del tráfico. Estos números son un techo de arranque calibrado sobre uso real, no un límite comercial: no hay nada que comprar. # Respuestas del agente (/es/docs/automations/agent-replies) La pestaña más corta de las cuatro, y define algo que el cliente nota al instante. Esta pestaña es del Agente de Consultas, así que recién hace algo desde **Starter** — mirá [Planes](/es/docs/plans/overview). Las otras tres automatizaciones funcionan en todos los planes. Pestaña Respuestas del agente, con las ramas de audio y texto Pestaña Respuestas del agente, con las ramas de audio y texto ## Cuando el cliente manda una nota de voz [#cuando-el-cliente-manda-una-nota-de-voz] * **Contestar con nota de voz** — el agente sintetiza su respuesta y la manda como audio, igual que le hablaron. La voz es la que definiste en Identidad, en [la configuración del agente](/es/docs/agent/configuration). * **Contestar siempre por texto** — aunque le manden un audio, responde escrito. **Cuando el cliente escribe, el agente escribe.** Esa mitad no se configura, y por eso el diagrama sólo se abre del lado del audio. # Reparto de leads (/es/docs/automations/lead-routing) Cuando entra una consulta nueva, alguien la tiene que atender. En **Automatizaciones → Reparto** definís quién, en tres pasos que se evalúan en orden. Pestaña Reparto, con las tres decisiones a la izquierda y el camino resultante a la derecha Pestaña Reparto, con las tres decisiones a la izquierda y el camino resultante a la derecha ```mermaid flowchart TD A([Entra una consulta]) --> B{¿Ya te compró antes?} B -->|No| POOL B -->|Sí| C{Qué elegiste en el paso 1} C -->|Sigue con su vendedor| D[Va a quien ya lo atendía] C -->|Sólo si cubre el tema| E{¿Ese vendedor cubre
especialidad e idioma?} C -->|Se reparte de cero| POOL E -->|Sí| D E -->|No| POOL POOL{{Paso 2 · quiénes pueden recibirla}} POOL -->|Idioma o especialidad primero| P[Grupo de candidatos] POOL -->|Los dos, sin excepción| X{¿Alguien cumple los dos?} X -->|Sí| P X -->|No| Z[Queda sin asignar] P --> Q{Paso 3 · a cuál le toca} Q -->|Al más liviano| R[El de menor carga activa] Q -->|Uno y uno| S[El que hace más que no recibe] D --> F([Vendedor asignado]) R --> F S --> F Z -.la rescatan dentro de la hora.-> F ``` El panel de la derecha no es una ilustración: es el camino que produce tu configuración de hoy. Cambiás una opción y el camino se redibuja. ## 1. Un cliente que ya te compró vuelve a escribir [#1-un-cliente-que-ya-te-compró-vuelve-a-escribir] Es lo primero que se evalúa, y si aplica, el reparto corta ahí. * **Sigue con su vendedor** — la consulta nueva va a quien ya lo atendía. **Ignora la especialidad**: quien le vendió un crucero recibe también su consulta de Disney. * **Sólo si cubre el tema** — se queda con su vendedor únicamente si además cubre la especialidad y el idioma. Si no, se reparte. * **Se reparte de cero** — la relación previa no pesa. Puede terminar hablando con alguien que no conoce su historia. ## 2. Quiénes pueden recibirla [#2-quiénes-pueden-recibirla] Cómo se combinan la especialidad y el idioma para armar el grupo de candidatos. | Opción | Qué hace | | --------------------------- | ------------------------------------------------------------------------------------ | | **Primero el idioma** | Busca al especialista que además hable el idioma; si no hay, manda el idioma | | **Primero la especialidad** | Lo mismo, al revés | | **Sólo el idioma** | Ignora las especialidades. Si nadie habla el idioma, se reparte entre todo el equipo | | **Sólo la especialidad** | Ignora el idioma. Si nadie cubre el tema, se reparte entre todo el equipo | | **Los dos, sin excepción** | Exige especialidad *e* idioma. **Si nadie cumple, la consulta queda sin asignar** | Las especialidades y los idiomas de cada vendedor se cargan en [Equipo](/es/docs/team/managing). ## 3. A cuál de ellos le toca [#3-a-cuál-de-ellos-le-toca] * **Al que está más liviano** — mira carga activa, leads de hoy y lo que dejó enfriar. Las cotizaciones abiertas cuentan como carga. * **Uno y uno, por turnos** — le toca a quien hace más tiempo que no recibe. No mira la carga. Si una consulta queda sin asignar, un proceso la rescata dentro de la hora. No se queda ahí para siempre — pero se queda hasta una hora, y esa es la razón para pensarlo dos veces antes de usar «Los dos, sin excepción». # Ciclo de vida (/es/docs/automations/lifecycle) Un tablero del que nunca se va nada deja de servir. **Automatizaciones → Ciclo de vida** decide cuándo una oportunidad se corre — y a dónde va, que no es lo mismo en todos los casos. Pestaña Ciclo de vida, con la línea de tiempo de una oportunidad a escala Pestaña Ciclo de vida, con la línea de tiempo de una oportunidad a escala La línea de tiempo de la derecha está dibujada **a escala** con los plazos que elegiste, así que se ve de un vistazo si quedaron espaciados como pensabas. ## Los tres plazos [#los-tres-plazos] **Cuántos días sin actividad antes de guardarla dormida** — 30 por defecto. Subilo si tu ciclo de venta es largo. Al vendedor se le avisa cinco días antes, así que con 30 el aviso cae el día 25. **A partir de cuándo figura como «inactiva»** — 7 días por defecto. Inactiva es una etiqueta en una tarjeta que sigue en el tablero; dormida es fuera del tablero. Son dos cosas distintas. **Cuánto quedan a la vista las cerradas** — 30 días por defecto, tanto para las ganadas como para las perdidas. ## Avance automático [#avance-automático] **Mover sola a «En contacto»** viene prendido: cuando el vendedor le escribe al cliente, o tacha el pendiente desde Mi día, la tarjeta se mueve sola. Si lo apagás, alguien tiene que arrastrar cada tarjeta a mano — que en la práctica significa que el tablero se despega de la realidad. ## Dónde terminan [#dónde-terminan] ```mermaid flowchart LR P([Pipeline]) --> U[Sin calificar
el agente sigue hablando] P --> N[Sin respuesta
se apagó sola] P --> A[Archivada
alguien la descartó] U -.cuando aparecen los datos.-> P N -.el cliente escribe · o Reactivar.-> P A -.Pasar al pipeline.-> P A ==>|a los 30 días| DEL[Se borra para siempre] ``` Las oportunidades que se van del tablero quedan en **Oportunidades → Fuera del funnel**, repartidas en tres grupos que se comportan distinto: * **Sin calificar** — el agente sigue conversando pero todavía no hay intención real. Cada fila dice qué falta ("falta fechas al menos aproximadas · tiene cantidad de pasajeros"). Entran al pipeline solas cuando la haya, o las pasás vos. * **Sin respuesta** — se apagaron solas por falta de movimiento. Se guardan enteras y **vuelven al pipeline apenas el cliente escriba**. Hay un botón Reactivar si no querés esperar. * **Archivadas** — alguien del equipo las descartó a propósito, con un motivo escrito. Archivadas es la única excepción a «no se borra nada»: **se borran para siempre a los 30 días.** Hasta entonces las restaurás con **Pasar al pipeline**, y la fila te dice cuánto queda ("se borra en 11 días"). Las dormidas, en cambio, no se borran nunca. # Recordatorios (/es/docs/automations/reminders) Una oportunidad que nadie toca no avisa. **Automatizaciones → Recordatorios** es Trama mirando por vos: cada hora barre el tablero, calcula en qué etapa está cada oportunidad y hace cuánto, y le avisa al vendedor cuando algo se quedó quieto demasiado tiempo. Pestaña Recordatorios, con los plazos por etapa y cuándo sale cada aviso Pestaña Recordatorios, con los plazos por etapa y cuándo sale cada aviso El interruptor de arriba apaga todo de una. Con eso apagado no sale ningún aviso hasta que lo vuelvas a prender. ## Por dónde salen [#por-dónde-salen] * **Trama Agent** — un mensaje normal dentro de la conversación. Sólo funciona si el vendedor le escribió al Trama Agent en las últimas 24 horas: pasado ese plazo, Meta no deja mandar texto libre y el aviso cae al template. * **Template de Meta** — siempre un template aprobado. Llega aunque la conversación esté cerrada, pero no se personaliza. ## Los plazos [#los-plazos] Tres etapas, cada una con su reloj. Los valores de abajo son los que vienen por defecto; todos se cambian. **Por atender · nadie la contestó** — 2 días por defecto. Es el único tramo donde el aviso se repite *todos los días*: es el más crítico y no tiene tope. **En contacto · habló, pero no avanza** — 2 días sin seguimiento del vendedor. **Cotizada · falta el seguimiento** — tres toques después de mandar la cotización, a los 3, 7 y 15 días por defecto. Estos plazos no son comportamiento fijo del producto: son configuración. Si tu ciclo de venta es más largo o más corto que los valores por defecto, cambialos acá en vez de trabajar alrededor de ellos. # Canales (/es/docs/channels/overview) Trama atiende donde está tu cliente. Empezamos por WhatsApp porque es el canal dominante en turismo, y el mismo agente atiende en todos: **misma información, mismo estilo, misma lógica**. Da igual por dónde escriba la persona. ## Dónde puede atender [#dónde-puede-atender] El principal. Entre 10 y 15 minutos de configuración. Un chat en tu sitio. Desde Starter, y no consume canal. Tu página con tu catálogo. En todos los planes, con formulario o con agente. Disponibles. Se conectan desde **Canales**. ## Instagram y Messenger [#instagram-y-messenger] Se conectan desde **Canales**, y de ahí en adelante se comportan como WhatsApp: contesta el mismo agente, aplica la misma calificación, y lo que califica aterriza en el mismo tablero. Lo que cambia es la superficie, no el circuito. Cada uno ocupa un canal incluido de tu plan. Instagram tiene además dos ajustes propios, porque Instagram no es sólo una bandeja de mensajes privados: * **Automatizaciones de comentarios.** Un comentario en una publicación, o una respuesta a una historia, puede disparar un mensaje privado — con una respuesta pública opcional para que el hilo no quede sin contestar. Vos elegís qué palabras lo disparan. * **Preguntas de inicio.** Las sugerencias que Instagram ofrece adentro de un mensaje privado vacío, antes de que la persona haya escrito nada. Las dos se editan desde el panel del canal, en Canales. ## Qué consume tu plan [#qué-consume-tu-plan] Tus canales son cinco: el **Link de ofertas**, el **Chat web**, **WhatsApp**, **Instagram** y **Messenger**. Que el agente atienda en cualquiera de ellos empieza en **Starter** — el plan gratuito no incluye ninguno. Lo que cada plan pago incluye a elección es una cantidad de WhatsApp, Instagram y Messenger, y podés sumar más. El **Chat web** y el **chat del Link** no ocupan uno de esos lugares incluidos, pero tampoco son gratis: lo que el agente califica ahí consume el **mismo cupo mensual** que WhatsApp. Lo único que no se cobra nunca es el **formulario de contacto del Link de ofertas**: no pasa por un agente y está disponible en todos los planes, incluido el gratuito. Los valores están en [Planes](/es/docs/plans/overview). Los mensajes de WhatsApp los cobra **Meta**, aparte de tu suscripción, y te los trasladamos sin recargo. Está explicado en [Costos de WhatsApp](/es/docs/channels/whatsapp-costs). ## Si algo falla al conectar [#si-algo-falla-al-conectar] Los cinco errores más comunes, y cómo salir de cada uno. Qué cobra Meta y por qué no lo fijamos nosotros. # Widget web (/es/docs/channels/web-widget) **Beta.** Estamos afinando esta función con las primeros negocios turísticos. El widget necesita un plan pago: empieza en **Starter**, como todo el Agente de Consultas. No consume un canal incluido, pero las oportunidades que el agente califica ahí consumen el cupo mensual de tu plan — está explicado en [Planes](/es/docs/plans/overview). Sumá el widget de Trama a tu sitio: el mismo agente que atiende por WhatsApp responde las consultas, capta los datos del visitante y crea oportunidades. ## Cómo instalarlo [#cómo-instalarlo] 1. Entrá a **Canales → Web** (sólo Dueño o Administrador). 2. Copiá el código con el botón **Copiar snippet**. 3. Pegalo antes de la etiqueta `` en tu sitio. Funciona en HTML, WordPress, Wix, Shopify, Webflow y sitios hechos en React o Vue. El snippet carga el widget desde nuestra CDN, así que no hace falta volver a pegarlo cuando cambiás la apariencia: los cambios se aplican solos. ## Qué podés personalizar [#qué-podés-personalizar] * **Color primario** (presets o color propio). * **Forma** de la burbuja y los botones: redonda, suave o cuadrada. * **Posición**: a la izquierda o a la derecha. * **Tema**: sistema (sigue el del visitante), claro u oscuro. * **Ícono** de la burbuja: el logo de Trama, el logo de tu organización o una imagen propia (PNG, JPG, WebP o SVG, hasta 1 MB). El **nombre del agente** que aparece en el chat sale de tu Agente de Consultas (lo configurás en **Agentes**). Los cambios de apariencia se **guardan solos**. ## Vista previa vs. widget real [#vista-previa-vs-widget-real] La **vista previa** de la pantalla de configuración es solo para probar el aspecto: ahí no se registran leads ni conversaciones ni se capturan datos. En tu sitio real, el widget captura IP, navegador y página de origen, registra la conversación y crea la oportunidad con origen "Widget web". ## Si tu sitio tiene CSP [#si-tu-sitio-tiene-csp] Si tu sitio usa Content Security Policy, permití el dominio de Trama del snippet en `script-src`, `connect-src` e `img-src` (más `style-src 'unsafe-inline'`; el widget aísla sus estilos en un Shadow DOM, así que no afecta tu página). # Costos de WhatsApp (Meta) (/es/docs/channels/whatsapp-costs) Meta cobra por los mensajes que tu agente envía por WhatsApp. Es un costo **de Meta**, aparte de tu suscripción de Trama, y lo pagás **directo a Meta**. ## Lo que hacemos nosotros [#lo-que-hacemos-nosotros] **No te sumamos nada por encima.** Pagás exactamente lo que cobra Meta, ni un centavo más. Son dos costos separados y claros: tu suscripción a Trama, y los mensajes a Meta. La [calculadora de precios](https://trama.so/pricing) estima tu costo total con las tarifas vigentes, para que veas el número completo antes de arrancar. ## Lo que define Meta [#lo-que-define-meta] Las tarifas, las categorías de mensaje y las condiciones **las fija Meta, y las cambia cuando quiere**. Por eso no las escribimos acá: cualquier número que pongamos hoy puede estar viejo mañana, y vos tomarías una decisión con un dato equivocado. La fuente autoritativa, la única que hay que mirar, es la de Meta: **[WhatsApp Business Platform Pricing](https://business.whatsapp.com/products/platform-pricing)** # Conectar WhatsApp (/es/docs/channels/whatsapp-setup) El proceso se hace desde Trama, pero la ventana que se abre es de Meta: vas a iniciar sesión con Facebook, elegir o crear tu cuenta de negocio y verificar el número por SMS o llamada. Son entre 10 y 15 minutos, y hay que hacerlo de una sentada — el código de verificación vence. ## Qué necesitás a mano [#qué-necesitás-a-mano] * Un número de teléfono **nuevo** (lo recomendado) o uno que quieras dedicarle al agente * Una cuenta personal de Facebook, sólo para verificar tu identidad * Poder recibir un SMS o una llamada en ese número **en el momento** * Los datos básicos de tu negocio: nombre comercial, sitio web o Instagram, y categoría **Si el número que querés usar ya está activo en WhatsApp, Meta te va a pedir migrarlo** — y durante la migración deja de funcionar en el celular. Si es el WhatsApp que usás todos los días, conseguí uno nuevo. Es la única decisión de este proceso que no se puede deshacer fácil. **Si lo que querés es que Trama mire el WhatsApp de un vendedor, esta página no es la tuya.** Eso es [Coexistencia](/es/docs/team/coexistence): la persona sigue usando su número de siempre, no hay migración y el agente no contesta ahí. Esta página es para el número donde vive tu agente. **No necesitás un segundo celular permanente.** El chip sólo se usa para recibir el código; después el número vive en la nube de Meta y podés sacarlo.