{"id":362,"date":"2026-01-26T17:46:47","date_gmt":"2026-01-26T16:46:47","guid":{"rendered":"https:\/\/ga4-auditor.dev\/2026\/01\/26\/e-commerce-source-attribution-differences-between-live-api-and-bigquery-export-in-ga4-auditor\/"},"modified":"2026-01-26T17:51:50","modified_gmt":"2026-01-26T16:51:50","slug":"e-commerce-source-attribution-differences-between-live-api-and-bigquery-export-in-ga4-auditor","status":"publish","type":"post","link":"https:\/\/ga4-auditor.dev\/en\/2026\/01\/26\/e-commerce-source-attribution-differences-between-live-api-and-bigquery-export-in-ga4-auditor\/","title":{"rendered":"E-Commerce Source Attribution: Differences Between Live API and BigQuery Export in GA4 Auditor"},"content":{"rendered":"\n<p>The GA4 Auditor offers two reports for e-commerce source attribution:<\/p>\n\n<ol class=\"wp-block-list\">\n<li><strong>Live API Report<\/strong> (under &#8220;Live API Checks &gt; E-Commerce &gt; Source Attribution&#8221;)<\/li>\n\n\n\n<li><strong>BigQuery Export Report<\/strong> (under &#8220;BigQuery Export &gt; E-Commerce &gt; Source Attribution&#8221;)<\/li>\n<\/ol>\n\n<p>Both reports analyze the same question: Which marketing channels can be attributed to e-commerce transactions? Nevertheless, they show different values in practice. This article explains why these differences arise and how to interpret them correctly.  <\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\" id=\"%C3%BCbersicht-die-zwei-reports-im-vergleich\">Overview: Comparing the two reports<\/h2>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Property<\/th><th class=\"has-text-align-left\" data-align=\"left\">Live API Report<\/th><th class=\"has-text-align-left\" data-align=\"left\">BigQuery Export Report<\/th><\/tr><\/thead><tbody><tr><td><strong>Data Source<\/strong><\/td><td>GA4 Data API<\/td><td>BigQuery raw data<\/td><\/tr><tr><td><strong>Field for attribution<\/strong><\/td><td><code>sessionDefaultChannelGroup<\/code><\/td><td><code>session_traffic_source_last_click<\/code><\/td><\/tr><tr><td><strong>Data freshness<\/strong><\/td><td>Near real-time<\/td><td>Daily + Intraday combined<\/td><\/tr><tr><td><strong>Attribution status<\/strong><\/td><td>Can change 24-72h after event<\/td><td>Finalized at the time of export<\/td><\/tr><tr><td><strong>Classification<\/strong><\/td><td>&#8220;Direct&#8221; summarizes several categories<\/td><td>Granular differentiation possible<\/td><\/tr><tr><td><strong>Use case<\/strong><\/td><td>Quick overview<\/td><td>Detailed error analysis<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\" id=\"die-datenquellen-im-detail\">The data sources in detail<\/h2>\n\n<h3 class=\"wp-block-heading\" id=\"live-api-report-ga4-data-api\">Live API Report: GA4 Data API<\/h3>\n\n<p>The Live API Report in GA4 Auditor retrieves data via the official GA4 Data API. This API: <\/p>\n\n<ul class=\"wp-block-list\">\n<li>Provides pre-aggregated report data, as it also appears in the GA4 interface<\/li>\n\n\n\n<li>Uses the dimension <code>sessionDefaultChannelGroup<\/code> for channel assignment<\/li>\n\n\n\n<li>Automatically applies Google&#8217;s standard channel grouping rules<\/li>\n\n\n\n<li>Takes into account subsequent attribution corrections by Google (e.g., conversion modeling)<\/li>\n<\/ul>\n\n<p>The report shows the proportion of transactions that could be assigned to a source (&#8220;Assigned&#8221;) versus the proportion without a clear assignment (&#8220;Direct \/ Unassigned&#8221;).<\/p>\n\n<h3 class=\"wp-block-heading\" id=\"bigquery-export-report-rohdaten-analyse\">BigQuery Export Report: Raw Data Analysis<\/h3>\n\n<p>The BigQuery Export Report analyzes the event-level raw data directly in BigQuery. The GA4 Auditor uses: <\/p>\n\n<ul class=\"wp-block-list\">\n<li>The field <code>session_traffic_source_last_click.cross_channel_campaign.default_channel_group<\/code> for the channel<\/li>\n\n\n\n<li>Additional fields such as <code>source<\/code>, <code>medium<\/code>, <code>campaign<\/code> for deeper analyses<\/li>\n\n\n\n<li>A combination of Daily Export (<code>events_*<\/code>) and Intraday Export (<code>events_intraday_*<\/code>)<\/li>\n<\/ul>\n\n<p>The report differentiates between different problem categories, enabling targeted error analyses.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\" id=\"warum-die-werte-abweichen-technische-ursachen\">Why the values differ: Technical reasons<\/h2>\n\n<h3 class=\"wp-block-heading\" id=\"1-unterschiedliche-attribution-felder\">1. Different Attribution Fields<\/h3>\n\n<p>The most fundamental difference lies in the data fields used:<\/p>\n\n<p><strong>Live API Report:<\/strong><\/p>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sessionDefaultChannelGroup (Dimension of the Data API)\n<\/pre>\n\n<p><strong>BigQuery Export Report:<\/strong><\/p>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">session_traffic_source_last_click.cross_channel_campaign.default_channel_group\n<\/pre>\n\n<p>Although both fields should provide the same information, they differ in processing:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>The Data API uses Google&#8217;s internally processed and enriched data<\/li>\n\n\n\n<li>The BigQuery Export contains the values &#8220;frozen&#8221; at the time of export<\/li>\n\n\n\n<li>The Data API may contain subsequent corrections through Google Ads conversion modeling<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\" id=\"2-der-72-stunden-attribution-delay\">2. The 72-Hour Attribution Delay<\/h3>\n\n<p>Attribution in GA4 is not static. It can change up to 72 hours after the event: <\/p>\n\n<p><strong>Reasons for subsequent attribution changes:<\/strong><\/p>\n\n<ol class=\"wp-block-list\">\n<li><strong>Google Ads Conversion Modeling<\/strong>: Google uses machine learning to attribute conversions even with cookie blocking or cross-device journeys<\/li>\n\n\n\n<li><strong>Data Processing Pipeline<\/strong>: Google&#8217;s backend processes data in batches, with attribution calculations occurring with a time delay<\/li>\n\n\n\n<li><strong>Consent Mode Modeling<\/strong>: For users without tracking consent, GA4 models the likely source<\/li>\n<\/ol>\n\n<p><strong>Practical impact in the GA4 Auditor:<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>The <strong>Live API Report<\/strong> shows the current attribution, which may still change<\/li>\n\n\n\n<li>The <strong>BigQuery Export Report<\/strong> shows the attribution finalized at the time of export<\/li>\n<\/ul>\n\n<p>For data from the last 24-72 hours, the Live API Report may therefore show more &#8220;Direct&#8221;, while the BigQuery Report (after finalization) shows a better assignment.<\/p>\n\n<h3 class=\"wp-block-heading\" id=\"3-klassifizierung-von-direct-und-unassigned\">3. Classification of &#8220;Direct&#8221; and &#8220;Unassigned&#8221;<\/h3>\n\n<p>The reports classify problematic attribution differently:<\/p>\n\n<p><strong>Live API Report \u2013 Broad Definition:<\/strong><\/p>\n\n<p>The report summarizes the following under &#8220;Direct \/ Unassigned&#8221;:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><code>Direct<\/code><\/li>\n\n\n\n<li><code>(direct)<\/code><\/li>\n\n\n\n<li><code>(not set)<\/code><\/li>\n\n\n\n<li><code>Unassigned<\/code><\/li>\n\n\n\n<li><code>(other)<\/code><\/li>\n<\/ul>\n\n<p>This summary provides a quick overview of the proportion of unassigned transactions.<\/p>\n\n<p><strong>BigQuery Export Report \u2013 Granular Differentiation:<\/strong><\/p>\n\n<p>The report differentiates between:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Assigned (attributed_ok)<\/strong>: Transaction has a clear channel<\/li>\n\n\n\n<li><strong>Direct without session_start<\/strong>: Technical problem \u2013 the session_start event is missing<\/li>\n\n\n\n<li><strong>Direct with Referrer<\/strong>: Suspicious \u2013 a referrer is present, but the channel is &#8220;Direct&#8221;<\/li>\n\n\n\n<li><strong>Direct with GCLID<\/strong>: Possible cross-domain problem \u2013 a Google Ads Click-ID is present<\/li>\n\n\n\n<li><strong>Unassigned \/ (not set)<\/strong>: Channel could not be assigned<\/li>\n<\/ul>\n\n<p>This differentiation enables targeted error analyses and shows where tracking problems can be resolved.<\/p>\n\n<h3 class=\"wp-block-heading\" id=\"4-intraday-vs-daily-export-im-bigquery-report\">4. Intraday vs. Daily Export in the BigQuery Report<\/h3>\n\n<p>The GA4 Auditor combines both export types in the BigQuery Report:<\/p>\n\n<p><strong>Daily Export (<code>events_YYYYMMDD<\/code>):<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>Data is exported approximately 24-48 hours after the end of the day<\/li>\n\n\n\n<li>Attribution is finalized at the time of export<\/li>\n\n\n\n<li>This data no longer changes<\/li>\n<\/ul>\n\n<p><strong>Intraday Export (<code>events_intraday_YYYYMMDD<\/code>):<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>Data is available in near real-time<\/li>\n\n\n\n<li>Attribution values are preliminary<\/li>\n\n\n\n<li>Tables are deleted after completion of the Daily Export<\/li>\n<\/ul>\n\n<p><strong>Deduplication logic in the GA4 Auditor:<\/strong><\/p>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-- Simplified representation\nWITH combined AS (\n  SELECT *, 'daily' as source FROM events_*\n  UNION ALL\n  SELECT *, 'intraday' as source FROM events_intraday_*\n)\nSELECT * FROM combined\nQUALIFY ROW_NUMBER() OVER (\n  PARTITION BY event_name, event_timestamp, user_pseudo_id\n  ORDER BY CASE source WHEN 'daily' THEN 1 ELSE 2 END\n) = 1\n<\/pre>\n\n<p>Daily data is preferred. Intraday data is only used for time periods that have not yet been finalized. <\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\" id=\"typische-diskrepanzen-und-deren-interpretation\">Typical discrepancies and their interpretation<\/h2>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Observation<\/th><th class=\"has-text-align-left\" data-align=\"left\">Likely cause<\/th><th class=\"has-text-align-left\" data-align=\"left\">Recommendation<\/th><\/tr><\/thead><tbody><tr><td>Live API shows more Direct than BigQuery<\/td><td>Attribution not yet finalized (72h delay)<\/td><td>Analyze period without last 72h<\/td><\/tr><tr><td>BigQuery shows a lot of &#8220;Direct without session_start&#8221;<\/td><td>session_start event is not triggered<\/td><td>Check tracking implementation<\/td><\/tr><tr><td>BigQuery shows &#8220;Direct with Referrer&#8221;<\/td><td>Referrer exclusion list incomplete<\/td><td>Check GA4 property settings<\/td><\/tr><tr><td>BigQuery shows &#8220;Direct with GCLID&#8221;<\/td><td>Cross-domain tracking problem<\/td><td>Check linker configuration<\/td><\/tr><tr><td>Large differences in Google Ads Attribution<\/td><td>Conversion modeling only in Data API<\/td><td>Prefer Data API for Ads analysis<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\" id=\"empfehlungen-f%C3%BCr-die-nutzung-beider-reports\">Recommendations for using both reports<\/h2>\n\n<h3 class=\"wp-block-heading\" id=\"wann-den-live-api-report-nutzen\">When to use the Live API Report?<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><strong>Quick overview<\/strong>: Current status of attribution at a glance<\/li>\n\n\n\n<li><strong>Daily monitoring<\/strong>: Recognize trends (with awareness of 72h delay)<\/li>\n\n\n\n<li><strong>Google Ads Analysis<\/strong>: Contains the modeled conversions<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\" id=\"wann-den-bigquery-export-report-nutzen\">When to use the BigQuery Export Report?<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><strong>Detailed error analysis<\/strong>: What kind of problems exist?<\/li>\n\n\n\n<li><strong>Tracking debugging<\/strong>: Why are transactions not assigned?<\/li>\n\n\n\n<li><strong>Historical analyses<\/strong>: Finalized data for consistent time series<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\" id=\"best-practices\">Best Practices<\/h3>\n\n<ol class=\"wp-block-list\">\n<li><strong>Keep time periods comparable<\/strong>: Compare both reports only for time periods that are at least 72 hours in the past<\/li>\n\n\n\n<li><strong>Use both reports in a complementary manner<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Live API for a quick overview<\/li>\n\n\n\n<li>BigQuery for deep debugging<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Use debug queries<\/strong>: The BigQuery Report offers copy-&amp;-paste queries for detailed analyses in the BigQuery console<\/li>\n\n\n\n<li><strong>Note the information boxes<\/strong>: Both reports show information about the data source and its limitations<\/li>\n<\/ol>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\" id=\"fazit\">Conclusion<\/h2>\n\n<p>The differences between the Live API Report and the BigQuery Export Report in the GA4 Auditor are not a mistake, but the result of different data sources and processing times. Both reports have their justification: <\/p>\n\n<ul class=\"wp-block-list\">\n<li>The <strong>Live API Report<\/strong> shows the current Google attribution and is ideal for quick overviews<\/li>\n\n\n\n<li>The <strong>BigQuery Export Report<\/strong> enables granular error analyses and shows where tracking problems specifically lie<\/li>\n<\/ul>\n\n<p>For a complete attribution analysis, it is recommended to combine both reports: The Live API Report identifies whether a problem exists. The BigQuery Export Report shows what kind of problem it is and how it can be resolved. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>The GA4 Auditor offers two reports for e-commerce source attribution: Both reports analyze the same question: Which marketing channels can be&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kadence_starter_templates_imported_post":false,"_swpsp_post_exclude":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","slim_seo":{"description":"Why do Live API and BigQuery Export show different attribution values in GA4 Auditor? This article explains the technical reasons.","title":"E-Commerce Source Attribution: Differences Between Live API and BigQuery Export in GA4 Auditor - GA4 Auditor"},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-362","post","type-post","status-publish","format-standard","hentry","category-nicht-kategorisiert"],"taxonomy_info":{"category":[{"value":1,"label":"Nicht kategorisiert"}]},"featured_image_src_large":false,"author_info":{"display_name":"Bernhard Prange","author_link":"https:\/\/ga4-auditor.dev\/en\/author\/masterben\/"},"comment_info":0,"category_info":[{"term_id":1,"name":"Nicht kategorisiert","slug":"nicht-kategorisiert","term_group":0,"term_taxonomy_id":1,"taxonomy":"category","description":"","parent":0,"count":8,"filter":"raw","cat_ID":1,"category_count":8,"category_description":"","cat_name":"Nicht kategorisiert","category_nicename":"nicht-kategorisiert","category_parent":0}],"tag_info":false,"_links":{"self":[{"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/posts\/362","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/comments?post=362"}],"version-history":[{"count":1,"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/posts\/362\/revisions"}],"predecessor-version":[{"id":363,"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/posts\/362\/revisions\/363"}],"wp:attachment":[{"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/media?parent=362"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/categories?post=362"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/tags?post=362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}