Skip to content
GDPR compliant. Hosted in DE.
14-day free trial →

Quickstart

From registration to first scan result in 5 minutes. This guide walks you through account creation, adding your first website, domain verification and installing the tracker. If you look after several websites, you finally organise them in website groups.

# 1. Registration

Registration is free and requires no credit card. You start automatically on the Free plan (1 website, 5-min interval). When subscribing to a paid plan (Starter/Business/Agency), Stripe applies a 14-day trial — cancellable before expiry with no charge. Sign-up takes under a minute — classic email + password (min. 10 characters) or OAuth with Google. Apple and Microsoft are implemented but not yet enabled.

Create account
Free plan: 1 website, no credit card.
or
demo@xictraq.com
••••••••••••
The registration page. 1-click login with Google — or classic email signup.
Multilingual dashboard
The dashboard is available in German and English. The language follows your browser setting and can be switched at any time in the top right of the app header.
Login options in detail
  • Passkey (WebAuthn) — passwordless login via fingerprint / Face ID, natively supported
  • 2FA (TOTP) — enable under Settings → Security, recommended for Business/Agency accounts
  • OAuth with Google — 1-click signup with an existing account (Apple and Microsoft not yet enabled)
  • Account + all data deletable any time under Settings → Profile

# 2. Onboarding wizard

The “Getting started” card on the dashboard opens the wizard, which walks you through four steps of initial setup — every step is skippable.

  1. 1
    Enter your website URL
    For example https://www.example.com (name optional). The website is created immediately; redirects are resolved to the final canonical URL.
  2. 2
    Verify the domain, then the first scan
    The wizard shows the three ways to verify the domain (DNS TXT record, meta tag or HTML file). After “Check now” it runs a live scan and shows four results: reachability with response time, SSL certificate with remaining validity, security score and performance score (each 0–100). “Verify later” moves on without a scan; the instructions then stay on the website page. If part of the scan fails, the website stays added — the next automatic scan refreshes the values.
  3. 3
    Choose notification channels
    Email is the default; without a separate address alerts go to the account address. Slack, Microsoft Teams, Discord, Telegram and webhook are set up under Settings › Notifications.
  4. 4
    Invite your team (optional)
    Enter colleague email addresses — they receive an invitation with access to the same account. Invitations are sent only via “Send invitations”; “Go to dashboard without inviting” discards the entered addresses. Continuous monitoring starts once the domain is verified.
Getting started / progress (live)
View in demo account →
Onboarding progress: completed and open setup steps.

# 3. Add your first website

After onboarding, use the “+ Website” button to add more domains. Once the domain is verified, all modules start with their first scan.

Dashboard → Websites → + Add
View in demo account →
New website
6 of 10 slots used (Business plan)
XICTRAQ Marketing
https://www.xictraq.com
30s
1m
2m
5m
10m
1h
Available intervals: 30 s (Agency only) / 1 min (Starter+) / 2 min / 5 min / 10 min / 1 h. Free plan clamped to 5 min minimum.
All monitoring checks (uptime, SSL, security headers, DNS, Lighthouse, screenshots, SEO, compliance) run automatically — no module selection on creation.
When adding, you choose display name and check interval. All monitoring modules are configured automatically — no per-module selection needed; they begin once the domain is verified in the next step.
Quick scan without verification
For an immediate snapshot (SSL, security, SEO, privacy, tech, AI bot matrix) use /app/scan on any website — no need to add or verify it for permanent monitoring. Alternatively, free standalone tools are available: Security header score and SSL/TLS inspector.

# 4. Domain verification

To make sure you only monitor your own domains, XICTRAQ verifies ownership. Three methods are available — you only need one. Token and instructions are shown by the yellow notice at the top of the website page as long as the domain is not confirmed. Click “Verify now” to run an immediate verification.

Method 1: DNS TXT record (recommended with DNS control)
Add a TXT record on the root domain at your DNS provider.
example.com TXT "xictraq-verify=8f3a2c91b7e4d5a8c5e1f9b6d2a7c403"
2
Method 2: HTML meta tag (for CMS users without DNS access)
Paste this tag into the <head> of your homepage.
<meta name="xictraq-verify" content="8f3a2c91b7e4d5a8c5e1f9b6d2a7c403">
3
Method 3: File upload
Upload an empty HTML file with the token in the filename to the web root of your domain.
/xictraq-verify-8f3a2c91b7e4d5a8c5e1f9b6d2a7c403.html
Verification dialog with three methods. Clicking “Check” runs an immediate verification.

Method 1: DNS TXT record

When you click “Check”, XICTRAQ queries your TXT records live — both on the root domain (without www) and on the host you entered — looking for the xictraq-verify=<token> entry. Nothing is cached, so a freshly set record is recognised without waiting on TTL caches (once your DNS provider has propagated it). Recommended if you control your own DNS zone.

Method 2: HTML meta tag

XICTRAQ fetches your homepage URL (following up to 3 redirects) and searches the HTML for <meta name="xictraq-verify" content="<token>">. Handy for CMS users without DNS access — many systems offer a field for verification meta tags. Connections that resolve to an internal address are discarded server-side (protection against DNS rebinding).

Method 3: File upload

Upload a file named xictraq-verify-<token>.html to your web root whose content includes the token. XICTRAQ requests it at https://your-domain/xictraq-verify-<token>.html and verifies on HTTP 200 plus the token in the body. The fallback when neither DNS nor a meta tag is an option.

Verification unlocks monitoring
Continuous monitoring (uptime, SSL, security checks, scans) only starts once you have verified domain ownership — unverified websites are skipped by the monitoring. Verification is also required for: tracker install, custom-domain status pages, write-access API keys. For an immediate snapshot without verification, use the quick-scan tools (see the note further up).

# 5. Install the tracker (for analytics)

To use analytics, form/media events or session recording, add a single script tag to the <head>. The snippet is under 30 KB compressed, loads asynchronously (defer) and works without cookies — so usually no cookie-banner requirement (assess case by case). Forms/media/recording/consent-gate are configured server-side (Analytics → Website → Settings).

Analytics → Website → Copy snippet
View in demo account →
Tracker snippet
<script defer src="https://api.xictraq.com/t.js" data-site="019d7cb5-aea5-71d4-b5a7-26d014cdb08a"></script>
<noscript><img src="https://api.xictraq.com/api/px?s=019d7cb5-aea5-71d4-b5a7-26d014cdb08a" alt="" width="1" height="1" style="position:absolute;left:-9999px" referrerpolicy="no-referrer-when-downgrade"></noscript>
The second line (<noscript>) is a pixel fallback for visitors and bots without JavaScript: it loads an invisible 1×1 pixel and is captured separately as the “Pixel” source (machine traffic). These hits do not count towards your human figures and only appear under the “Incl. bots” filter. Use the same data-site ID as the tracker.
Recommended for maximum security: in the dashboard you get the snippet incl. integrity hash (SRI) for the versioned tracker (t.v{N}.js). The browser verifies the file on load.
Optional second attribute: data-record="1" force-enables session recording for this visitor (e.g. behind a consent gate). All other features (forms, media, heatmap, Web Vitals, consent gate, sampling) come from server config.
One snippet per website. The data-site ID identifies the site. All features are configured in the dashboard — the snippet itself stays unchanged.

Optional: serve the tracker from your own domain (first-party proxy)

The default snippet loads t.js from api.xictraq.com — content blockers can block that domain. To avoid this, add three nginx rules on your own domain: /t.js serves the tracker, /a/ receives measurements and the pixel fallback, /rx.js serves the recording library if you use session recording. The browser then only ever talks to your own domain. In Plesk the rules go under Websites & Domains › Apache & nginx Settings in the “Additional nginx directives” field; via Apache or .htaccess, proxying to an external host is usually not possible. The app also offers the block for copying under Analytics → Website → Snippet → “Own domain”.

# Tracker script (exact location, no regex rule intercepts it)
location = /t.js {
    proxy_pass            https://api.xictraq.com/t.js;
    proxy_set_header      Host api.xictraq.com;
    proxy_ssl_server_name on;
    proxy_ssl_name        api.xictraq.com;
    proxy_http_version    1.1;
    proxy_set_header      Connection "";
    proxy_connect_timeout 5s;
    proxy_read_timeout    10s;
    # otherwise the HSTS policy of api.xictraq.com would apply to your host and its subdomains
    proxy_hide_header     Strict-Transport-Security;
}
# Data collection /a/p … and pixel fallback /a/px; the slash after /a is required
location ^~ /a/ {
    proxy_pass            https://api.xictraq.com/api/;
    proxy_set_header      Host api.xictraq.com;
    # overwrite instead of append: exactly the address your server sees
    proxy_set_header      X-Forwarded-For $remote_addr;
    proxy_set_header      X-Real-IP $remote_addr;
    proxy_set_header      X-Forwarded-Proto $scheme;
    proxy_ssl_server_name on;
    proxy_ssl_name        api.xictraq.com;
    proxy_http_version    1.1;
    proxy_set_header      Connection "";
    # session recording packets can exceed 1 MB
    client_max_body_size  20m;
    proxy_connect_timeout 5s;
    proxy_read_timeout    30s;
    proxy_hide_header     Strict-Transport-Security;
}
# Recording library, only needed with session recording
location = /rx.js {
    proxy_pass            https://api.xictraq.com/rx.js;
    proxy_set_header      Host api.xictraq.com;
    proxy_ssl_server_name on;
    proxy_ssl_name        api.xictraq.com;
    proxy_http_version    1.1;
    proxy_set_header      Connection "";
    proxy_connect_timeout 5s;
    proxy_read_timeout    10s;
    # otherwise the HSTS policy of api.xictraq.com would apply to your host and its subdomains
    proxy_hide_header     Strict-Transport-Security;
}
  • proxy_ssl_server_name and proxy_ssl_name: nginx sends the name api.xictraq.com in the TLS handshake. Without it the other side answers with a certificate for a different name.
  • proxy_hide_header Strict-Transport-Security: api.xictraq.com sends HSTS with includeSubDomains and preload. Through the proxy that policy would reach the host of your shop, and browsers would enforce HTTPS for a year on it and all its subdomains, including ones without a certificate. Your own HSTS policy is not affected.
  • X-Forwarded-For $remote_addr: the header is overwritten instead of extended. XICTRAQ receives exactly the address your server sees and nothing a browser sends on its own. If another proxy (CDN, load balancer) sits in front of your nginx, $remote_addr must already hold the visitor address there (nginx realip module). Otherwise XICTRAQ sees the address of that front server on every visit, and location and visitor counts are wrong.
  • client_max_body_size 20m: without this line nginx accepts at most 1 MB per request. Session recording packets can be larger and would then receive HTTP 413.
  • Timeouts of 5 s for connecting, 10 s for scripts and 30 s for data collection instead of the nginx default of 60 s: a deferred script holds back DOMContentLoaded while it loads. During a disruption no visitor waits a full minute.
  • location ^~ /a/ with trailing slash: ^~ keeps regex rules such as image serving for .gif away, and the slash separates the measurement endpoints from paths such as /account or /agb.
  • If your server sets its own security headers via add_header at server level, nginx inherits them into these blocks; headers of the same name from api.xictraq.com (such as X-Content-Type-Options or Cross-Origin-Resource-Policy) then arrive twice. In that case hide them with proxy_hide_header as well.

The snippet then points at your own domain — data-api="/a" routes data collection there as well:

<script defer src="/t.js"
        data-site="019d7cb5-aea5-71d4-b5a7-26d014cdb08a"
        data-api="/a"></script>
<noscript><img src="/a/px?s=019d7cb5-aea5-71d4-b5a7-26d014cdb08a" alt="" width="1" height="1" style="position:absolute;left:-9999px" referrerpolicy="no-referrer-when-downgrade"></noscript>

Embed the pixel extensionless as /a/px, not as /a/p.gif — the .gif extension is intercepted by static image serving before the proxy (404). In this mode the snippet carries no integrity attribute: the proxy maps /t.js, the continuously updated file whose checksum changes with every tracker release; SRI belongs to the versioned t.v{N}.js. In the dashboard you switch between both variants under Analytics → Website → Snippet. What the proxy does against adblockers and for the pixel fallback is covered in the analytics documentation.

First data within 60 seconds
As soon as the snippet is live on your site, you see the first pageviews in “Analytics” within a minute. Even just visiting two pages yourself is enough to test.

# 6. Your first dashboard tour

After the first scans you see a traffic-light overview of all websites. Clicking a website opens the detail view with every module as a tab.

Websites (live)
View in demo account →
Security score (live)
View in demo account →

# Website groups

Groups organise your websites, for example by client, project or location. The website selection in analytics, in card settings and when assigning websites is structured by group, and a group combines the values of its websites. A website can be in several groups. Groups do not grant access: team members see all websites of the account, client and agency access is limited per website.

  1. 1
    Create a group
    In the websites overview via “New group”, or in analytics in the website selection via “+ New group”. Enter a name, tick websites, save. Without a website you get an empty group that you can fill later.
  2. 2
    Edit a group
    The pencil on the group header in the websites overview, or next to the group in the analytics selection, opens “Edit group”: change the name, tick or untick websites.
  3. 3
    Assign websites to groups
    Select several websites in the overview and choose “Assign groups”, or use “Assign groups” on a website’s page. One tick per group; a partial tick means only some of the selected websites are in it, and it stays unchanged until you click it. In the same dialog you can create a new group with these websites.
  4. 4
    Delete a group
    In “Edit group” via “Delete group”. The websites stay, only the group is removed. A dashboard card whose scope was this group then shows a notice.

“By group” view with group values

As soon as groups exist, the websites overview shows one collapsible section per group and, at the end, the websites without a group; the “By group” switch changes to the plain list. Depending on the window width, the group header shows the group values: websites per state (online, down, maintenance, unmeasured), average uptime of the last 30 days, average security grade and the next SSL expiry. Averages only include websites with a measurement.

Group overview in analytics

In the analytics website selection every group has an entry “Group overview”: the analysis then shows the combined values of all websites in the group. The “Group overview” link on the group header in the websites overview leads straight there.

Group as a card scope

In a dashboard card’s settings you choose a group under “Website scope”; the card then evaluates the websites of that group. Cards that evaluate a single website only use groups to structure the list. If the group was deleted or is empty, the card says so.

Team, agency and client portal

Team members see the groups of the account they belong to. They may change or delete these groups with the role admin or editor; with the role viewer they are read only. A new group always belongs to the account you are signed in with. Agency accesses and clients in the client portal see only their own groups, not the owner’s. You grant their access per website, when inviting or later via “Assign websites”: for clients on the Client Portal page, for agencies in the settings under agency access. A client without a selection sees no website, an agency access without a selection covers all websites, including future ones. In the selection a group can be ticked as a whole; this takes over the websites that are in it at that moment. Later changes to the group do not change any access.

Rules for groups
Groups are sorted alphabetically by name. A group name is unique per account, regardless of upper and lower case, and at most 100 characters long. A group may be empty.

Frequently asked questions

No. The Uptime, SSL, Security, DNS, Performance, Screenshots and Compliance modules run purely external and need no code changes. Only Analytics, Forms, Media and Session Recording require pasting the snippet — copy & paste into the <head>.
Start in 60 seconds

Let XICTRAQ watch your website.

Permanent free plan available. No credit card, no installation, no hidden fees.