Data Dictionary
← Web traffic
79
Concepts
9
categories
366
Documented Columns
42
tables and views
76
Source Columns Changed
100
source and seed columns
0
Conflicting Definitions
0
5
10
15
20
Bot classification
Traffic shares
Sessions
Traffic
Hits
Audience
Lineage
Pages and referrers
Services
Concepts by Category
Number of concepts in each category
0
20
40
60
80
Renamed
Unchanged
Source quirk declared
Cast to a new type
From Source to Concept
How raw input columns change on the way to their final form; a column can change in more than
one way
Services
The tracked websites
Concept
Definition
Type
Origin
Comes From
Source to Final
Used In
service_id
Identifier of the tracked website
varchar
Source
daily_browsers.service_uuid,
daily_countries.service_uuid,
daily_device_types.service_uuid,
daily_devices.service_uuid,
daily_locations.service_uuid,
daily_operating_systems.service_uuid,
daily_referrers.service_uuid,
daily_stats.service_uuid, hits.service_id,
hourly_stats.service_uuid, services.uuid,
sessions.service_id
renamed from uuid; renamed from service_uuid
staging, intermediate, marts
(27 models)
service_name
Name of the tracked website
varchar
Source
services.name
renamed from name
staging, marts (2 models)
service_url
Address of the tracked website; null if not set
varchar
Source
services.link
renamed from link; source: The service's website,
as entered in Shynet; an empty string if none is set
staging, marts (2 models)
Traffic
Daily and hourly visits, page views and averages
Concept
Definition
Type
Origin
Comes From
Source to Final
Used In
avg_hits_per_session
Average number of page views per session;
null on a day without sessions
double
Source
daily_stats.avg_hits_per_session
Unchanged
staging, marts (2 models)
avg_load_time_ms
Average page load time in milliseconds; null
when no page view measured one
double
Source
daily_stats.avg_load_time
renamed from avg_load_time
staging, marts (2 models)
avg_session_seconds
Average session length in seconds; null on a
day without sessions
double
Source
daily_stats.avg_session_duration
renamed from avg_session_duration; source:
Mean session duration in seconds; null when there
were no sessions. The API returns an ISO 8601
duration (e.g. P0DT00H01M30.5S), which the
pipeline converts to seconds.
staging, marts (2 models)
bounce_rate
Fraction of the day's sessions that viewed only
one page; null on a day without sessions
double
Source
daily_stats.bounce_rate_pct
renamed from bounce_rate_pct; source:
Percentage (0-100) of the day's sessions with
exactly one hit; null when there were no sessions
staging, marts (2 models)
hit_count
Number of page views in the row's day or hour,
within the row's page if it has one
bigint
Source
daily_locations.count,
daily_stats.hit_count,
hourly_stats.hit_count
renamed from count
staging, marts (5 models)
session_count
Number of sessions that started in the row's
day or hour, within the row's breakdown if it
has one
bigint
Source
daily_browsers.count,
daily_countries.count,
daily_device_types.count,
daily_devices.count,
daily_operating_systems.count,
daily_stats.session_count,
hourly_stats.session_count
renamed from count
staging, marts (10 models)
traffic_date
Calendar day of the traffic, in the reporting time
zone
date
Source
daily_browsers.date,
daily_countries.date,
daily_device_types.date,
daily_devices.date, daily_locations.date,
daily_operating_systems.date,
daily_referrers.date, daily_stats.date,
hourly_stats.date
renamed from date
staging, marts (14 models)
traffic_hour
Start of the hour of the traffic, in the reporting
time zone
timestamp with
time zone
Source
hourly_stats.hour
renamed from hour
staging, marts (2 models)
Pages and Referrers
Which pages were hit, and where visits came from
Concept
Definition
Type
Origin
Comes From
Source to Final
Used In
page_location
Address of the page viewed; null if unknown
varchar
Source
daily_locations.location, hits.location
renamed from location; source: Full URL of the
page hit, as the browser reported it; an empty
string if unknown
staging, marts (3 models)
referral_count
Number of sessions the referring site started in
the day
bigint
Source
daily_referrers.count
renamed from count
staging (1 model)
referrer_url
Address of the site that sent the visitor at the
start of the session; null for a direct visit
varchar
Source
daily_referrers.referrer
renamed from referrer; source: URL that referred
the visitor at the start of a session; an empty string
for direct visits
staging, intermediate, marts (3
models)
Audience
Where visitors are and what they browse with
Concept
Definition
Type
Origin
Comes From
Source to Final
Used In
browser
Visitor's browser
varchar
Source
daily_browsers.browser,
sessions.browser
Unchanged
staging, intermediate, marts (4
models)
device
Visitor's device model, where it can be
identified
varchar
Source
daily_devices.device, sessions.device
Unchanged
staging, intermediate, marts (4
models)
device_type
Kind of device the visitor used
varchar
Source
daily_device_types.device_type,
sessions.device_type
Unchanged
staging, intermediate, marts (4
models)
operating_system
Visitor's operating system
varchar
Source
daily_operating_systems.os, sessions.os
renamed from os
staging, intermediate, marts (4
models)
visitor_country
Country of the visitor's network; null if unknown
varchar
Source
daily_countries.country,
sessions.country
renamed from country; source: ISO 3166-1 alpha-2
country code from GeoIP; an empty string if
unknown
staging, intermediate, marts (4
models)
Sessions
One visitor's visit to one website
Concept
Definition
Type
Origin
Comes From
Source to Final
Used In
asn_organization
Organisation that runs the visitor's network,
whether an internet provider or a hosting
company; null if unknown
varchar
Source
sessions.asn
renamed from asn; source: Organisation owning
the network of the session's IP address (MaxMind
GeoLite2 ASN); an empty string if unknown
staging, intermediate, marts (3
models)
is_bounce
Whether the session viewed only one page
boolean
Source
sessions.is_bounce
Unchanged
staging, intermediate, marts (3
models)
landing_page_location
Address of the first page viewed in the session;
null if unknown
varchar
Derived
calculated in
int_shynet_db__session_activity
Derived from other concepts
intermediate, marts (2 models)
pixel_hit_count
Number of the session's page views where the
page's script didn't run
bigint
Derived
calculated in
int_shynet_db__session_activity
Derived from other concepts
intermediate, marts (2 models)
session_duration_seconds
Length of the session in seconds, from its first
page view to its last activity. Only time with the
page visible counts.
double
Derived
calculated in
int_shynet_db__session_activity
Derived from other concepts
intermediate, marts (2 models)
session_heartbeat_count
How long the session's pages were visible, in
5-second intervals
bigint
Derived
calculated in
int_shynet_db__session_activity
Derived from other concepts
intermediate, marts (2 models)
session_hit_count
Number of page views in the session
bigint
Derived
calculated in
int_shynet_db__session_activity
Derived from other concepts
intermediate, marts (2 models)
session_id
Identifier of the session: one visitor's visit to
one website. A visit ends after 30 minutes
without activity, so a returning visitor starts a
new session.
varchar
Source
hits.session_id, sessions.uuid
renamed from uuid
staging, intermediate, marts (6
models)
session_last_seen_at
When the session was last active
timestamp with
time zone
Source
sessions.last_seen
renamed from last_seen
staging, intermediate, marts (3
models)
session_started_at
When the session started
timestamp with
time zone
Source
sessions.start_time
renamed from start_time
staging, intermediate, marts (3
models)
user_agent
Text the visitor's browser sends to identify
itself. Any client can claim to be any browser.
varchar
Source
sessions.user_agent
Unchanged
staging, intermediate, marts (3
models)
visitor_time_zone
Time zone of the visitor's location; null if
unknown
varchar
Source
sessions.time_zone
renamed from time_zone; source: IANA time zone
of the session's IP location (MaxMind GeoIP); an
empty string if unknown
staging, intermediate, marts (3
models)
Hits
One page view
Concept
Definition
Type
Origin
Comes From
Source to Final
Used In
heartbeat_count
How long the page was visible, in 5-second
intervals; zero when it couldn't be measured
bigint
Source
hits.heartbeats
renamed from heartbeats
staging, marts (2 models)
hit_id
Identifier of the page view
bigint
Source
hits.id
renamed from id
staging, marts (2 models)
hit_last_seen_at
When the page view was last active
timestamp with
time zone
Source
hits.last_seen
renamed from last_seen
staging, marts (2 models)
hit_referrer_url
Address of the page the visitor came from; null
if none
varchar
Source
hits.referrer
renamed from referrer; source: The page's
referrer, as the browser reported it; an empty
string if none was sent
staging, marts (2 models)
hit_started_at
When the page view started
timestamp with
time zone
Source
hits.start_time
renamed from start_time
staging, marts (2 models)
is_initial_hit
Whether the page view was the first of its
session
boolean
Source
hits.initial
renamed from initial
staging, marts (2 models)
load_time_ms
Page load time in milliseconds; null when it
couldn't be measured
double
Source
hits.load_time
renamed from load_time
staging, marts (2 models)
tracker_type
How the page view was recorded: by the
page's script, or by a fallback when the script
didn't run
varchar
Source
hits.tracker
renamed from tracker
staging, marts (2 models)
Bot Classification
How visits are classed as human or bot, and the limits of that
Concept
Definition
Type
Origin
Comes From
Source to Final
Used In
asn_pattern
Pattern that recognises a hosting, VPN or other
non-residential network by its operator's name
varchar
Seed
hosting_network_patterns.asn_pattern
Unchanged
intermediate (1 model)
asn_pattern_note
What the network is
varchar
Seed
hosting_network_patterns.asn_pattern_
note
Unchanged
intermediate (1 model)
asn_pattern_source
Where a network pattern comes from: seen in
the data, or a known provider not yet seen
varchar
Seed
hosting_network_patterns.asn_pattern_
source
Unchanged
intermediate (1 model)
bot_category
What a declared bot says it's for; null if the
session isn't a declared bot. Taken at the bot's
word, so an impostor gets the category of the
bot it imitates.
varchar
Seed
bot_user_agent_patterns.bot_category
Unchanged
intermediate, marts (3 models)
bot_signals
Signs of automation found in the session,
strongest first; null if none
varchar
Derived
calculated in fct_sessions
Derived from other concepts
marts (1 model)
is_burst_session
Whether three or more sessions from an
identical browser and network started within 10
minutes of each other on the same website. A
moderate sign of a crawler fleet; an office or
campus network can look the same.
boolean
Derived
calculated in
int_shynet_db__session_bot_signals
Derived from other concepts
intermediate, marts (2 models)
is_declared_bot
Whether the visitor says it's a bot. Reliable, but
misses bots that pose as browsers.
boolean
Derived
calculated in
int_shynet_db__session_bot_signals
Derived from other concepts
intermediate, marts (2 models)
is_development_session
Whether the session viewed a local
development copy of the website rather than
the live site
boolean
Derived
calculated in
int_shynet_db__session_activity
Derived from other concepts
intermediate, marts (2 models)
is_hosting_network
Whether the session came from a hosting, VPN
or similar network. A moderate sign of
automation: people use VPNs and office
networks too.
boolean
Derived
calculated in
int_shynet_db__session_bot_signals
Derived from other concepts
intermediate, marts (2 models)
is_malformed_user_agent
Whether the text the browser sends to identify
itself is missing or incomplete. A strong sign of
automation, though some privacy tools strip it.
boolean
Derived
calculated in
int_shynet_db__session_bot_signals
Derived from other concepts
intermediate, marts (2 models)
is_no_engagement
Whether the session was a single page closed
or hidden within 5 seconds. A weak sign on its
own, as many people leave that quickly.
boolean
Derived
calculated in
int_shynet_db__session_bot_signals
Derived from other concepts
intermediate, marts (2 models)
is_outdated_browser
Whether the browser claims to be more than
about a year out of date. A strong sign of
automation, as browsers update themselves;
some managed and regional browsers also lag.
Only Chrome-based browsers are checked.
boolean
Derived
calculated in
int_shynet_db__session_bot_signals
Derived from other concepts
intermediate, marts (2 models)
is_pixel_only
Whether no page in the session ran its script. A
strong sign of automation, though people who
turn scripts off look the same.
boolean
Derived
calculated in
int_shynet_db__session_bot_signals
Derived from other concepts
intermediate, marts (2 models)
network_category
Kind of non-residential network the session
came from; null for any other network, including
most home and mobile providers. The list of
networks is partial.
varchar
Seed
hosting_network_patterns.network_
category
Unchanged
intermediate, marts (2 models)
traffic_class
How automated the session looks: a
development visit, a declared bot (one that says
it's a bot), a likely bot (a strong sign of
automation), a possible bot (a moderate sign) or
a human (no sign). An estimate: it misses bots
that behave like browsers and visits that never
load the tracking, and can class people on
VPNs, office networks or old browsers as bots.
The site owner's visits count like anyone's.
varchar
Derived
calculated in fct_hits
Derived from other concepts
marts (5 models)
traffic_group
Whether the session is a bot (of any class), a
human or a development visit
varchar
Derived
calculated in fct_hits
Derived from other concepts
marts (8 models)
user_agent_pattern
Pattern that recognises a declared bot from the
text its browser sends
varchar
Seed
bot_user_agent_patterns.user_agent_
pattern
Unchanged
intermediate (1 model)
user_agent_pattern_note
What a bot pattern recognises, or why it was
added
varchar
Seed
bot_user_agent_patterns.user_agent_
pattern_note
Unchanged
intermediate (1 model)
user_agent_pattern_source
Where a bot pattern comes from: a published
list of known bots, or added locally
varchar
Seed
bot_user_agent_patterns.user_agent_
pattern_source
Unchanged
intermediate (1 model)
Traffic Shares
Visits and page views as shares of a total; the reports show no counts
Concept
Definition
Type
Origin
Comes From
Source to Final
Used In
country_group
Visitor's country if it's one of the period's most
common, otherwise Other; Unknown when it
can't be told
varchar
Derived
calculated in
mart_monthly_country_session_share
Derived from other concepts
marts (1 model)
country_group_rank
Order of the country group, most common
country first, then Other, then Unknown
integer
Derived
calculated in
mart_monthly_country_session_share
Derived from other concepts
marts (1 model)
country_session_share
The country group's share of the traffic group's
sessions in the month
double
Derived
calculated in
mart_monthly_country_session_share
Derived from other concepts
marts (1 model)
day_of_week
Day of the week, numbered from 1 for Monday
integer
Derived
calculated in fct_hits
Derived from other concepts
marts (2 models)
day_of_week_hit_share
The weekday's share of the group's page views
in an average week
double
Derived
calculated in
mart_day_of_week_hit_share
Derived from other concepts
marts (1 model)
day_of_week_name
Name of the day of the week
varchar
Derived
calculated in
mart_day_of_week_hit_share
Derived from other concepts
marts (1 model)
declared_bot_session_share
The kind of bot's share of declared bot
sessions
double
Derived
calculated in
mart_declared_bot_category_share
Derived from other concepts
marts (1 model)
hit_share
The week's share of the group's page views
over the whole period
double
Derived
calculated in mart_weekly_hit_share
Derived from other concepts
marts (1 model)
hour_of_day
Hour of the day, in the reporting time zone
integer
Derived
calculated in fct_hits
Derived from other concepts
marts (2 models)
hour_of_day_hit_share
The hour's share of the group's page views
double
Derived
calculated in mart_hour_of_day_hit_share
Derived from other concepts
marts (1 model)
is_complete_month
Whether the whole month is in the period
covered
boolean
Derived
calculated in
mart_monthly_country_session_share
Derived from other concepts
marts (1 model)
is_complete_week
Whether all seven days of the week are in the
period covered. A partial week has a lower
share of the period's total.
boolean
Derived
calculated in mart_weekly_hit_share
Derived from other concepts
marts (2 models)
month_start
First day of the month
date
Derived
calculated in
mart_monthly_country_session_share
Derived from other concepts
marts (1 model)
period_end_date
Last day the shares cover: the last complete
day, so a day in progress can't skew them
date
Derived
calculated in
int_shynet_db__reporting_period
Derived from other concepts
intermediate, marts (5 models)
period_start_date
First day the shares cover
date
Derived
calculated in
int_shynet_db__reporting_period
Derived from other concepts
intermediate, marts (5 models)
session_share
The class's share of the period's sessions,
excluding development visits
double
Derived
calculated in mart_session_class_share
Derived from other concepts
marts (2 models)
week_start
Monday the week starts on
date
Derived
calculated in mart_weekly_hit_share
Derived from other concepts
marts (2 models)
Lineage
When each row was loaded, and which record it is
Concept
Definition
Type
Origin
Comes From
Source to Final
Used In
hit_record_ids_hash
Fingerprint of the page views combined into the
session's activity, for checking which went in
varchar
Derived
calculated in
int_shynet_db__session_activity
Derived from other concepts
intermediate, marts (2 models)
loaded_at
When the row was last loaded. Recent rows are
reloaded on each run.
timestamp with
time zone
Source
daily_browsers._dlt_load_id,
daily_countries._dlt_load_id,
daily_device_types._dlt_load_id,
daily_devices._dlt_load_id,
daily_locations._dlt_load_id,
daily_operating_systems._dlt_load_id,
daily_referrers._dlt_load_id,
daily_stats._dlt_load_id, hits._dlt_load_id,
hourly_stats._dlt_load_id,
services._dlt_load_id,
sessions._dlt_load_id
renamed from _dlt_load_id; cast from varchar;
source: dlt load id; the Unix timestamp (seconds)
of the load start, as text
staging, intermediate, marts (19
models)
record_id
Identifier of the loaded row, the same across
loads
varchar
Source
daily_browsers._dlt_id,
daily_countries._dlt_id,
daily_device_types._dlt_id,
daily_devices._dlt_id,
daily_locations._dlt_id,
daily_operating_systems._dlt_id,
daily_referrers._dlt_id, daily_stats._dlt_id,
hits._dlt_id, hourly_stats._dlt_id,
services._dlt_id, sessions._dlt_id
renamed from _dlt_id
staging, intermediate, marts (19
models)
record_ids_hash
Fingerprint of the rows combined into this one,
for checking which rows went in
varchar
Derived
calculated in
mart_daily_sessions_by_class
Derived from other concepts
marts (8 models)
Data as of 13:13 UTC on 17 Oct 2026
made with
dbt Charts