The Click Log is the per-click reference — one row per recorded click, every attribution and engagement column queryable. Use it for debugging ("why did this click route to that variant?"), investigating individual conversions, or exporting raw data.
For aggregate metrics (totals, averages, conversion rates), use Reports instead.
Layout
The Click Log shows recent clicks with selected columns. By default you see:
- Timestamp — when the click was recorded.
- Slug — the link's slug.
- Channel — derived classification: Direct, Paid Search, Paid Social, Email, Referral, etc.
- Country, City — geo-IP enrichment.
- Device — desktop / mobile / tablet.
- UTM Source, Campaign — captured from the click URL.
- Has Attention / Has Interest / Has Desire — AIDA flags.
- Time on Page, Scroll — engagement metrics.
- Cost, Revenue, Conversions — money flow.
Click any column header to sort. Click a row to expand and see all columns for that click.
Filtering
Use the filter bar at the top to narrow down the result set.
Filter operators match the rule-engine operators (see Paths and Rules):
is, is not
contains, does not contain
matches (regex)
in, not in
>, < (for numeric / date columns)
Multiple filters AND together. Save common filter sets as views for quick recall.
Column Reference
Every column the Click Log can display. Many are hidden by default — toggle visibility from the column picker.
Identity
| Column | Description |
|---|
id | Click UUID — uniquely identifies this click |
timestamp | When recorded (UTC) |
link_id | Internal link UUID |
slug | The link's slug |
tenant_id | Your sub-account ID (white-label installs) |
session_id | Hash of IP + User-Agent — used to dedupe unique clicks per visitor |
is_unique | true if this is the first click in the session for this link |
Attribution: Channel
| Column | Description |
|---|
channel | Computed marketing channel: Direct, Paid Search, Paid Social, Organic Search, Organic Social, Email, Referral, Display, Affiliate |
The channel is derived from UTMs + click ID + referrer at click time. Not user-editable.
Attribution: UTM
| Column | Description |
|---|
utm_source | Where the click came from (e.g. facebook, google) |
utm_medium | Marketing medium (e.g. cpc, email, social) |
utm_campaign | Campaign name |
utm_content | Content variant identifier |
utm_term | Search keyword (paid search) |
utm_id | Campaign ID |
Attribution: Click IDs
| Column | Description |
|---|
click_id (column) | The platform's click ID (gclid, fbclid, etc.) — note: this is the AD-PLATFORM click_id, distinct from id (our click UUID) |
click_id_type | The parameter name that carried the click ID (gclid, fbclid, etc.) |
click_id_platform | The classified platform: google_ads, meta, microsoft_ads, tiktok_ads, etc. |
Attribution: Referrer
| Column | Description |
|---|
referrer_url | Full HTTP Referer header value |
referrer_domain | Just the hostname extracted from the referrer |
Source-Mapped Variables
| Column | Description |
|---|
external_id | Source-mapped: usually the platform's primary ID (gclid, fbclid). Set via Sources. |
source_id | Internal source UUID (the link's configured source) |
v1 through v10 | Custom variables — Tokens 1-10 from the source's parameter mappings |
Geo (from MaxMind GeoLite2)
| Column | Description |
|---|
country_code | ISO-3166 alpha-2 (e.g. US) |
country_name | Full name |
country_tier | Advertising tier classification: tier1 (US/CA/UK/major EU), tier2 (LATAM/E. Europe), tier3 (developing markets), tier4 (other) |
region_code | ISO-3166-2 region/state (e.g. CA for California) |
region_name | Full region name |
city | City |
postal_code | Postal/ZIP |
timezone | IANA timezone (e.g. America/Los_Angeles) |
latitude, longitude | Coordinates |
Device
| Column | Description |
|---|
device_type | desktop, mobile, tablet, unknown |
device_brand | Apple, Samsung, Google, etc. |
device_model | iPhone 15, Galaxy S23, etc. |
os_name | iOS, Android, Windows, macOS, Linux |
os_version | OS version string |
browser_name | Chrome, Safari, Firefox, Edge |
browser_version | Browser version string |
is_bot | true if classified as a bot |
bot_name | Specific bot identification (Googlebot, Bingbot) |
bot_category | search engine, crawler, monitoring, etc. |
Network
| Column | Description |
|---|
isp | ISP / autonomous system organization |
asn | AS number |
connection_type | wifi, cellular, cable, dsl, fiber, corporate, datacenter, unknown |
is_proxy, is_vpn, is_tor, is_datacenter | Boolean flags |
ip_address | The visitor's IP (stored as INET) |
ip_hash | SHA256 hash of the IP — for privacy-friendly deduplication |
Language
| Column | Description |
|---|
accept_language | Raw HTTP Accept-Language header |
language_code | Primary language ISO code (en, es) |
language_name | Full language name |
Request
| Column | Description |
|---|
user_agent | Full UA string |
Destination
| Column | Description |
|---|
destination_url | Where the visitor was redirected |
redirect_mode | 301, 302, or client_pixel (for direct-arrival LP-pixel clicks) |
AIDA Engagement
| Column | Description |
|---|
has_attention | Boolean — visitor showed attention signals (≥3s active + visible + 1 input) |
has_interest | Boolean — engagement progressed to interest tier |
has_desire | Boolean — engagement progressed to desire tier |
time_on_page | Active seconds (only counts when page was visible/focused/recent input) |
scroll_depth | Max % of page scrolled |
See Tracking Pixel for how these flags are computed.
Cost / Revenue
| Column | Description |
|---|
cost | Per-click cost (from link config or source's mapped Cost parameter) |
cost_currency | ISO currency for cost |
revenue | Total revenue from conversions on this click (sum across all conversions) |
revenue_currency | ISO currency for revenue |
conversions_count | Number of conversions tied to this click |
first_conversion_at | Timestamp of the first conversion |
time_to_conversion | Seconds between click and first conversion |
| Column | Description |
|---|
created_at | When the row was inserted |
updated_at | When the row was last updated (e.g. by AIDA beacon or conversion) |
Common Investigations
"Why did this click go to Variant B instead of A?"
- Find the click in the log (search by
id or by timestamp range).
- Expand the row → check
destination_url.
- Look at fields that drive routing:
country_code, device_type, utm_source, v1-v10.
- Cross-reference with the link's Paths and Rules. The first matching rule (highest priority) determined the destination.
- If no rule matched, the link's default paths + Distribution Type controlled the pick.
"Did this conversion get attributed to the right click?"
- Get the
click_id from your conversion record (or thank-you page logs).
- Find the click row.
- Check
revenue, conversions_count, first_conversion_at. They should reflect the conversion.
- If they don't update, check that the conversion pixel actually fired — see Conversion Pixel troubleshooting.
"Where is my expected click?"
If you clicked a link but don't see the row:
- Check timestamp range — clicks may take a few seconds to appear.
- Confirm the slug matches your link.
- For tracking-pixel clicks (no
/c/ redirect), the click is recorded asynchronously by the worker — typically lands within 1 second but can take up to 30 seconds under heavy load.
- If still missing, the link may have been disabled or deleted before the click — those clicks aren't recorded.
"Why is this click classified as a bot?"
- Expand the row, check
is_bot, bot_name, bot_category.
- Bot detection uses User-Agent matching against Matomo's device-detector signature library — same library that handles
device_type.
- If a real visitor was misclassified, the issue is in their browser's UA string. Real-but-rare UAs occasionally false-positive.
Exporting
The Click Log supports CSV/JSON export of the current filtered set:
- Click Export in the toolbar.
- Pick CSV or JSON.
- The export respects current filters and visible columns.
- Limit: 100,000 rows per export. For larger datasets, narrow the filter.
Next Steps
- Reports — Aggregate metrics across many clicks
- Sources — Configure parameter mappings to populate
v1-v10
- Paths and Rules — Understand which rule routed a given click
- Tracking Pixel — How engagement columns are populated