Documentación

Del primer evento al primer panel.

No necesitas un proyecto de ingeniería de datos para empezar.Crea una organización, define un bucket de eventos, envía algunos datos y crea tu primera consulta.

01

Crea tu cuenta

Crea una cuenta y tu organización.

El primer miembro de la organización pasa a ser administrador y puede invitar al resto del equipo.

Ajustes → Organización guarda el nombre de la empresa, el correo de facturación y la dirección. Ajustes → Marca es donde defines el logotipo y los colores que tus clientes ven en los paneles compartidos e incrustados.

El formulario de registro de Event Horizon DataLa pestaña Organización en Ajustes, con el nombre, correo y dirección de la empresa

02

Define tus datos

Crea un bucket de eventos a partir de un evento de ejemplo o define tú sus campos.

Indica marcas de tiempo, dimensiones y métricas.

Event Horizon usa esa estructura para que los datos se puedan consultar.

Un bucket de eventos define a la vez lo que envías y cómo lo analizas. Pega un evento de ejemplo y las columnas se te proponen, con tipo, clasificación y el motivo de cada una; tú confirmas o corriges. No se crea nada hasta que lo hagas. También puedes declararlas a mano, eligiendo lo que es cada una:

La sección Buckets mostrando los buckets de eventos de un espacio de trabajo
timestamp_keyCuándo ocurrió el evento. Obligatoria, y es lo que leen todos los filtros de tiempo.
dimensionAquello por lo que agrupas y filtras: país, campaña, plan de suscripción. Se guarda tal como estaba en el momento del evento, así que lo que una empresa se llamaba en 2020 sigue leyéndose 2020.
metricAquello que sumas o promedias: ingresos, duración, cantidad.

Declara la zona horaria de origen de tus datos. Todo se guarda en UTC, y una zona no declarada se asume como UTC: una hora mal interpretada no se corrige después.

Las marcas de tiempo pueden ser texto ISO-8601 o un número epoch en segundos o milisegundos: deducimos la unidad por la magnitud, así que `1787232000` y `1787232000000` son el mismo instante. Un número que llega como cadena se lee igual.

03

Conecta una fuente

Envía datos mediante un webhook, un flujo de cambios de una base de datos, un workflow de API u otro método de ingesta compatible.

Inicia el workflow. Event Horizon se encarga del camino de ingesta.

El camino más corto es un webhook, y un workflow nuevo ya se abre con uno conectado a un Loader. Si tus datos vienen de otro sitio, la barra sobre el lienzo lo cambia por otra forma común: una base de datos que seguimos según cambia, o una API que llamamos con una periodicidad. Guarda, y la dirección se genera por nosotros y no es editable, porque deriva de tu organización y de ese nodo, así que nunca colisiona ni puede falsificarse.

La lista de flujos, donde se construyen las canalizaciones de ingesta

En el inspector del nodo, elige Gestionar secreto → Generar. La clave se muestra una sola vez y se guarda solo como hash: ni nosotros podemos recuperarla. Si la pierdes, generas otra. Después envía a la dirección que aparece en el campo URL del nodo:

curl -X POST "https://ingest.eventhorizondata.com/webhooks/<org>/<node>" \
  -H "Authorization: Bearer <key>" \
  -H "Content-Type: application/json" \
  -d '{"event_id":"evt-1","value":42}'

Fíjate en el host ingest. La ingesta tiene su propia entrada, separada de la aplicación, y una petición enviada al dominio de la aplicación será rechazada.

Inicia el flujo. Un nodo de webhook solo acepta tráfico mientras su flujo esté en marcha.

Envía un `event_id` en el cuerpo, o una cabecera `Idempotency-Key`, y una repetición del mismo identificador dentro de cinco minutos se descarta en lugar de guardarse dos veces. Sin ninguno de los dos, cada petición se acepta como nueva: preferimos no adivinar qué hace que dos de tus eventos sean el mismo.

Un 401 significa una de dos cosas: falta la cabecera Authorization, o la clave no coincide. Un nodo cuya clave nunca se generó lo rechaza todo, por diseño.

04

Mira tus datos

Abre Explorar y elige:

¿Qué pasó?
Métrica.
¿A quién o dónde?
Dimensión.
¿Cuándo?
Rango de tiempo.

Después crea la consulta visualmente. Sin SQL.

El explorador de consultas no necesita SQL: elige un bucket de eventos, una métrica, algo por lo que agrupar y un periodo. También puedes escribir la pregunta con palabras y pulsar Ask: el borrador vuelve relleno, con una nota que dice qué cubrió y qué dejó fuera. Nada se ejecuta hasta que lo has mirado. Los paneles se construyen igual y se pueden compartir por enlace o incrustar en tu propio producto con tu marca.

El explorador de consultas, con la caja Ask sobre una consulta que se construye visualmente

05

Crea el panel

Convierte las preguntas que te importan en widgets del panel. Filtra y profundiza en los resultados.

Comparte el panel o intégralo en tu propio producto.

06

Controla el acceso

Invita a tu equipo. Asigna roles. Usa ámbitos de fila cuando alguien solo deba ver una parte de los datos.

Ajustes → Equipo para invitar personas, Roles para diseñar lo que cada una puede hacer, y ámbitos de fila para limitar a alguien a una parte de los datos: un cliente tuyo que solo deba ver su región.

La pestaña Equipo en Ajustes, con los miembros y sus roles

07

Usa SQL cuando lo necesites

Cuando la interfaz visual no basta, usa la interfaz SQL. Las consultas se validan, se limitan a tu tenant y se comprueba su coste antes de ejecutarse.

Guarda las consultas útiles como widgets del panel. Conecta Python, R o Jupyter cuando tu flujo de trabajo necesite un notebook.

La mayoría de preguntas no necesita SQL, pero cuando lo quieras, Explore tiene una pestaña SQL. Escribes SQL normal contra tus buckets de eventos como si cada uno fuera una tabla, sin ver cómo los guarda el warehouse por debajo. Tu consulta se valida y se reconstruye de nuestro lado, ligada a tu organización, así que solo puede leer tus propios datos.

Cada consulta se presupuesta antes de ejecutarse, igual que el dry-run de BigQuery: una que escanearía más de lo que tu plan permite se rechaza de entrada, mostrando la estimación, para que una consulta pesada falle rápido en vez de generar factura. Guarda una consulta que te guste y arrástrala a un panel como widget.

La página Explore con la pestaña SQL abierta: tus buckets listados como tablas, un editor SQL y las acciones Ejecutar, Estimar coste y Guardar.

Para consultar desde un notebook, genera un token en Ajustes → Tokens de API y envía SQL al endpoint de datos desde Python, R o Jupyter. El tenant viene del token, así que un token solo puede alcanzar los datos de su propia organización:

curl -X POST "https://eventhorizondata.com/api/v1/data/sql" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"sql":"SELECT toStartOfDay(time) AS day, sum(value) AS total FROM orders GROUP BY day ORDER BY day"}'

El token va en la cabecera Authorization y se puede revocar en cualquier momento; un token revocado deja de funcionar al instante. La respuesta es JSON por defecto, o CSV con `?format=csv` o una cabecera `Accept: text/csv`. `GET /api/v1/data/schema` lista los buckets que puedes consultar.

Enviar eventos de forma continua

El webhook de arriba es el comienzo más rápido. Para un flujo que no se detiene, hay dos caminos más que llegan al mismo tipo de nodo de ingesta, en el mismo host de ingesta, tras una clave que generas una vez y que guardamos solo como hash.

Desde tu propio código, instala el SDK. Funciona en Node y en el navegador, agrupa los registros en lotes y reintenta por ti:

npm install @event-horizon-data/probe

import { Probe } from '@event-horizon-data/probe';

const probe = new Probe({
  endpoint: 'https://ingest.eventhorizondata.com/ingest/probe/<org>/<node>',
  key: 'ehp_<key>',
});

probe.send({ user_id: '123', action: 'click', value: 42 });
await probe.flush();

Desde archivos de log o syslog, apunta el agente de recolección a una ruta y envía cada línea, ya tipada. Ejecútalo con npx, o descarga un único binario autónomo que no necesita Node instalado:

npx @event-horizon-data/agent \
  --endpoint https://ingest.eventhorizondata.com/ingest/probe/<org>/<node> \
  --key ehp_<key> \
  --tail /var/log/app.log

Ambos envían un evento igual que el webhook, así que las reglas de idempotencia de arriba siguen vigentes: un identificador repetido dentro de cinco minutos se descarta. El agente además sobrevive a un reinicio sin perder una línea ni enviarla dos veces. Ambos son de código abierto, MIT, en npm.

Planes y facturación

Se factura por eventos. Un evento es un registro cargado en un bucket: un pedido, un pago, una lectura de sensor, una entrega de webhook. Se cuenta una vez, cuando llega, y un lote que se reintenta no se cuenta de nuevo. El tamaño no forma parte del recuento, y leer los datos tampoco: el almacenamiento y el presupuesto de lectura de cada consulta son límites aparte de tu plan.

Cada plan (Starter, Studio, Agency, Scale) fija esos topes, y la página de precios muestra los mismos números que el producto aplica. Empiezas con una prueba de 14 días y eliges un plan en Ajustes, en Plan y uso.

Esa pantalla también muestra lo que has usado. Al 80% de un límite se te avisa; al 100% la nueva ingesta se pone en cola en lugar de descartarse, hasta que mejores el plan o el mes se reinicie, así que no se pierde nada. La lectura de tus datos permanece abierta en todo momento, para que los números y el botón de mejora estén siempre a mano.

Envía tu primer evento.

Crea una cuenta y pasa de los datos en bruto a un panel en minutos.