What you need first

Two things: an account on the Infralytiqs console, and a ClickHouse server the platform can reach. If you do not have the second one yet, a Docker container is fine for evaluation and takes about a minute — step 3 covers it, and the ClickHouse guide covers doing it properly.

You do not need a credit card, a sales call or a trial licence. You also do not need to decide your event schema up front, because custom dimensions are map columns you can add to at any time.

The six steps

In order. Each one has a visible success signal, so you always know whether to move on.

  1. Sign in with SSO

    Open the console and use Google, Microsoft or your organisation's OIDC provider under or continue with. Which providers appear depends on how your domain is configured.

    If you see no_account after the redirect, the SSO sign-in worked but no Infralytiqs account is linked to that email yet — an administrator needs to invite you. account_pending means the invitation exists but has not been approved.

    Done when: you land on the dashboard and Infralytiqs appears in the left sidebar.

    2 minutes
  2. Create a tenant

    Go to Infralytiqs → Settings, open the Tenants accordion and click New. Give it a Tenant Name and an optional description.

    A tenant is your top-level boundary — it owns sites, ClickHouse configurations and report suites. One per organisation or per environment is a sensible default.

    Creating it issues a Client Key and Client Secret, shown once under View credentials. Store the secret somewhere safe now: it grants read access to reports, so it belongs in server-side configuration and never in a browser bundle. You can rotate it later with Refresh Secret.

    Done when: the tenant is listed and you have the key and secret saved.

    1 minute
  3. Have a ClickHouse server ready

    The platform needs a reachable ClickHouse endpoint with credentials that can create a database. Any of these work: a local container, ClickHouse Cloud, or your own cluster.

    For evaluation, the container in the snippet below is enough. For anything real, read the ClickHouse guide first — particularly the parts about not exposing port 8123 to the internet and creating a dedicated user.

    Done when: curl http://your-host:8123/ping answers Ok.

    1 minute for a container
  4. Connect it in the console

    Still in Settings, add a ClickHouse Server module. Fill in Name of the Server, URL (e.g. http://localhost:8123), the Tenant Id you just created, an optional Site ID and a DB Name.

    The database name must match ^[a-zA-Z][a-zA-Z0-9_]{0,62}$ — start with a letter, then letters, digits and underscores. It does not need to exist; Infralytiqs creates it, along with the website_events table.

    Set Authentication Method to Basic Authentication and supply the username and password unless your server genuinely has none. If it sits behind TLS with a private CA, add the certificate here rather than reaching for Skip TLS Certificate validation.

    Now click Test connection. You cannot save until it passes — deliberately, because a saved configuration that cannot connect just produces empty dashboards later. Changing the URL, auth or TLS settings invalidates the test and you will need to run it again.

    Done when: the test reports success and the module is saved.

    3 minutes
  5. Send your first event

    Ingest needs no token. The tenant_id and site_id in the URL are the credential, and they are validated against the configuration you just saved.

    Run the curl in the snippet below with your own values. A 201 with "success": true means the row is in your database — and you can prove it with the verification query in the same snippet, which reads your own ClickHouse directly rather than trusting the console.

    A 403 means the tenant and site pair does not match any configuration. Check for a typo, and remember that a blank Site ID means the reserved __all_sites__ segment rather than an empty string.

    Done when: SELECT count() FROM website_events returns at least 1.

    1 minute
  6. Build a report

    From the ClickHouse module tile, open Report Suites and create one with a name and description. Then Manage Reports → new report, and the wizard walks you through Basics, Metrics, Dimensions & Filters and Visualization.

    A good first report: metric Count (all), dimension Event Type, visualisation Bar Chart, range Last 24 hours. It is immediately useful as a sanity check on what your applications are actually sending.

    Mark the suite as the default for this configuration and it becomes the landing dashboard under Infralytiqs → Reports.

    Done when: your event appears as a bar.

    3 minutes

Steps 3 and 5, as commands

Copy these, substitute your own values, and you have a working pipeline.

# Fine for evaluation. Do not use these credentials in production,
# and see the ClickHouse guide before exposing this to anything.
docker run -d \
  --name infralytiqs-clickhouse \
  -p 8123:8123 -p 9000:9000 \
  -e CLICKHOUSE_USER=infralytiqs \
  -e CLICKHOUSE_PASSWORD='change-me-locally' \
  -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 \
  --ulimit nofile=262144:262144 \
  -v infralytiqs-ch-data:/var/lib/clickhouse \
  clickhouse/clickhouse-server:latest

# Confirm it is answering before you go back to the console.
curl -sS http://localhost:8123/ping
# Ok.

# Confirm your credentials work too.
curl -sS -u infralytiqs:change-me-locally \
  'http://localhost:8123/?query=SELECT%20version()'

What you just built

Six steps, three systems.

You

SSO sign-in

Google · Microsoft · OIDC

Step 1

Tenant

Key and secret issued

Step 2

Your database

ClickHouse

Container or cloud

Step 3

Connected

Test before save

Step 4

Your app

First event

201 Created

Step 5

Console

Report suite

Set as default

Step 6

Dashboard

Events by type

Done

The console and collector are ours. The database is yours. Your applications talk to one endpoint.

Values you will need, and where each one comes from

Worth having these in front of you before you start step 4.

Value Where you get it Used for Secret?
tenant_id Settings → Tenants, after creating a tenant The ingest URL and every analytics call No — it appears in browser requests
site_id The Site ID you set on the ClickHouse module The ingest URL; scopes one stream No
clientKey · clientSecret Shown once under View credentials Minting read tokens via POST /il/token Yes — server-side only
companyId Your console account The companyId header when minting a token No
ClickHouse URL Your own server or provider The connection form No
ClickHouse user and password Your own server Basic auth on the connection form Yes
dbName You choose it Created by Infralytiqs; must match ^[a-zA-Z][a-zA-Z0-9_]{0,62}$ No
Cluster name Your ClickHouse topology Only if you tick the cluster option; switches to ReplicatedMergeTree No

When a step does not work

That guard is intentional. Work through it in order: does curl http://your-host:8123/ping answer Ok from a machine other than the database host; can the Infralytiqs collector actually reach that address — localhost means the collector's own localhost, not yours, so a container on your laptop needs a tunnel or a public endpoint; and can the user you supplied create a database. If it passed before and now fails, changing the URL, auth or TLS fields invalidates the previous result and it needs re-running.
The pair in your URL does not match a saved configuration. Check both for typos, confirm the module actually saved, and note that a blank Site ID on the module means the reserved __all_sites__ segment rather than an empty path element.
Query your ClickHouse directly first, since that separates a storage problem from a reporting one. If the rows are there, the usual causes are a report time range that excludes them, a filter on an event_type you did not send, or the suite not being set as default for that configuration.
no_account means authentication succeeded but no Infralytiqs account is linked to that email. account_pending means an invitation is awaiting approval, and account_inactive means it was disabled. provider_not_configured means that provider is not enabled for your domain, and oauth_denied means you declined the consent screen. Only the first three need an administrator.
Start with one. Use separate sites for separate properties within it, and separate tenants only when you want a hard boundary — different business units, or production versus a sandbox whose data should never mix. Each tenant has its own credentials.
Yes. Register the new server as another module and re-point your sites, and when you create it you can copy report suites from the existing configuration so you are not rebuilding dashboards. Historical rows stay in the old database unless you move them yourself, which is a normal ClickHouse INSERT SELECT with the remote table function.

Now instrument something real

Each guide is end to end, with working code rather than fragments.

Track a website

The browser SDK: automatic page views, custom events, SPA route changes, identifying users, and mapping your own dimensions with eVar and prop maps.

Track mobile apps

No native SDK to embed — iOS, Android and React Native POST the same JSON. Includes offline queueing and lifecycle events.

Track server-side apps

Node, Java, Python and shell. Batching up to 1000 events, backfilling history, and instrumenting a scheduled job.

Run your ClickHouse properly

A production setup: a dedicated user with least privilege, TLS, retention, backups, and monitoring the parts that actually break.

AEM as a Cloud Service

The OSGi bundle for author-side asset and login events, plus a bootstrap script for the published site.

Build better reports

The full panel catalogue, the dimension vocabulary, drill-down, and what a report definition looks like as JSON.

Open the console

Everything above happens in one place. Sign in and work through step 1.