01
Criar a conta
Cria uma conta e a tua organização.
O primeiro membro da organização torna-se administrador e pode convidar o resto da equipa.
Definições → Organização guarda o nome da empresa, o email de faturação e a morada. Definições → Marca é onde defines o logótipo e as cores que os teus clientes veem nos dashboards partilhados e embebidos.

02
Define os teus dados
Cria um bucket de eventos a partir de um evento de exemplo ou define tu os campos.
Indica timestamps, dimensões e métricas.
O Event Horizon usa essa estrutura para tornar os dados consultáveis.
Um bucket de eventos define ao mesmo tempo o que envias e como o analisas. Cola um evento de exemplo e as colunas são propostas por nós, com tipo, classificação e a razão de cada uma; tu confirmas ou corriges. Nada é criado até o fazeres. Também podes declará-las à mão, escolhendo o que cada uma é:
| timestamp_key | Quando o acontecimento se deu. Obrigatória, e é o que todos os filtros de tempo leem. |
| dimension | Aquilo por que agrupas e filtras: país, campanha, plano de subscrição. Fica gravado como estava no momento do evento, portanto o que uma empresa se chamava em 2020 continua a ler 2020. |
| metric | Aquilo que somas ou de que tiras médias: receita, duração, quantidade. |
Declara o fuso horário de onde vêm os dados. Guarda-se tudo em UTC, e um fuso não declarado é assumido como UTC. Uma hora mal interpretada não se corrige depois.
Os instantes podem vir como texto ISO-8601, ou como um número epoch em segundos ou milissegundos. Deduzimos a unidade pela grandeza, portanto `1787232000` e `1787232000000` são o mesmo instante. Um número que chegue como string é lido da mesma maneira.
03
Liga uma fonte
Envia dados por um webhook, um fluxo de alterações de uma base de dados, um workflow de API ou outro método de ingestão suportado.
Inicia o workflow. O Event Horizon trata do caminho de ingestão.
O caminho mais curto é um webhook, e um workflow novo já abre com um ligado a um Loader. Se os teus dados vêm de outro sítio, a barra por cima da tela troca-o por outra forma comum: uma base de dados que seguimos à medida que muda, ou uma API que chamamos com uma periodicidade. Grava, e o endereço é gerado por nós e não é editável, porque deriva da tua organização e desse nó, por isso nunca colide nem pode ser forjado.
No inspetor do nó, escolhe Gerir segredo → Gerar. A chave é mostrada uma única vez e guardada apenas como hash, e nem nós a conseguimos recuperar. Se a perderes, geras outra. Depois envia para o endereço que aparece no campo URL do nó:
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}' Repara no anfitrião ingest. A ingestão tem entrada própria, separada da aplicação, e um pedido enviado para o domínio da aplicação é recusado.
Inicia o workflow. Um nó de webhook só aceita tráfego enquanto o workflow dele estiver a correr.
Envia um `event_id` no corpo, ou um cabeçalho `Idempotency-Key`, e uma repetição do mesmo identificador dentro de cinco minutos é descartada em vez de guardada duas vezes. Sem nenhum dos dois, cada pedido é aceite como novo, porque preferimos não adivinhar o que torna dois dos teus eventos o mesmo evento.
Um 401 quer dizer uma de duas coisas: falta o cabeçalho Authorization, ou a chave não corresponde. Um nó cuja chave nunca foi gerada recusa tudo, por desenho.
04
Ver os dados
Abre a secção Explorar e escolhe:
- O que aconteceu?
- Métrica.
- A quem ou onde?
- Dimensão.
- Quando?
- Intervalo de tempo.
Depois constrói a consulta visualmente. Sem SQL.
O explorador de queries não precisa de SQL: escolha um bucket de eventos, uma métrica, algo por que agrupar e um período. Também pode escrever a pergunta por palavras e carregar em Ask: o rascunho volta preenchido, com uma nota a dizer o que cobriu e o que deixou de fora. Nada corre antes de o ter visto. Os dashboards constroem-se da mesma maneira e podem ser partilhados por link ou embebidos no seu próprio produto com a sua marca.
05
Constrói o dashboard
Transforma as perguntas que te interessam em widgets de dashboard. Filtra e aprofunda os resultados.
Partilha o dashboard ou incorpora-o no teu próprio produto.
06
Controla o acesso
Convida a tua equipa. Atribui papéis. Usa âmbitos de linha quando alguém só deve ver uma parte dos dados.
Definições → Equipa para convidar pessoas, Papéis para desenhar o que cada uma pode fazer, e âmbitos de linha para limitar alguém a uma parte dos dados, como um cliente teu que só deve ver a região dele.
07
Usa SQL quando precisares
Quando a interface visual não chega, usa a interface SQL. As consultas são validadas, limitadas ao teu tenant e têm o custo verificado antes de correrem.
Guarda as consultas úteis como widgets de dashboard. Liga Python, R ou Jupyter quando o teu trabalho precisar de um notebook.
A maioria das perguntas nunca precisa de SQL, mas quando o quiseres, o Explore tem um separador SQL. Escreves SQL normal contra os teus buckets de eventos como se cada um fosse uma tabela, sem veres como o warehouse os guarda por baixo. A tua query é validada e reconstruída do nosso lado, trancada à tua organização, por isso só consegue ler os teus próprios dados.
Toda a query é orçamentada antes de correr, à maneira do dry-run do BigQuery: uma que leria mais do que o teu plano permite é recusada à cabeça, com a estimativa à frente, para uma query pesada falhar depressa em vez de gerar fatura. Grava uma query de que gostes e larga-a num dashboard como widget.
Para consultar a partir de um notebook, gera um token em Definições → Tokens de API e envia SQL para o endpoint de dados a partir de Python, R ou Jupyter. O tenant vem do token, por isso um token só consegue alcançar os dados da sua própria organização:
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"}' O token vai no cabeçalho Authorization e pode ser revogado a qualquer momento; um token revogado deixa de funcionar de imediato. A resposta é JSON por omissão, ou CSV com `?format=csv` ou um cabeçalho `Accept: text/csv`. `GET /api/v1/data/schema` lista os buckets que podes consultar.
Enviar eventos em contínuo
O webhook acima é o arranque mais rápido. Para um fluxo que não pára, há mais dois caminhos que chegam ao mesmo tipo de nó de ingestão, no mesmo host de ingestão, atrás de uma chave que geras uma vez e que guardamos só como hash.
A partir do teu próprio código, instala o SDK. Funciona em Node e no browser, agrupa os registos em lotes e faz as repetições 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(); A partir de ficheiros de log ou do syslog, aponta o agente de recolha a um caminho e ele envia cada linha, já tipada. Corre-o com npx, ou descarrega um único binário autónomo que não precisa de 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 enviam um evento da mesma forma que o webhook, por isso as regras de idempotência acima continuam a valer: um identificador repetido dentro de cinco minutos é descartado. O agente também sobrevive a um reinício sem perder uma linha nem enviar duas vezes. Ambos são código aberto, MIT, no npm.
Planos e faturação
És faturado por eventos. Um evento é um registo carregado num bucket: uma encomenda, um pagamento, uma leitura de sensor, uma entrega de webhook. É contado uma vez, quando chega, e um lote que é repetido não é contado outra vez. O tamanho não faz parte da contagem, e ler os dados de volta também não: o armazenamento e o orçamento de leitura de cada consulta são limites à parte no teu plano.
Cada plano (Starter, Studio, Agency, Scale) define esses tetos, e a página de preços mostra os mesmos números que o produto aplica. Começas num período experimental de 14 dias e escolhes um plano em Definições, em Plano e utilização.
Esse ecrã mostra também o que já usaste. Aos 80% de um limite és avisado; aos 100% a nova ingestão fica em fila em vez de ser descartada, até fazeres upgrade ou o mês reiniciar, por isso nada se perde. A leitura dos teus dados fica sempre aberta, para que os números e o botão de upgrade estejam sempre à mão.