Skip to main content

Click Log

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

ColumnDescription
idClick UUID — uniquely identifies this click
timestampWhen recorded (UTC)
link_idInternal link UUID
slugThe link's slug
tenant_idYour sub-account ID (white-label installs)
session_idHash of IP + User-Agent — used to dedupe unique clicks per visitor
is_uniquetrue if this is the first click in the session for this link

Attribution: Channel

ColumnDescription
channelComputed 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

ColumnDescription
utm_sourceWhere the click came from (e.g. facebook, google)
utm_mediumMarketing medium (e.g. cpc, email, social)
utm_campaignCampaign name
utm_contentContent variant identifier
utm_termSearch keyword (paid search)
utm_idCampaign ID

Attribution: Click IDs

ColumnDescription
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_typeThe parameter name that carried the click ID (gclid, fbclid, etc.)
click_id_platformThe classified platform: google_ads, meta, microsoft_ads, tiktok_ads, etc.

Attribution: Referrer

ColumnDescription
referrer_urlFull HTTP Referer header value
referrer_domainJust the hostname extracted from the referrer

Source-Mapped Variables

ColumnDescription
external_idSource-mapped: usually the platform's primary ID (gclid, fbclid). Set via Sources.
source_idInternal source UUID (the link's configured source)
v1 through v10Custom variables — Tokens 1-10 from the source's parameter mappings

Geo (from MaxMind GeoLite2)

ColumnDescription
country_codeISO-3166 alpha-2 (e.g. US)
country_nameFull name
country_tierAdvertising tier classification: tier1 (US/CA/UK/major EU), tier2 (LATAM/E. Europe), tier3 (developing markets), tier4 (other)
region_codeISO-3166-2 region/state (e.g. CA for California)
region_nameFull region name
cityCity
postal_codePostal/ZIP
timezoneIANA timezone (e.g. America/Los_Angeles)
latitude, longitudeCoordinates

Device

ColumnDescription
device_typedesktop, mobile, tablet, unknown
device_brandApple, Samsung, Google, etc.
device_modeliPhone 15, Galaxy S23, etc.
os_nameiOS, Android, Windows, macOS, Linux
os_versionOS version string
browser_nameChrome, Safari, Firefox, Edge
browser_versionBrowser version string
is_bottrue if classified as a bot
bot_nameSpecific bot identification (Googlebot, Bingbot)
bot_categorysearch engine, crawler, monitoring, etc.

Network

ColumnDescription
ispISP / autonomous system organization
asnAS number
connection_typewifi, cellular, cable, dsl, fiber, corporate, datacenter, unknown
is_proxy, is_vpn, is_tor, is_datacenterBoolean flags
ip_addressThe visitor's IP (stored as INET)
ip_hashSHA256 hash of the IP — for privacy-friendly deduplication

Language

ColumnDescription
accept_languageRaw HTTP Accept-Language header
language_codePrimary language ISO code (en, es)
language_nameFull language name

Request

ColumnDescription
user_agentFull UA string

Destination

ColumnDescription
destination_urlWhere the visitor was redirected
redirect_mode301, 302, or client_pixel (for direct-arrival LP-pixel clicks)

AIDA Engagement

ColumnDescription
has_attentionBoolean — visitor showed attention signals (≥3s active + visible + 1 input)
has_interestBoolean — engagement progressed to interest tier
has_desireBoolean — engagement progressed to desire tier
time_on_pageActive seconds (only counts when page was visible/focused/recent input)
scroll_depthMax % of page scrolled

See Tracking Pixel for how these flags are computed.

Cost / Revenue

ColumnDescription
costPer-click cost (from link config or source's mapped Cost parameter)
cost_currencyISO currency for cost
revenueTotal revenue from conversions on this click (sum across all conversions)
revenue_currencyISO currency for revenue
conversions_countNumber of conversions tied to this click
first_conversion_atTimestamp of the first conversion
time_to_conversionSeconds between click and first conversion

Metadata

ColumnDescription
created_atWhen the row was inserted
updated_atWhen 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?"

  1. Find the click in the log (search by id or by timestamp range).
  2. Expand the row → check destination_url.
  3. Look at fields that drive routing: country_code, device_type, utm_source, v1-v10.
  4. Cross-reference with the link's Paths and Rules. The first matching rule (highest priority) determined the destination.
  5. If no rule matched, the link's default paths + Distribution Type controlled the pick.

"Did this conversion get attributed to the right click?"

  1. Get the click_id from your conversion record (or thank-you page logs).
  2. Find the click row.
  3. Check revenue, conversions_count, first_conversion_at. They should reflect the conversion.
  4. 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:

  1. Check timestamp range — clicks may take a few seconds to appear.
  2. Confirm the slug matches your link.
  3. 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.
  4. 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?"

  1. Expand the row, check is_bot, bot_name, bot_category.
  2. Bot detection uses User-Agent matching against Matomo's device-detector signature library — same library that handles device_type.
  3. 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