OpusDone
Iniciar sesiónSolicitar acceso
Entrega de leads

Tus leads aterrizan donde ya trabajas

Cada lead llega a una hoja de Google Sheets o a un webhook firmado.

OpusDone envía cada lead captado a uno de dos destinos: una hoja de Google Sheets que crea en tu propio Drive, o un webhook firmado a cualquier endpoint https que controles. La fila de entrega se confirma en la misma transacción que el lead, así que un lead nunca puede existir sin su entrega. Las entregas fallidas se reintentan seis veces, y la entrega es gratis en todos los planes.

  • Una hoja de Google Sheets en tu Drive, o un webhook firmado
  • Entregado en menos de un minuto, con seis reintentos
  • Gratis en todos los planes, prueba incluida

Revisado el

Un informe de actividad de OpusDone
Por qué se construyó esto

Un lead captado en una pestaña que nadie tiene abierta sigue siendo un lead perdido

El espacio de leads ya te deja filtrar, buscar, ordenar y exportar. Eso ayuda a quien lo abre. La entrega es para todos los que no lo abren.

01

El registro está donde no está el trabajo

Sale un aviso cuando un lead puntúa 50 o más, y el registro completo espera en el espacio de leads. Tu recepción trabaja desde el móvil, tu lista de ventas vive en otro sitio, y las dos nunca se encuentran.

02

La mayoría de las pymes no tienen ningún CRM al que sincronizar

Alrededor de tres de cada cuatro pymes españolas funcionan sin uno. Una hoja de cálculo que una recepcionista ya sabe ordenar y filtrar desde el móvil no necesita software nuevo ni formación.

03

En otros sitios, un webhook es un extra de pago

El plan gratuito de Zapier no incluye webhooks: Webhooks es una app Premium y necesita un plan de pago. Make y n8n aceptan los dos un webhook normal en sus planes gratuitos.

Adónde van tus leads

¿Adónde envía OpusDone un lead captado?

Cada destino es una tarjeta en la sección «Adónde van tus leads» de Conexiones. Activa uno, o los dos. Cada lead se entrega una vez por destino.

Google Sheets

Creamos «<Business> — Leads» en tu propio Drive, con una pestaña Leads. Diez columnas — Fecha, Nombre, Email, Teléfono, Canal, Puntuación, Estado, Reserva, Resumen y Enlace al lead — que se añaden por posición, así que puedes renombrar cualquier cabecera y no se rompe nada.

Webhook firmado

Un POST por lead a cualquier endpoint https, firmado con HMAC-SHA256 sobre el timestamp y el cuerpo en bruto. Cuatro cabeceras, un id estable para deduplicar y seis reintentos en una curva que se va abriendo.

Make, n8n o Zapier

No hay app nativa para ninguno de ellos. Cada uno consume el mismo webhook normal, que es como un lead llega a tu CRM: a través de Make, n8n o Zapier, y no de un conector que mantengamos nosotros.

Cómo viaja un lead

De la conversación a tu hoja, en siete pasos

Aquí no se configura nada lead a lead. Fijas el destino una vez y dejas de pensar en ello.

  1. 01

    Eliges un destino

    Abre Conexiones y elige la tarjeta de la hoja o la del webhook. Para un webhook pegas una URL https y copias el secreto de firma, que se muestra exactamente una vez y luego se guarda cifrado.
  2. 02

    Se capta y se puntúa un lead

    Tu asistente recoge los datos de contacto durante la conversación y puntúa el lead de 0–100 con pesos publicados: email, teléfono, una reserva, una empresa, la interacción. Un lead por persona en todos los canales.
  3. 03

    La entrega se confirma junto con el lead

    Un outbox transaccional escribe una fila por lead y destino, en la misma transacción de base de datos que el propio lead. Un lead nunca puede existir sin su entrega.
  4. 04

    Un proceso en segundo plano vacía el outbox

    Una vez por minuto, en su propia cola dedicada, para que un endpoint de cliente colgado nunca ocupe un hueco que estaría atendiendo a un cliente. Hasta 50 filas por pasada, y los negocios se toman por turnos.
  5. 05

    Se añade la fila, o se envía el POST

    La escritura en la hoja usa valueInputOption=RAW. El webhook lleva cuatro cabeceras — firma, timestamp, id de entrega y nombre del evento — y el receptor tiene 3 segundos para conectar y 5 segundos en total. No se siguen redirecciones.
  6. 06

    Los fallos se reintentan y luego paran

    Seis intentos, a los 1, 5, 30, 120, 360 y 1440 minutos. Un fallo que no va a funcionar nunca — un 401, por ejemplo — muere al momento en lugar de dar vueltas un día entero.
  7. 07

    Puedes ver qué ha pasado

    El cajón del webhook tiene una pestaña «Entregas recientes» de solo lectura con el estado, los intentos, el código de respuesta, el error en lenguaje claro y cuándo toca el siguiente intento. Aparece un aviso en la página de Leads si algo lleva caído los últimos siete días.
Para tu desarrollador

¿Cómo se verifica la firma de un webhook de OpusDone?

La cabecera es sha256=<hex>, calculada sobre el timestamp, un punto y los bytes exactos que van por el cable. El timestamp está dentro de la cadena firmada, así que una petición capturada no se puede reproducir para siempre.

js
const crypto = require('crypto');

// Mount this route with express.raw({ type: 'application/json' }).
function verified(req, secret) {
  const sent = req.get('X-OpusDone-Signature') || '';
  const ts = req.get('X-OpusDone-Timestamp') || '';
  const age = Math.abs(Date.now() - Date.parse(ts));
  if (!(age < 5 * 60 * 1000)) return false;

  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(ts + '.')
    .update(req.body)        // raw bytes, not the parsed object
    .digest('hex');

  const a = Buffer.from(sent);
  const b = Buffer.from(expected);
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

Compara en tiempo constante y trata X-OpusDone-Delivery como el identificador de reintento: el mismo id puede llegar dos veces, así que guárdalo e ignora las repeticiones.

Los números

Qué promete de verdad el mecanismo

1 minintervalo de vaciado del outbox
6intentos antes de parar
10columnas en tu hoja
Límites

¿Qué no hace la entrega de leads de OpusDone?

Dos destinos y un evento. Todo lo de abajo se dejó fuera a propósito, y preferimos que lo leas aquí a que lo descubras después de registrarte.

Ningún conector nativo de CRM

No hay botón de HubSpot, Pipedrive ni Salesforce. Tus datos llegan a tu CRM a través de Make, n8n o Zapier, y cada uno consume el mismo webhook firmado.

No se conecta una hoja que ya tengas

Creamos una hoja nueva en tu Drive y somos dueños de la fila 1. No hay selector de archivos, ni de pestaña, ni pantalla de mapeo de columnas. Renombra las cabeceras si quieres: escribimos por posición.

Ninguna sincronización de entrada

La entrega va en un solo sentido, hacia fuera. Nada de lo que escribas en la hoja o devuelvas desde tu endpoint se lee de vuelta en OpusDone.

Un evento, no un flujo

Existe exactamente un evento: lead.captured, enviado una vez por lead y destino. No hay evento de lead caliente ni evento de cambio de puntuación.

Ningún texto de la conversación salvo que lo pidas

El campo de resumen es opcional y está desactivado por defecto, así que una clínica o un despacho pueden enviar datos de contacto sin transmitir nunca lo que dijo un paciente o un cliente.

Preguntas sobre la entrega de leads

¿Qué llega a la hoja?

Una fila por lead, con Fecha, Nombre, Email, Teléfono, Canal, Puntuación, Estado, Reserva, Resumen y Enlace al lead. Los ensayos se excluyen por defecto: una conversación de sandbox registra una fila omitida en lugar de una entrega.

¿Dónde está el secreto de firma, y puedo cambiarlo?

Se muestra exactamente una vez al crear el destino y después queda cifrado en reposo. Puedes regenerarlo cuando quieras desde el mismo cajón. No hay rotación automática, así que el cambio ocurre cuando tú decides que ocurra.

¿Cómo sé que las entregas funcionan?

La pestaña «Entregas recientes» muestra el estado, los intentos, el código de respuesta, el error y cuándo toca el siguiente intento. «Enviar evento de prueba» dispara una carga real de ejemplo de forma síncrona y te devuelve el estado real. Los errores de transporte y los 403 de Google se convierten en una frase con la que puedes hacer algo, no en un código de estado a secas.

¿Cuánto cuesta?

Nada. No hay casilla de derechos, ni tope por plan, ni feature flag: la entrega de leads está en todos los planes, incluida la prueba. Zapier cobra por los webhooks en su app Premium; Make y n8n aceptan un webhook normal en sus planes gratuitos.

¿Qué envía el webhook?

Un cuerpo JSON con event («lead.captured»), id («lead_<id>»), un timestamp UTC en ISO-8601, tenant, el propio lead — id, name, email, phone, company, status, score, channel, intent, reachable, created_at —, un objeto booking o null, y summary solo si lo has activado.

¿Y si mi endpoint está caído o va lento?

Seis intentos, a los 1, 5, 30, 120, 360 y 1440 minutos. Los tiempos de espera son de 3 segundos para conectar y 5 segundos en total, y no se siguen redirecciones. Una respuesta no reintentable, como un 401, para en seco en lugar de reintentar todo el día.

¿Puede el mensaje de un cliente estropearme la hoja?

Cada celda está protegida contra la inyección de fórmulas: =, +, -, @, el tabulador y el retorno de carro se prefijan con un apóstrofo y la escritura usa RAW, así que un nombre escrito como =IMPORTXML(…) se queda en texto. Las URL de webhook pasan una protección SSRF aplicada dos veces, en TypeScript al guardar y otra vez en Python al enviar: solo https, sin redirecciones, y con loopback, rangos privados, CGNAT, multicast y el rango de metadatos de la nube bloqueados. La entrega funciona en nuestra infraestructura en Alemania y cada negocio está aislado de todos los demás.

Cada lead en tu hoja en un minuto

Una hoja de Google Sheets en tu propio Drive, o un webhook firmado a tu endpoint. Gratis en todos los planes, incluida la prueba.

Solicitar acceso