ga4-export-fixer 0.4.1-dev.2 → 0.4.1-dev.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -157,7 +157,7 @@
157
157
  }
158
158
  },
159
159
  "session_first_traffic_source": {
160
- "description": "The data extracted from the collected_traffic_source struct of the session's first event. Similar to the session_traffic_source_last_click but does not include last non-direct attribution. Meaning that sessions that started without a source of traffic are always reported as direct in this field. Can be useful for building custom attribution models.",
160
+ "description": "The data extracted from the collected_traffic_source struct of the session's first event. Can be used for building custom attribution models.",
161
161
  "columns": {
162
162
  "manual_campaign_id": "Manual campaign ID (utm_id)",
163
163
  "manual_campaign_name": "Manual campaign name (utm_campaign)",
@@ -174,7 +174,7 @@
174
174
  }
175
175
  },
176
176
  "session_traffic_source_last_click": {
177
- "description": "Session-level last-click attributed traffic source across Google Ads and manual channels. Aggregated as the first non-null value in the session (the field is session-scoped in the GA4 export and identical across events in the same session)",
177
+ "description": "Primary session attribution data. Session-level last non-direct click attribution.",
178
178
  "columns": {
179
179
  "manual_campaign": {
180
180
  "description": "Last-click manual campaign attribution",
@@ -202,14 +202,14 @@
202
202
  }
203
203
  },
204
204
  "cross_channel_campaign": {
205
- "description": "Last-click cross-channel campaign attribution",
205
+ "description": "Last-click cross-channel campaign attribution. The primary session attribution data within the session_traffic_source_last_click struct",
206
206
  "columns": {
207
207
  "campaign_name": "Cross-channel campaign name",
208
208
  "campaign_id": "Cross-channel campaign ID",
209
209
  "source_platform": "Cross-channel source platform",
210
210
  "source": "Cross-channel source",
211
211
  "medium": "Cross-channel medium",
212
- "primary_channel_group": "The highest-level traffic categorization (e.g., Organic Search, Paid Social). Use this as the default dimension for all general 'traffic source' questions",
212
+ "primary_channel_group": "The default dimension for ranking traffic popularity and acquisition performance. Prefer this over source/medium for general summaries. Use this as the default dimension for all general 'traffic source' questions",
213
213
  "default_channel_group": "Default channel group for the session's last non-direct click"
214
214
  }
215
215
  },
@@ -15,8 +15,8 @@
15
15
  "ecommerce": "Transaction and revenue data. Filter to purchase or refund events (WHERE event_name = 'purchase') for ecommerce reporting",
16
16
  "items": "Product-level data array. Unnest with CROSS JOIN UNNEST(items) for item-level analysis. For product revenue and units sold, filter to event_name = 'purchase' and use item_revenue and quantity. Use item_category to filter or group by product category",
17
17
  "collected_traffic_source": "Event-level UTM parameters and click identifiers. For session-level attribution, prefer session_first_traffic_source instead",
18
- "session_first_traffic_source": "First-touch traffic source for the session. Use for session-level acquisition and campaign reporting",
19
- "session_traffic_source_last_click": "Google-attributed session traffic source. For high-level 'traffic source' reporting, ALWAYS use .cross_channel_campaign.primary_channel_group as the primary dimension. Use .cross_channel_campaign.source as a secondary drill-down when granular detail is required",
18
+ "session_first_traffic_source": "Typically NOT used as the default field for general traffic source reporting. Use when building custom attribution models that require the session's first touchpoint, including sessions that started without a source (reported as direct)",
19
+ "session_traffic_source_last_click": "The default field to use for session-level traffic source analysis. For high-level 'traffic source' reporting, ALWAYS use .cross_channel_campaign.primary_channel_group as the primary dimension. Assume that the user wants the data on the channel grouping level. Even if they ask for \"traffic sources\". Use .cross_channel_campaign.source as a secondary drill-down when granular detail is required",
20
20
  "data_is_final": "Data stability flag. Use WHERE data_is_final = true when you need only stable data that will not change in future refreshes",
21
21
  "export_type": "Source export type (daily, intraday, fresh). Use for debugging data freshness or filtering by export source",
22
22
  "row_inserted_timestamp": "Pipeline metadata. Use to identify when data was last refreshed or to debug incremental update issues"
@@ -99,7 +99,7 @@
99
99
  },
100
100
  {
101
101
  "field": "session_traffic_source_last_click",
102
- "note": "Primary field for traffic source analysis. When a user asks a general or vague question about 'traffic sources' or 'where traffic comes from', DEFAULT to .cross_channel_campaign.primary_channel_group. Only drill down to .source if the user explicitly mentions 'source' or specific site names.",
102
+ "note": "The primary source of truth for all session-level traffic analysis. For high-level reporting (e.g., 'most popular sources'), always default to the primary_channel_group field within this struct. Only drill down to .source and .medium if the user explicitly asks for the \"source / medium\" level of detail.",
103
103
  "dependsOn": ["session_traffic_source_last_click"]
104
104
  },
105
105
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ga4-export-fixer",
3
- "version": "0.4.1-dev.2",
3
+ "version": "0.4.1-dev.4",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "files": [