The Traffic tab shows website session volume, quality, and channel composition sourced from Google Analytics 4. It answers:
Source: Google Analytics 4 events, transformed by dbt and stored in Snowflake.
Table: analytics.dbt_exports_os.export__ga4_events
Merchant filter: os_merchant = 'Jack Archer' (hardcoded — this table contains events from multiple brands).
The /api/traffic endpoint executes the following logic per day/channel combination:
event_action = 'session_start' (one row per session)os_dt (event date) and preferred_channelos_session_id → sessionsuser_pseudo_id → usersuser_pseudo_id where user_type = 'new user' → new_userssession_pageviews → total_pageviewsbounced_session::INT → bounced_sessionsTotal number of sessions across all active channels in the selected period.
A session is a group of user interactions on the website that takes place within a given time frame. In GA4, a session begins at session_start event and ends after 30 minutes of inactivity or at midnight.
Percentage of sessions that were "bounced" — the visitor left without any meaningful interaction.
A bounced session is flagged in GA4 when the visitor triggered only a single event (session_start) and no further engagement events (page_view, scroll, click, etc.) were recorded before leaving.
Average number of pages viewed per session. A proxy for browse depth and engagement quality.
Percentage of users who are visiting the site for the first time (no prior GA4 history for that browser/device).
GA4 classifies a user as "new" if no user_pseudo_id cookie/fingerprint for that device has been seen before. This is a browser-level signal — someone visiting on both mobile and desktop appears as two "users".
GA4 assigns each session a preferred_channel based on UTM parameters, referrer, and GA4's default channel grouping logic. The dashboard maps these to 10 channels:
| Channel | Color | What It Includes | Preset Group |
|---|---|---|---|
| Direct / Unknown | #424656 | No UTM, no referrer (typed URL, bookmarks, dark social). NULL or "Direct" in GA4 mapped here. | All |
| Paid Social | #683728 | Paid Meta (Facebook/Instagram), TikTok, Pinterest, Snapchat ads. UTM medium = cpc + social source. |
All, Paid |
| #004028 | Klaviyo campaigns and flows. UTM source = klaviyo or medium = email. |
All, Organic | |
| Paid Search | #1c2130 | Google Ads, Microsoft/Bing Ads. UTM medium = cpc + search source. |
All, Paid |
| SMS | #71644d | Klaviyo SMS campaigns/flows. UTM medium = sms or source = klaviyo_sms. |
All, Paid |
| Organic Search | #2d6645 | Google, Bing, and other search engines — non-paid. Referrer = search engine domain, no UTM. | All, Organic |
| Untracked Social | #a6abbd | Organic social (Instagram bio link, Facebook page post). Referrer = social domain, no paid UTM. | All, Organic |
| Referral | #632330 | Traffic from other websites (press, blogs, review sites) linking to jackarcherapparel.com. | All, Organic |
| Affiliate | #403520 | Affiliate partner links. UTM medium = affiliate. |
All, Organic |
| Other | #bdb8ae | Everything not classified above — catch-all for unrecognized UTMs or sources. | All |
A stacked bar chart showing daily session volume broken down by channel. Each bar represents one day; each color band within the bar is one channel.
| View | Y-Axis | Best For |
|---|---|---|
| % Share (default) | 0–100% (each bar = 100% of that day's sessions) | Seeing how channel mix shifts over time. Does Paid Social grow as a share? Does Organic shrink on weekends? |
| Volume | Absolute session count (stacked) | Seeing absolute traffic volume. Did total sessions drop, or just the mix shift? |
A breakdown table showing engagement quality by channel — the complement to volume. Use this to identify which channels drive high-quality traffic (low bounce, high pages/session) vs. raw session volume.
| Column | Formula | Interpretation |
|---|---|---|
| Channel | — | Colored dot matching chart color. Sorted by total sessions descending. |
| Sessions | Σ sessions for channel |
Total sessions + share % of all sessions in parentheses (e.g., "12,340 (28%)"). |
| Bounce Rate | bounced_sessions / sessions |
Lower = better engagement. Email and Direct typically have the lowest bounce rates. |
| Pages / Session | total_pageviews / sessions |
Higher = deeper browse. Organic Search often has higher PPS as visitors are actively researching. |
| New User % | new_users / users |
Paid Social and Organic Search typically have higher New User % (prospecting). Email and SMS skew toward returning users. |
| Control | Options | Effect |
|---|---|---|
| Channel Presets | All · Paid Only · Organic | Instantly filters which channels are active. "Paid Only" = Paid Social + Paid Search + SMS. "Organic" = Organic Search + Email + Referral + Affiliate + Untracked Social. Affects KPI cards, chart, and quality table. |
| Channel Pills | One pill per channel (individual toggle) | Click to toggle a channel on/off. Double-click to isolate that channel alone (or reset to all if already isolated). Minimum 1 channel must remain active. |
| Chart View | % Share · Volume | Switches the stacked bar chart between normalized (0–100%) and absolute (session count) Y-axis. |
| Period (global) | Fiscal Wk, WTD, MTD, Last N Days, Custom | Re-fetches traffic data for the new date range. |
| Comparison (global) | Prev Period, Prev Week, Prev Month, Prev Year, Custom | Re-fetches comparison period data. Affects KPI badge deltas and chart tooltips. |
Comparison periods are computed client-side from the current period start/end and the selected comparison mode. See the Email Tab Wiki §11 for the full date calculation formulas — they apply identically across all tabs.
For traffic-specific use: Prev Year (YoY) is particularly useful because traffic patterns are heavily day-of-week dependent. A WoW comparison on a Tuesday this year vs. Monday last week is often misleading — YoY aligns the same calendar weekday.