Integraciones: webhooks y Hojas de cálculo de Google
En esta página
Integraciones, en el menú de tu web, envía lo que pasa en tu web a otras herramientas en el mismo momento en que ocurre:
- Los Webhooks envían las consultas nuevas, los suscriptores nuevos y los pedidos pagados a cualquier aplicación que los acepte: Zapier, Make, n8n, Pabbly, tu CRM o tu propio servidor.
- Hojas de cálculo de Google añade cada consulta nueva como una fila en una hoja de cálculo, sin conectar ninguna cuenta de Google a Closer.
Cada web tiene sus propias integraciones. Puedes añadir hasta 5 direcciones por web (webhooks y hojas de cálculo en total).
Webhooks
Un webhook es una dirección (URL) a la que Closer llama con los datos de un evento. La mayoría de las herramientas de automatización te dan una: en Zapier es el disparador Webhooks by Zapier → Catch Hook, en Make el módulo Webhooks → Custom webhook y en n8n el nodo Webhook.
Añadir un webhook
- Abre Integraciones.
- Pega la dirección en Dirección del webhook. Debe empezar por
https://. - Marca los eventos que quieras:
- Nueva consulta: un visitante envió un formulario de contacto (o un quiz con formulario).
- Nuevo suscriptor: alguien se apuntó con un formulario de newsletter.
- Nuevo pedido: se pagó un pedido de tu tienda.
- Haz clic en Añadir webhook.
- Closer muestra el secreto de firma (
whsec_…) una sola vez. Cópialo y guárdalo en la aplicación receptora si quieres comprobar que las peticiones vienen realmente de Closer. Si lo pierdes, haz clic en Nuevo secreto; el anterior deja de funcionar al instante. - Haz clic en Enviar prueba. La aplicación receptora recibe un evento de ejemplo (con
"test": true) y el resultado aparece en el Registro de envíos.
Más tarde puedes activar y desactivar eventos haciendo clic en ellos, pausar un webhook con su interruptor o Quitarlo.
Por seguridad, Closer solo llama a direcciones públicas de internet. Las direcciones de redes privadas o internas (como
localhost,10.x.x.x,192.168.x.x) se rechazan.
Qué envía Closer
Cada petición es un POST con un cuerpo JSON:
{
"id": "1f6c2a9e-…",
"event": "inquiry.created",
"created_at": "2026-10-22T09:30:00+00:00",
"test": false,
"site": { "id": 12, "name": "My site", "url": "https://mysite.closer.li" },
"data": { … }
}
El event es inquiry.created, subscriber.created u order.paid. Qué hay en data:
| Evento | Campos en data |
|---|---|
inquiry.created |
id, created_at, language, page (desde dónde se envió el formulario, p. ej. /contact), name, email, fields (una lista de key, label, value para cada campo del formulario), quiz (respuestas y resultado, o null) |
subscriber.created |
id, email, name, language, source (el formulario), created_at |
order.paid |
id, code, email, name, language, items (id, name, price), subtotal, discount, coupon_code, total, currency, mode (test, live o free), paid_at |
Los importes van en céntimos (la unidad más pequeña de la moneda): 4500 con "currency": "EUR" significa 45,00 €.
Cabeceras que se envían con cada petición:
X-Closer-Event: el nombre del evento.X-Closer-Delivery: un id único del evento. Los reintentos del mismo evento conservan el mismo id, así que puedes ignorar los duplicados.X-Closer-Signature:t=1761125400,v1=5d41…, dondetes la hora de envío (segundos Unix) yv1es el HMAC-SHA256 det + "." + cuerpo sin procesar, calculado con tu secreto de firma.
Para comprobar una petición, calcula el mismo HMAC con tu secreto y compáralo con v1, y rechaza las peticiones cuyo t tenga más de unos minutos. En PHP:
[$t, $v1] = sscanf($_SERVER['HTTP_X_CLOSER_SIGNATURE'], 't=%d,v1=%s');
$body = file_get_contents('php://input');
$valid = hash_equals(hash_hmac('sha256', $t.'.'.$body, $secret), $v1) && abs(time() - $t) < 300;
Reintentos y registro de envíos
La dirección receptora debe responder con un estado 2xx en 15 segundos. Si no lo hace (un error, un tiempo de espera agotado, un 500), Closer lo intenta dos veces más: tras unos 30 segundos y tras unos 5 minutos. Las redirecciones no se siguen, así que usa la dirección final.
El Registro de envíos muestra las últimas 50 peticiones de la web: hora, evento, dirección, qué intento fue (1/3, 2/3, 3/3), el código de estado con el que respondió la dirección y el error, si lo hubo.
Hojas de cálculo de Google
Cada consulta nueva se convierte en una fila de una hoja de Google: Fecha, Página, Nombre, Email y luego una columna para cada otro campo del formulario (por su etiqueta). Los campos nuevos reciben una columna nueva automáticamente. Funciona mediante un pequeño Google Apps Script que añades a tu propia hoja de cálculo, así que Closer nunca necesita acceder a tu cuenta de Google.
Configúralo (unos 3 minutos)
- Crea una hoja de cálculo nueva en Hojas de cálculo de Google (lo más rápido es abrir
sheets.new). Las consultas van a su primera pestaña. - En la hoja de cálculo, abre Extensiones → Apps Script (Extensions → Apps Script).
- Borra el código de ejemplo del editor. En Closer, en Hojas de cálculo de Google, haz clic en Copiar script y pégalo en el editor de Apps Script. Haz clic en Guardar (el icono del disquete).
- Haz clic en Implementar → Nueva implementación (Deploy → New deployment). Haz clic en el engranaje junto a Seleccionar tipo (Select type) y elige Aplicación web (Web app). Configura:
- Ejecutar como (Execute as): Yo (Me)
- Quién tiene acceso (Who has access): Cualquier usuario (Anyone)
- Haz clic en Implementar (Deploy). Google te pide que autorices el script: elige tu cuenta. Si ves «Google no ha verificado esta aplicación», haz clic en Configuración avanzada → Ir a (tu proyecto) (Advanced → Go to …) y en Permitir (Allow). Es tu propio script, que se ejecuta en tu propia cuenta.
- Copia la URL de la aplicación web (Web app URL). Tiene este aspecto:
https://script.google.com/macros/s/…/exec. - En Closer, pégala en URL de la aplicación web y haz clic en Conectar. Closer envía una fila de prueba al momento; comprueba que aparece en la hoja (puedes borrarla).
Usa Enviar fila de prueba en cualquier momento para comprobar la conexión. El interruptor pausa la hoja de cálculo y el botón de la papelera la desconecta.
Mantén la URL de la aplicación web en privado: cualquiera que la tenga puede añadir filas a esa hoja. Si se filtra, crea una implementación nueva en Apps Script y conecta la nueva URL.
Conviene saber
- A la hoja de cálculo solo van las consultas. Para suscriptores y pedidos, usa un webhook (por ejemplo a Zapier o Make, que también pueden escribir en Hojas de cálculo de Google).
- Si cambias el script más adelante, usa Implementar → Gestionar implementaciones → Editar → Nueva versión (Deploy → Manage deployments → Edit → New version) para que la URL siga siendo la misma.
- El texto que empieza como una fórmula (
=,+,-,@) se escribe como texto normal, así que lo que alguien escriba en un formulario no puede ejecutar una fórmula en tu hoja. - Cada fila se añade en cuanto llega la consulta. Los intentos fallidos se reintentan igual que los webhooks y se muestran en el Registro de envíos.
- Las consultas que superan el límite mensual de tu plan se guardan en la Bandeja de entrada, pero no se envían a las integraciones.
¿No encuentras la respuesta?
Escríbenos y te respondemos en un día hábil.