Reseñas y reputación

El módulo de reputación cierra el ciclo después de cada servicio. Cuando una cita queda como completada, ConvertCore AI le pide al cliente una reseña — por email o por WhatsApp — y separa automáticamente las respuestas positivas (que van a tu Google Business Profile o Facebook) de las negativas (que se quedan en privado para que tu equipo haga seguimiento).

Lo positivo se ve en un widget que pegas en tu sitio. Lo negativo nunca sale a la luz pública.

Cuándo conviene activarlo

Cualquier negocio que reciba clientes que regresan: spas, salones, restaurantes, dentistas, talleres, abogados. Si tu reputación online te trae clientes (Google Business Profile, Facebook), el módulo te ayuda a multiplicar las reseñas positivas sin pedirlas a mano, y a tapar las negativas antes de que aparezcan en público.

Paso 1. Configura los enlaces públicos

Ve a Ajustes → Reseñas y reputación. En la sección Enlaces públicos de reseñas, pega al menos uno:

  • Google Business Profile: ve a tu ficha en Google, click en Pedir reseñas y copia la URL corta (la que empieza con https://g.page/r/...).
  • Facebook: la URL pública de la pestaña Reseñas de tu página.

Si llenas ambos, ConvertCore AI prioriza Google.

Paso 2. Define el gating de estrellas

En la misma página, sección Gating de estrellas, elige el umbral mínimo para que una calificación vaya al enlace público. El default y recomendado es 4 estrellas: 4-5★ van a Google/Facebook, 1-3★ caen al formulario privado.

Aviso legal: Google's terms of service desde 2018 prohíben explícitamente el "review gating" (filtrar quién deja reseñas según rating). ConvertCore AI te deja elegir el umbral, pero la responsabilidad del cumplimiento es tuya. Si no quieres correr el riesgo, configura el umbral en 2 estrellas (cualquier rating >= 2 va público) o ajusta el copy de la landing para que sea neutral.

Paso 3. Personaliza el email de solicitud

En la sección Email de solicitud, ajusta el asunto y el cuerpo. Soporta variables que se reemplazan al momento del envío:

  • {{contact.first_name}} — nombre del cliente.
  • {{contact.last_name}} — apellido.
  • {{contact.full_name}} — nombre completo.
  • {{workspace.name}} — nombre de tu negocio.
  • {{review_link}} — enlace único de calificación (debe ir en el cuerpo).

Justo debajo del editor ves una Vista previa que renderiza el HTML con un cliente sample. Si el texto se ve bien con "María González", se va a ver bien con cualquier cliente real.

El cuerpo se manda en HTML; los saltos de línea simples se convierten en <br/> y los párrafos en <p>.

Paso 4. (Opcional) Configura WhatsApp con plantilla Meta

Si quieres mandar reseñas por WhatsApp en lugar de email, necesitas una plantilla aprobada por Meta. Es un requisito de la Cloud API: no se puede mandar texto libre fuera de la ventana de 24 horas del cliente, solo plantillas pre-registradas.

Registrar la plantilla en Meta Business Manager

  1. Entra a Meta Business Suite → WhatsApp Manager → Message templates.
  2. Click Create template. Elige categoría Utility (no Marketing).
  3. Nombre del template: review_request_v1 (el nombre exacto que después configurarás en ConvertCore).
  4. Idioma: Spanish (es).
  5. Body del template, ejemplo:
    Hola {{1}}, gracias por tu visita a {{2}}. ¿Te tomas un minuto para contarnos cómo fue tu experiencia? {{3}}
    
    • {{1}} será el nombre del cliente.
    • {{2}} será el nombre del workspace.
    • {{3}} será el review_link.
  6. Sin botones, sin header. Submit para revisión.
  7. Meta revisa en 1-24 horas. Verás el estado en WhatsApp Manager → Message templates.

Sincronizar la plantilla con ConvertCore

Una vez aprobada (estado Approved en Meta):

  1. En ConvertCore, anda a Ajustes → Plantillas de WhatsApp.
  2. Click Sincronizar con Meta. ConvertCore baja la lista de templates aprobados de tu cuenta de Meta.
  3. Vuelve a Ajustes → Reseñas y reputación. En la sección WhatsApp, elige review_request_v1 del selector.
  4. Asegúrate que el campo variables_list del template tenga los paths correctos: contact.first_name, workspace.name, review_link. Si no, edita la plantilla desde Ajustes → Plantillas de WhatsApp.

Requisito previo: el workspace tiene que tener whatsapp_provider = 'meta_cloud' activo, no Twilio ni wa.me fallback. Ve a Comunicaciones para configurarlo.

Paso 5. Arma el workflow que dispara la solicitud

El módulo se integra con el motor de workflows. La forma normal de mandar reseñas es automática, no manual:

  1. Ve a Flujos y crea uno nuevo.
  2. Trigger: Cita completada (appointment_completed).
  3. Filtro opcional: por service_calendar_id si solo quieres pedir reseñas de ciertos servicios.
  4. Paso 1: Esperar (minutos). Recomendado: 120 (2 horas después de terminar la cita).
  5. Paso 2: Pedir reseña al cliente. Canal: whatsapp o email.
  6. Guarda y activa el workflow.

A partir de ese momento, cada vez que alguien marca una cita como completada en el calendar, el workflow corre y manda la solicitud automáticamente.

Tip: si no quieres bombardear al cliente justo cuando sale del local, una espera de 2-4 horas funciona bien. Si la cita fue por la tarde, el mensaje llega antes de dormir — buen momento para responder.

Cómo se ve para el cliente

El cliente recibe el email o WhatsApp con un enlace tipo https://app.tunegocio.com/r/abc123xyz. Al abrirlo:

  1. Ve una landing con tu logo, color y la pregunta "¿Cómo fue tu experiencia?" con 5 estrellas.
  2. Toca una estrella.
  3. Si elige 4-5★: ConvertCore lo redirige a tu enlace público (Google o Facebook). El cliente deja la reseña pública ahí.
  4. Si elige 1-3★: aparece un formulario privado con un textarea. El cliente cuenta qué no le gustó. Ese mensaje NUNCA se publica — se queda en tu dashboard interno como feedback privado con estado Nuevo.

El enlace tiene vigencia de 30 días por default (configurable en settings) y solo se puede usar una vez.

Moderar las reseñas públicas

Las reseñas 4-5★ caen en estado Pendiente. No aparecen en el widget hasta que las apruebes manualmente.

  1. Ve a Reputación → Reseñas públicas.
  2. Para cada row tienes 3 acciones:
    • Publicar: la marca como Publicada con consent. Aparece en el widget al instante.
    • Ocultar: la marca como Oculta. Sigue en la base, pero no aparece en el widget.
    • Eliminar: borra la row para siempre.

Una vez publicada, puedes volver a ocultarla en cualquier momento desde la misma tabla.

Atender el feedback privado

Las calificaciones 1-3★ caen en Reputación → Feedback privado. Cada row tiene:

  • Estado: NuevoEn cursoResuelto. Cambia el dropdown al avanzar.
  • Asignado a: elige al miembro del equipo que va a contactar al cliente.

Cuando alguien se llena de 1-3★ y deja un mensaje, lo mejor es llamarlo en menos de 24 horas. Una respuesta humana rápida convierte clientes molestos en clientes fieles. El equipo de estudio de Bain & Co calculó que recuperar un cliente molesto vale 5x más que conseguir uno nuevo.

Embebe el widget público en tu sitio

Una vez tengas algunas reseñas publicadas, las puedes mostrar en cualquier sitio externo (WordPress, Webflow, sitio custom, HTML estático). Solo necesitas pegar un script.

  1. Ve a Ajustes → Reseñas y reputación, baja hasta la sección Widget público para tu sitio.
  2. Elige Diseño (grid o carousel) y cantidad de reseñas a mostrar (1-24).
  3. Click Copiar snippet.
  4. Pega el snippet en tu sitio, justo antes de cerrar </body>.
  5. Reemplaza TU_API_KEY por una clave creada en Ajustes → Claves API. Si ya usas una para el widget de reservas, esa misma sirve.

El widget se adapta automáticamente al tema (claro u oscuro) según prefers-color-scheme del visitante. No carga ningún CSS externo — todo viene en el script.

Layouts disponibles

  • Grid: 3 columnas en desktop, se reduce a 1 columna en móvil. Bueno para una sección dedicada en tu home.
  • Carousel: scroll horizontal con snap. Bueno para mostrar más reseñas sin ocupar mucho vertical.

Configura el branding del widget

En la sección Widget público de testimonios del settings:

  • Título: lo que aparece arriba de las cards. Default: "Lo que dicen nuestros clientes".
  • Subtítulo: opcional, debajo del título.
  • Color de acento: hexadecimal #RRGGBB. Se usa en las estrellas y en el avatar placeholder.

Cualquier cambio aquí se refleja en el widget al siguiente fetch (el cache es de 60 segundos).

Verificación end-to-end

Para confirmar que todo está bien armado:

  1. Crea un contacto de prueba con tu propio email/teléfono.
  2. Agenda una cita ficticia con ese contacto en el calendar.
  3. Marca la cita como completada.
  4. Espera (o ajusta el workflow para que el wait_minutes sea 0 durante la prueba).
  5. Revisa tu inbox/WhatsApp — debería llegar la solicitud.
  6. Abre el enlace, deja 5★, completa el flujo a Google.
  7. Vuelve a Reputación → Reseñas públicas, aprueba la review.
  8. Abre tu sitio donde pegaste el widget, recarga — la reseña aparece.

Multi-sucursal (V2.7)

Si tu negocio tiene varias ubicaciones físicas (un spa con 3 sucursales, una cadena de restaurantes con 5, etc.), ConvertCore te deja configurarlas todas dentro del mismo workspace. Cada sucursal tiene su propio Google Place ID, sus propios enlaces y se sincroniza por separado, pero comparten dueño, equipo, plan de billing y configuración general (tono de IA, gating de estrellas, plantillas).

Sucursal por defecto

Cuando entras a Ajustes → Reputación por primera vez después de actualizar a V2.7, ves una sección "Sucursales" arriba. Si ya tenías un Google Place ID configurado antes, ConvertCore creó automáticamente una sucursal llamada "Principal" con esos datos. Tus reseñas viejas también quedaron asociadas a esa sucursal.

Agregar más sucursales

Click "Agregar sucursal" → llenas:

  • Nombre (ej. "Sucursal Centro", "Sucursal Norte")
  • Google Place ID (cada sucursal tiene su propio Place ID en Google)
  • URL pública para dejar reseña en Google (opcional, el g.page/r/...)
  • URL del dashboard de Google Business (opcional)
  • URL pública de Facebook (opcional)

Click "Crear" → la sucursal queda en la lista. Puedes sincronizar inmediatamente con el botón "Sincronizar" o esperar al cron horario.

Marcar como principal

La sucursal principal se usa como destino default cuando no hay una específica seleccionada (por ejemplo, integraciones nuevas que aún no entienden multi-sucursal). Puedes cambiarla con el ícono de estrella.

Filtrar el panel por sucursal

Cuando tienes 2 o más sucursales, en /app/reviews/sentiment aparece un selector adicional "Sucursal" que te deja ver solo los datos de una location específica. Por defecto muestra "Todas las sucursales".

Cómo se ve esto vs single-location

Si tu negocio tiene una sola ubicación, no notas ningún cambio — la sucursal "Principal" aparece sola en la lista y todo funciona exactamente como antes. Multi-sucursal solo "se activa" cuando agregas la segunda.

Overrides por sucursal (V2.7.B)

Cada sucursal puede sobrescribir 4 ajustes que por defecto se heredan del workspace. Útil cuando, por ejemplo, la "Sucursal Centro" debe mandar sus alertas a recepcion+centro@negocio.com con tono formal, mientras la "Sucursal Norte" las manda a otro buzón con tono empático.

Para configurarlos, abre el dialog de edición de una sucursal (botón "Editar") y despliega la sección "Overrides por sucursal (avanzado)". Los campos disponibles:

  • Correo para alertas (override): dónde van los correos de reseñas negativas de esta sucursal. Si vacío → al correo general del workspace.
  • WhatsApp para alertas (override): lo mismo pero para el canal WhatsApp.
  • Umbral de alerta (override): a partir de qué calificación se dispara la alerta para reseñas de esta sucursal.
  • Tono de IA (override): tono que usa Claude al redactar respuestas para reseñas de esta sucursal. Empático / Optimista / Formal / Divertido.

Los overrides que dejas vacíos heredan del workspace — no necesitas configurar los 4 para que la sucursal funcione.

Cuando Claude redacta una respuesta para una reseña de sucursal con nombre distinto a "Principal", incluye el nombre en el contexto del prompt, así puede responder de forma más natural ("...en Sucursal Norte siempre nos esforzamos...").

Widget público filtrable por sucursal (V2.7.B)

El widget embebido (<script src=".../embed.js" data-reviews-widget="API_KEY">...</script>) acepta un parámetro adicional data-location con el slug de la sucursal:

<script src="https://app.convertcoreai.com/embed.js"
        data-reviews-widget="TU_API_KEY"
        data-location="centro"></script>

Solo se muestran las reseñas publicadas asociadas a la sucursal de ese slug. Si no pasas data-location (o el slug no existe), el widget muestra reseñas de todas las sucursales — comportamiento idéntico al pre-V2.7.

El endpoint subyacente es /api/widget/reviews?key=...&location=<slug>.

Útil para landings de cada sucursal: cada página tiene su widget filtrado a su propia ubicación.

Limitaciones de V2.7

  • El gating de estrellas (umbral para enviar a Google vs feedback privado) sigue siendo workspace-only porque los review_requests no llevan location_id hoy. Si necesitas gating distinto por sucursal, pídelo y entra en V2.8.
  • La URL pública para dejar reseña que se le da al cliente cuando da 5★ todavía sale del workspace settings legacy (google_review_url). Las sucursales tienen su propia URL configurable pero los review_requests no la usan todavía.

Sincronización de reseñas de Google (V2)

ConvertCore puede traer automáticamente las reseñas más recientes de tu ficha de Google y mostrarlas en el panel de reseñas, para que las atiendas sin tener que abrir el dashboard de Google Business Profile cada rato.

Cómo funciona

Cada hora, un cron interno (/api/cron/sync-google-reviews) consulta la Places API (New) de Google con tu Google Place ID y trae las 5 reseñas más recientes de tu negocio. Si alguna es nueva (no la habías sincronizado antes), entra al panel con source = google_places y status pending para que decidas si la quieres también publicar en el widget público de tu sitio.

Configurar

  1. Ve a Ajustes → Reputación → Reseñas de Google (sincronización).
  2. Pega tu Google Place ID (lo encuentras en https://developers.google.com/maps/documentation/places/web-service/place-id buscando el nombre de tu negocio).
  3. (Opcional) Pega la URL exacta del dashboard de tu Google Business Profile en "URL del dashboard…" — sirve para que el botón "Responder en Google" abra la pestaña correcta.
  4. Click "Sincronizar ahora" para hacer la primera carga sin esperar al cron.

A partir de ahí, cada hora se hace sync automático.

Por qué solo 5 reseñas

La Places API expone solo las 5 más recientes. La API completa de Google Business Profile (que da TODAS las reseñas + permite responder por API) requiere un proceso de aprobación de Google que tarda semanas y tiene restricciones para apps multi-tenant. Por ahora, ConvertCore usa Places API + un flow de "copiar respuesta + abrir Google" para que respondas en el dashboard nativo. Cuando/si Google nos apruebe la API completa, esto pasa a 100% automatizado sin cambio para ti.

Costo

Google Maps Platform da $200 USD/mes de crédito gratis. Una sync de un workspace = 1 call ≈ $0.017. Con 1 sync/hora durante 30 días = ~$12/mes por workspace. Te queda más del 90% del crédito sin tocar. Si en algún momento tienes muchos workspaces y excedes el crédito, Google avisa con tiempo y no te cobra de sorpresa (tienes que activar manualmente "Pay as you go").

Limitaciones

  • Solo 5 reseñas más recientes: si tu negocio tiene 100 reseñas en Google, solo ves las 5 últimas. Para todas, hay que abrir el dashboard nativo.
  • No se puede responder via API por ahora: respondes manual con el flow copy + open Google (ver siguiente sección de roadmap).
  • El sync es por place_id, no por cuenta: cada workspace conecta UNA ficha de Google. Para multi-location hay que esperar la versión V3.

Responder reseñas (V2.D')

Cada fila del panel de reseñas tiene un botón "Responder". Abre un editor con:

  • La reseña original arriba (autor, calificación, texto).
  • Un textarea grande donde escribes tu respuesta.
  • Un select de tono (empático / optimista / formal / divertido) para usar en el draft con IA.
  • Botones: "Generar con IA", "Guardar borrador", "Copiar y abrir Google", "Marcar como respondida".

Flow para reseñas de Google

  1. Click "Responder" en una reseña con badge Google.
  2. (Opcional) Click "Generar con IA" — Claude redacta un borrador en el tono elegido. Toma 1-3 segundos.
  3. Edita el texto si quieres cambiar algo.
  4. Click "Copiar y abrir Google" — la respuesta se copia al portapapeles + se abre una pestaña con tu dashboard de Google Business Profile.
  5. En Google, pegas (Ctrl+V / Cmd+V) en el campo de respuesta de esa reseña y le das publish.
  6. Vuelves a ConvertCore y le das "Marcar como respondida" para que la fila quede con badge verde "Respondida".

El badge "Respuesta" en la tabla refleja el estado:

  • Sin responder (gris) — no hay borrador ni respuesta marcada
  • Borrador (gris oscuro) — escribiste algo pero no marcaste como respondida
  • Respondida (verde) — diste click en "Marcar como respondida"

Flow para reseñas de ConvertCore landing

Las reseñas que llegan por tu landing de ConvertCore (badge Landing) no necesitan publicarse en ninguna parte externa (ya son parte de tu sistema). El botón "Responder" sigue funcionando para que guardes la respuesta que diste por otro canal (WhatsApp, llamada, email directo) y mantengas un registro interno.

Respuestas redactadas con IA (V2.E)

El botón "Generar con IA" en el editor llama a Claude (sonnet-4-6 por defecto) con:

  • El texto exacto de la reseña.
  • El tono que tienes seleccionado en el select de arriba (puedes cambiarlo reseña por reseña antes de generar).
  • Reglas: respuesta corta (2-5 frases), en el mismo idioma de la reseña, sin firmar, sin prometer descuentos, en tuteo neutro si está en español.

Configurar el tono por defecto

En Ajustes → Reputación → Respuestas con IA eliges el tono que se usa cuando abres el editor por primera vez. Cuatro opciones:

  • Empático: cálido, valida lo que dijo el cliente, ofrece seguimiento si fue negativa.
  • Optimista: agradecido, mira hacia adelante, invita a volver.
  • Formal: corporativo, sobrio, sin coloquialismos.
  • Divertido: con personalidad, ligero, puede tener un emoji ocasional.

Puedes cambiar el tono en cada reseña individual sin tener que ir a Ajustes — el cambio aplica solo a ese draft.

Costo

Claude Sonnet 4.6 cuesta ~$3 USD por millón de tokens de input + ~$15 por millón de output. Una respuesta de reseña usa ~500 tokens de input + ~150 de output = fracción de centavo por draft. Si generas 1000 respuestas en un mes, gastas ~$5 USD.

Limitaciones

  • No envía sola la respuesta — siempre pasa por tus ojos. Esto es deliberado: una respuesta automática mal redactada hace más daño que ninguna respuesta.
  • No tiene memoria de reseñas anteriores — cada draft es independiente. Si quieres consistencia entre respuestas, edita después de generar.
  • No conoce el contexto del negocio más allá del nombre del workspace — si quieres respuestas más específicas (mencionar servicios, ubicación, etc.), edita el draft.

Alertas de reseñas negativas (V2.2)

Cuando entra una reseña baja o con sentimiento negativo, ConvertCore te manda un correo al instante para que la respondas antes de que quede colgada en Google por horas.

Cómo funciona

  1. Cada vez que el cron horario trae una reseña nueva de Google (vía Places API), o cuando un cliente deja una reseña por tu landing de ConvertCore, el sistema:
    • Llama a Claude Haiku 4.5 para clasificar la reseña como positiva / neutra / negativa y detectar 1-3 temas de una taxonomía fija (atención al cliente, calidad del servicio, precio, espera o puntualidad, ambiente o limpieza, comunicación o reservas, resultados, personal específico, ubicación, otro).
    • Si la reseña es negativa o tiene una calificación menor o igual al umbral configurado, te dispara un correo con el texto, el sentimiento, la calificación, y un enlace al panel para responder.
  2. Si el sentimiento no es negativo y la calificación está arriba del umbral, no manda nada — solo se clasifica y se guarda silenciosamente.
  3. Cada reseña solo dispara UNA alerta — un flag interno evita que recibas el mismo correo dos veces si el cron reintenta o se vuelve a sincronizar.

Configurar

En Ajustes → Reputación → Alertas de reseñas negativas:

  • Interruptor de encendido/apagado: prende o apaga el envío automático.
  • Correo para alertas (opcional): si lo dejas vacío, el correo va al dueño del workspace. Pon otro correo si quieres que llegue a recepción, gerente, o un buzón compartido.
  • Umbral de calificación: por defecto 3★ (avisamos en 1-3★). Puedes bajarlo a "Solo 1★" si quieres ser más selectivo, o subirlo a "1-4★" para ser muy estricto.
  • Botón "Mandar prueba": te manda un correo de muestra al destinatario configurado para confirmar que llega a tu bandeja (no a spam) antes de depender de él.

Costo

Claude Haiku 4.5 cuesta $1 USD por millón de tokens de entrada + $5 por millón de salida. Una clasificación usa ~200 de entrada + ~30 de salida = menos de $0.001 USD por reseña. Aunque clasifiques 10,000 reseñas en un mes, gastas ~$5 USD.

El correo se manda vía Resend (ya configurado para todos los workspaces, sin costo extra).

Limitaciones

  • El sentimiento se calcula al entrar la reseña, no en tiempo real cuando entras al panel. Si cambias el umbral después, las reseñas viejas no se vuelven a alertar.
  • Una sola alerta por reseña, sin recordatorios. Si no respondes, no te volvemos a molestar.
  • Las alertas por WhatsApp existen como canal adicional al correo (V2.5). Requieren la plantilla review_alert_es aprobada por Meta y que el dueño configure el teléfono destino en Ajustes → Reputación. Mientras la plantilla esté en revisión por Meta los envíos fallan silenciosamente y solo llega el correo.
  • El sentimiento puede equivocarse en reseñas ambiguas (ironía, sarcasmo, mensajes mixtos). Por eso el umbral de calificación funciona como segunda red — si Claude marca una reseña como neutra pero te dieron 2★, el correo igual te llega.

Alertas por WhatsApp (V2.5)

Además del correo, puedes recibir las alertas de reseñas negativas por WhatsApp. Útil cuando el dueño no abre el correo a menudo pero sí tiene WhatsApp en el teléfono.

Cómo funciona

  1. La alerta sale por ambos canales en paralelo cuando los dos están encendidos. Si uno falla (correo a spam, WhatsApp con plantilla en revisión por Meta) el otro igual llega. Si los dos fallan, la alerta se reintenta en el siguiente ciclo.
  2. La plantilla WhatsApp que usamos se llama review_alert_es y vive en el Meta Business Account de ConvertCore (no por workspace). Es una sola plantilla para todos los workspaces.
  3. El mensaje incluye: nombre del negocio, calificación, autor de la reseña, fragmento del texto (~200 caracteres) y enlace al panel para responder.

Configurar

En Ajustes → Reputación → Alertas de reseñas negativas, bajo la sección de correo:

  • Interruptor "También mandar la alerta por WhatsApp": prende el canal.
  • Teléfono destino: formato internacional con + (ejemplo: +593987978522).
  • Botón "Mandar prueba": envía una reseña ficticia para verificar que el número y la plantilla funcionan.

Limitación crítica — aprobación de Meta

La primera vez que se registra la plantilla en Meta tarda 24-72 horas en aprobarse (las UTILITY suelen pasar rápido). Mientras está pendiente, los intentos de envío devuelven error 132001 y la UI muestra el mensaje "La plantilla todavía no está aprobada por Meta. Espera 24-72h después de registrarla."

Si pasan 72h y sigue pendiente, contactar al equipo (se ve en WhatsApp Manager → Plantillas).

Costo

El envío vía Meta WhatsApp Cloud cuesta entre $0.005 y $0.05 USD por mensaje según el país del destinatario (Ecuador es de los baratos, ~$0.02). Aún si tu negocio recibe 100 reseñas negativas al mes, gastas menos de $2 USD.

Panel de sentimiento (V2.4)

La pestaña Sentimiento dentro de /app/reviews te muestra en una sola vista cómo va la salud reputacional del negocio. Carga datos de los últimos 12 meses de reseñas clasificadas.

Qué ves

4 tarjetas de indicadores arriba:

  • Reseñas clasificadas (total + cuántas siguen pendientes de clasificar, si las hay)
  • Positivas (cantidad + % del total)
  • Neutras
  • Negativas

Calificación promedio + desglose porcentual sobre las clasificadas del período.

Gráfico de evolución mensual (barras apiladas): cada mes muestra cuántas reseñas de cada sentimiento recibiste. Es lo que enseñas en una reunión para responder "¿cómo vamos este trimestre?".

Temas más mencionados (top 10): por cada tema de la taxonomía (atención al cliente, calidad, precio, etc.), ves cuántas reseñas lo mencionan + cuántas de esas fueron negativas. La barra es bicolor: verde = en positivas + rojo = en negativas. Si "espera o puntualidad" aparece con mucho rojo, sabes dónde apretar.

Negativas sin responder (panel derecho): hasta 10 últimas reseñas que califican como alerta (calificación ≤ 3 o sentimiento negativo) y todavía no marcaste como respondidas. Enlace directo al panel /app/reviews/public para responder.

Cuándo te sirve

  • Reuniones semanales o mensuales: ves de un vistazo si bajó el sentimiento o subió.
  • Detectar problemas operativos: si "calidad del servicio" salta de 5% a 30% de menciones negativas mes a mes, hay algo pasando con un servicio o con alguien del equipo.
  • Cerrar el ciclo con reseñas negativas: el panel derecho es tu lista de pendientes prioritarios.

Filtros (V2.6)

Arriba del panel hay dos selectores:

  • Rango: 30 días / 90 días / 12 meses / Todo el tiempo. Cambia cuántos meses se cargan en el chart y qué reseñas se cuentan en los indicadores.
  • Origen: Todos / Google / Landing / Importadas a mano. Filtra todos los datos del panel a una sola fuente — útil para responder "¿cómo va específicamente lo de Google este trimestre?".

Los filtros se guardan en la URL (?days=90&source=google_places), así que puedes compartir un link al equipo con la vista exacta.

Limitaciones

  • Solo reseñas ya clasificadas con sentimiento. Si tienes reseñas viejas sin clasificar, anda a Ajustes → Reputación → botón "Clasificar" antes para que entren al panel.

Video testimonios nativos (V2.8)

Cuando un cliente da 5★ en la página de reseña, ConvertCore le ofrece grabar un video corto de hasta 30 segundos contando su experiencia. El cliente puede saltar el paso si no quiere. Si graba, sube el video y después sigue al sitio público de Google para dejar también la reseña escrita.

Flujo cliente

  1. Cliente abre /r/[token] desde el correo o WhatsApp y deja 5★.
  2. Aparece una pantalla "¿Nos grabas un video corto?" con dos botones: Empezar a grabar o Saltar el video.
  3. Si acepta:
    • El navegador pide permiso a la cámara y el micrófono.
    • Empieza a grabar. Indicador en pantalla con cronómetro.
    • El cliente le da a "Detener" o se autocorta a los 30 segundos.
    • Ve un preview con controles de play. Puede grabar de nuevo o usar el actual.
    • Click "Usar este" → se sube y luego va al sitio de Google.
  4. Si salta o falla la cámara → va directo a Google como antes.

Flujo dueño

En /app/reviews/public, las reseñas con video tienen un botón "Video" con duración en la columna de acciones. Click → modal con player. La URL del video se firma por 10 minutos (bucket privado), así que solo los miembros autenticados del workspace pueden reproducirla.

Las reseñas con video que apruebes y marques como consent_to_publish aparecen en el widget público con su video reproducible inline.

Widget público

El endpoint /api/widget/reviews ahora devuelve video_url (signed URL de 1 hora) y video_duration_seconds por cada reseña que tenga video. El JS del widget puede usarlos para renderizar <video> inline en cada card.

Almacenamiento y costos

  • Bucket Supabase review-videos (privado).
  • Tope por video: 10 MB (~30 s a calidad media en WebM con VP9 es 3-6 MB).
  • Formatos aceptados: WebM (preferido en Chrome/Firefox) y MP4 (Safari).
  • Storage Supabase: 1 GB gratis, después ~$0.021/GB/mes. 100 videos a 5 MB cada uno = 500 MB → bien dentro del free tier.
  • Egress: 5 GB/mes gratis. Cada vista del widget consume el peso del video (~5 MB) — con 1000 reproducciones/mes son ~5 GB. Por encima de eso, ~$0.09/GB.

Limitaciones

  • Solo se ofrece video cuando el cliente da 5★. Para 4★ no aparece (queremos maximizar conversión a Google, no agregar fricción a un cliente medio-contento). Para ≤3★ tampoco — esos van al feedback privado, no a video público.
  • MediaRecorder API no funciona en navegadores muy viejos (IE11, Safari < 14). El cliente igual puede saltar y dejar la reseña sin video.
  • No re-encodificamos server-side — el blob sube tal cual lo capturó el navegador. La calidad depende de la cámara + códec disponible. Suficiente para casos reales de spas / restaurantes / consultorios donde la calidad cinematográfica no importa.
  • Sin moderación automática. Aprobación manual desde el dashboard antes de publicar.

Roadmap V3

Lo que viene en futuras iteraciones:

  • Thumbnail server-side (primer frame del video) para mejor preview en el widget.
  • Multi-sucursal: para clientes con varias ubicaciones, cada una con su Google Place ID + filtro propio.
  • Importar reseñas de Facebook a mano: las API públicas de Facebook ya no permiten leer recomendaciones; se reemplazará con un botón para pegar reseñas manualmente.
  • API completa de Google Business Profile (si Google nos aprueba): publicar respuestas directo + traer todas las reseñas (no solo las 5 más nuevas).
  • Filtros del panel por staff específico (V2.6 ya cubre origen + rango temporal).

Cuando alguno entre en producción, este artículo se actualiza con los detalles.

Limitaciones conocidas

  • El email se manda desde el dominio configurado en RESEND_FROM. Si quieres usar tu propio dominio (en lugar de no-reply@convertcoreai.com), pide acceso al equipo de soporte.
  • WhatsApp requiere template Meta aprobada. No hay fallback a wa.me para reviews — es Meta Cloud API o nada.
  • Una solicitud por contacto por cita. No tenemos lógica anti-spam global todavía: si configuras dos workflows con el mismo trigger, el cliente recibe dos mensajes.

Si algo no te encaja, escribe a soporte y te ayudamos a armar el setup para tu negocio.