@walkeros/web-destination-gtag 4.6.0 → 4.6.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @walkeros/web-destination-gtag
2
2
 
3
+ ## 4.6.1
4
+
5
+ ### Patch Changes
6
+
7
+ - @walkeros/core@4.6.1
8
+ - @walkeros/web-core@4.6.1
9
+
3
10
  ## 4.6.0
4
11
 
5
12
  ### Patch Changes
package/dist/dev.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e,a=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,o=(e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})},r={};o(r,{examples:()=>k,schemas:()=>s}),module.exports=(e=r,((e,o,r,s)=>{if(o&&"object"==typeof o||"function"==typeof o)for(let d of n(o))i.call(e,d)||d===r||a(e,d,{get:()=>o[d],enumerable:!(s=t(o,d))||s.enumerable});return e})(a({},"__esModule",{value:!0}),e));var s={};o(s,{AdsSettingsSchema:()=>m,ConsentModeSchema:()=>p,GA4SettingsSchema:()=>u,GTMSettingsSchema:()=>v,MappingSchema:()=>f,SettingsSchema:()=>_,UserDataMappingSchema:()=>g,ads:()=>G,ga4:()=>z,gtm:()=>E,mapping:()=>w,settings:()=>A});var d=require("@walkeros/core/dev"),c=require("@walkeros/core/dev"),l=require("@walkeros/core/dev"),p=l.z.union([l.z.boolean(),l.z.record(l.z.string(),l.z.union([l.z.string(),l.z.array(l.z.string())]))]),u=l.z.object({measurementId:l.z.string().regex(/^G-[A-Z0-9]+$/,"Must be a valid GA4 Measurement ID (G-XXXXXXXXXX)").describe("GA4 Measurement ID from Google Analytics (like G-XXXXXXXXXX)"),debug:l.z.boolean().describe("Enable debug mode for GA4 (like true)").optional(),pageview:l.z.boolean().describe("Enable automatic pageview tracking (like true)").optional(),server_container_url:l.z.string().url().describe("Server-side GTM container URL (like https://server-container.com)").optional(),snakeCase:l.z.boolean().describe("Lowercase the event name and replace its spaces with underscores (like true). Applies to the event name only, never to parameter names").optional(),transport_url:l.z.string().url().describe("Custom transport URL for GA4 (like https://analytics.example.com/mp/collect)").optional(),data:l.z.any().describe("Custom data mapping configuration").optional()}),g=l.z.object({email:l.z.any().describe("Mapping value for user email (like user.email)").optional(),phone_number:l.z.any().describe("Mapping value for user phone number (like user.phone)").optional(),address:l.z.object({first_name:l.z.any().describe("Mapping value for first name (like data.firstName)").optional(),last_name:l.z.any().describe("Mapping value for last name (like data.lastName)").optional(),street:l.z.any().describe("Mapping value for street address").optional(),city:l.z.any().describe("Mapping value for city (like user.city)").optional(),region:l.z.any().describe("Mapping value for region/state (like user.region)").optional(),postal_code:l.z.any().describe("Mapping value for postal/zip code (like user.zip)").optional(),country:l.z.any().describe("Mapping value for country (like user.country)").optional()}).describe("Address mapping for enhanced conversions").optional()}),m=l.z.object({conversionId:l.z.string().regex(/^AW-[0-9]+$/,"Must be a valid Ads Conversion ID (AW-XXXXXXXXXX)").describe("Google Ads Conversion ID (required)"),currency:l.z.string().length(3).describe("Currency code (ISO 4217, e.g., USD, EUR)").optional(),data:l.z.any().describe("Custom data mapping (WalkerOS.Mapping.Value | Values)").optional(),enhancedConversions:g.describe("Enhanced conversions: maps event fields to Google user_data for improved measurement accuracy").optional()}),v=l.z.object({containerId:l.z.string().regex(/^GTM-[A-Z0-9]+$/,"Must be a valid GTM Container ID (GTM-XXXXXXX)").describe("GTM Container ID (required)"),dataLayer:l.z.string().describe("Custom dataLayer variable name (default: dataLayer)").optional(),domain:l.z.string().describe("Custom GTM domain for script loading").optional(),data:l.z.any().describe("Custom data mapping (WalkerOS.Mapping.Value | Values)").optional()}),_=c.z.object({como:p.describe("Consent mode configuration: false (disabled), true (use defaults), or custom mapping").optional(),como_advanced:c.z.union([c.z.boolean(),c.z.number()]).describe("Advanced consent mode (non-EU): emit denied default at page load with wait_for_update (true=500ms, or a number of ms)").optional(),ga4:u.describe("GA4-specific configuration settings (like { measurementId: G-XXXXXXXXXX })").optional(),ads:m.describe("Google Ads specific configuration settings (like { conversionId: AW-XXXXXXXXX })").optional(),gtm:v.describe("Google Tag Manager specific configuration settings (like { containerId: GTM-XXXXXXX })").optional()}).refine(e=>{var a,t,n;return(null==(a=e.ga4)?void 0:a.measurementId)||(null==(t=e.ads)?void 0:t.conversionId)||(null==(n=e.gtm)?void 0:n.containerId)},{message:"At least one Google tool must be configured (ga4.measurementId, ads.conversionId, or gtm.containerId)"}),X=require("@walkeros/core/dev"),b=X.z.object({}),h=X.z.object({label:X.z.string().describe("Conversion label for this specific event").optional()}),y=X.z.object({}),f=X.z.object({ga4:b.describe("GA4-specific event mapping").optional(),ads:h.describe("Google Ads-specific event mapping").optional(),gtm:y.describe("GTM-specific event mapping").optional()}),A=(0,d.zodToSchema)(_),w=(0,d.zodToSchema)(f),z=(0,d.zodToSchema)(u),G=(0,d.zodToSchema)(m),E=(0,d.zodToSchema)(v),k={};o(k,{env:()=>C,step:()=>I});var C={};o(C,{init:()=>M,push:()=>S,simulation:()=>U});var M={window:{dataLayer:[]},document:{createElement:()=>({src:"",setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},S={window:{gtag:Object.assign(()=>{},{}),dataLayer:[]},document:{createElement:()=>({src:"",setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},U=["call:window.gtag"],I={};o(I,{addToCart:()=>L,adsEnhancedConversions:()=>D,adsInit:()=>j,consentModeV2:()=>H,ga4Init:()=>T,ga4WithIncludeAll:()=>N,googleAdsConversion:()=>W,gtmDataLayerPush:()=>V,gtmInit:()=>O,multipleToolsSimultaneous:()=>$,pageView:()=>q,purchase:()=>P});var R=require("@walkeros/core"),x=17e11,T=(new Date(x),{title:"GA4 init",description:"Configures a GA4 property via its measurementId. gtag already exists here, so no `js` is sent: that would be a second, false initialisation signal.",in:{settings:{ga4:{measurementId:"G-XXXXXX-1"}}},out:[["gtag","config","G-XXXXXX-1",{}]]}),j={title:"Google Ads init",description:"Configures a Google Ads account via its conversionId. gtag already exists here, so no `js` is sent.",in:{settings:{ads:{conversionId:"AW-123456789",currency:"EUR"}}},out:[["gtag","config","AW-123456789"]]},O={title:"GTM init",description:"With script loading enabled the destination initializes the dataLayer, pushes the gtm.js start event, and loads the GTM container.",in:{loadScript:!0,settings:{gtm:{containerId:"GTM-XXXXXXX"}}},out:[["dataLayer.push",{"gtm.start":x,event:"gtm.js"}]]},P={title:"Purchase",description:"An order complete event is mapped to the GA4 purchase event with transaction details and nested product items.",in:(0,R.getEvent)("order complete",{timestamp:1700000100}),mapping:{name:"purchase",include:["data","context"],data:{map:{transaction_id:"data.id",value:"data.total",tax:"data.taxes",shipping:"data.shipping",currency:{key:"data.currency",value:"EUR"},items:{loop:["nested",{condition:e=>(0,R.isObject)(e)&&"product"===e.entity,map:{item_id:"data.id",item_name:"data.name",quantity:{key:"data.quantity",value:1}}}]}}}},out:[["gtag","event","purchase",{transaction_id:"0rd3r1d",value:555,tax:73.76,shipping:5.22,currency:"EUR",items:[{item_id:"ers",item_name:"Everyday Ruck Snack",quantity:1},{item_id:"cc",item_name:"Cool Cap",quantity:1}],data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555,context_shopping:"complete",send_to:"G-XXXXXX-1"}]]},L={title:"Add to cart",description:"A product add event is mapped to the GA4 add_to_cart event with item details and value.",in:(0,R.getEvent)("product add",{timestamp:1700000101}),mapping:{name:"add_to_cart",include:["data"],data:{map:{currency:{value:"EUR",key:"data.currency"},value:"data.price",items:{loop:["this",{map:{item_id:"data.id",item_variant:"data.color",quantity:{value:1,key:"data.quantity"}}}]}}}},out:[["gtag","event","add_to_cart",{currency:"EUR",value:420,items:[{item_id:"ers",item_variant:"black",quantity:1}],data_id:"ers",data_name:"Everyday Ruck Snack",data_color:"black",data_size:"l",data_price:420,send_to:"G-XXXXXX-1"}]]},q={title:"Page view",description:"A page view event is forwarded as a GA4 page_view event with no additional mapping.",in:(0,R.getEvent)("page view",{timestamp:1700000102}),mapping:void 0,out:[["gtag","event","page_view",{send_to:"G-XXXXXX-1"}]]},W={title:"Ads conversion",description:"An order complete event is sent as a Google Ads conversion with a configured label and transaction value.",in:(0,R.getEvent)("order complete",{timestamp:1700000103}),mapping:{name:"PURCHASE_CONV",settings:{ads:{label:"PURCHASE_CONV"}},data:{map:{value:"data.total"}}},out:[["gtag","event","conversion",{send_to:"AW-123456789/PURCHASE_CONV",currency:"EUR",value:555}]]},D={title:"Enhanced conversions",description:"enhancedConversions maps event fields into a gtag set user_data call sent immediately before the conversion event.",in:(0,R.getEvent)("order complete",{timestamp:1700000109,data:{id:"0rd3r1d",currency:"EUR",shipping:5.22,taxes:73.76,total:555,customerEmail:"buyer@shop.com",customerPhone:"+1234567890"}}),mapping:{name:"PURCHASE_EC2",settings:{ads:{label:"PURCHASE_EC2"}},data:{map:{value:"data.total"}}},out:[["gtag","set","user_data",{email:"buyer@shop.com",phone_number:"+1234567890"}],["gtag","event","conversion",{send_to:"AW-123456789/PURCHASE_EC2",currency:"EUR",value:555}]]},V={title:"GTM dataLayer push",description:"A page view event is pushed to window.dataLayer for GTM with the mapped event name and parameters.",in:(0,R.getEvent)("page view",{timestamp:1700000104}),mapping:{name:"page_view",settings:{gtm:{}},data:{map:{page_title:"data.title",page_location:"data.domain"}}},out:[["dataLayer.push",{event:"page_view",page_title:"walkerOS documentation",page_location:"www.example.com"}]]},H={title:"Consent Mode v2",description:"A walker consent command with marketing and functional granted updates gtag Consent Mode v2 parameters.",command:"consent",in:{marketing:!0,functional:!0},out:[["gtag","consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied"}],["gtag","consent","update",{ad_storage:"granted",ad_user_data:"granted",ad_personalization:"granted",analytics_storage:"granted"}]]},N={title:"GA4 include all",description:"Include flattens every event section into prefixed GA4 params, exposing data, context, user, source, and event fields.",in:(0,R.getEvent)("page view",{id:"ev-1700000106",timestamp:1700000106,source:{type:"collector",schema:"4",count:1,trace:"1700000106abcdef1700000106abcdef"}}),mapping:{include:["data","context","globals","user","source","event"]},out:[["gtag","event","page_view",{data_domain:"www.example.com",data_title:"walkerOS documentation",data_referrer:"https://www.walkeros.io/",data_search:"?foo=bar",data_hash:"#hash",data_id:"/docs/",context_dev:"test",globals_pagegroup:"docs",user_device:"c00k13",user_session:"s3ss10n",source_type:"collector",source_schema:"4",source_count:1,source_trace:"1700000106abcdef1700000106abcdef",source_release_default:"4.6.0",event_entity:"page",event_action:"view",event_trigger:"load",event_id:"ev-1700000106",event_name:"page view",event_timestamp:1700000106,event_timing:3.14,send_to:"G-XXXXXX-1"}]]},$={title:"Multi-tool push",description:"A single order event fans out to GA4, Google Ads, and GTM from one mapping rule with per-tool settings.",in:(0,R.getEvent)("order complete",{timestamp:1700000107}),mapping:{name:"purchase",include:["data"],settings:{ga4:{},ads:{label:"PURCHASE_CONV"},gtm:{}},data:{map:{value:"data.total",currency:{key:"data.currency",value:"EUR"}}}},out:[["gtag","event","purchase",{value:555,currency:"EUR",data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555,send_to:"G-XXXXXX-1"}],["gtag","event","conversion",{send_to:"AW-123456789/PURCHASE_CONV",currency:"EUR",value:555,data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555}],["dataLayer.push",{event:"purchase",value:555,currency:"EUR",data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555}]]};//# sourceMappingURL=dev.js.map
1
+ "use strict";var e,a=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,o=(e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})},r={};o(r,{examples:()=>k,schemas:()=>s}),module.exports=(e=r,((e,o,r,s)=>{if(o&&"object"==typeof o||"function"==typeof o)for(let d of n(o))i.call(e,d)||d===r||a(e,d,{get:()=>o[d],enumerable:!(s=t(o,d))||s.enumerable});return e})(a({},"__esModule",{value:!0}),e));var s={};o(s,{AdsSettingsSchema:()=>m,ConsentModeSchema:()=>p,GA4SettingsSchema:()=>u,GTMSettingsSchema:()=>v,MappingSchema:()=>f,SettingsSchema:()=>_,UserDataMappingSchema:()=>g,ads:()=>G,ga4:()=>z,gtm:()=>E,mapping:()=>w,settings:()=>A});var d=require("@walkeros/core/dev"),c=require("@walkeros/core/dev"),l=require("@walkeros/core/dev"),p=l.z.union([l.z.boolean(),l.z.record(l.z.string(),l.z.union([l.z.string(),l.z.array(l.z.string())]))]),u=l.z.object({measurementId:l.z.string().regex(/^G-[A-Z0-9]+$/,"Must be a valid GA4 Measurement ID (G-XXXXXXXXXX)").describe("GA4 Measurement ID from Google Analytics (like G-XXXXXXXXXX)"),debug:l.z.boolean().describe("Enable debug mode for GA4 (like true)").optional(),pageview:l.z.boolean().describe("Enable automatic pageview tracking (like true)").optional(),server_container_url:l.z.string().url().describe("Server-side GTM container URL (like https://server-container.com)").optional(),snakeCase:l.z.boolean().describe("Lowercase the event name and replace its spaces with underscores (like true). Applies to the event name only, never to parameter names").optional(),transport_url:l.z.string().url().describe("Custom transport URL for GA4 (like https://analytics.example.com/mp/collect)").optional(),data:l.z.any().describe("Custom data mapping configuration").optional()}),g=l.z.object({email:l.z.any().describe("Mapping value for user email (like user.email)").optional(),phone_number:l.z.any().describe("Mapping value for user phone number (like user.phone)").optional(),address:l.z.object({first_name:l.z.any().describe("Mapping value for first name (like data.firstName)").optional(),last_name:l.z.any().describe("Mapping value for last name (like data.lastName)").optional(),street:l.z.any().describe("Mapping value for street address").optional(),city:l.z.any().describe("Mapping value for city (like user.city)").optional(),region:l.z.any().describe("Mapping value for region/state (like user.region)").optional(),postal_code:l.z.any().describe("Mapping value for postal/zip code (like user.zip)").optional(),country:l.z.any().describe("Mapping value for country (like user.country)").optional()}).describe("Address mapping for enhanced conversions").optional()}),m=l.z.object({conversionId:l.z.string().regex(/^AW-[0-9]+$/,"Must be a valid Ads Conversion ID (AW-XXXXXXXXXX)").describe("Google Ads Conversion ID (required)"),currency:l.z.string().length(3).describe("Currency code (ISO 4217, e.g., USD, EUR)").optional(),data:l.z.any().describe("Custom data mapping (WalkerOS.Mapping.Value | Values)").optional(),enhancedConversions:g.describe("Enhanced conversions: maps event fields to Google user_data for improved measurement accuracy").optional()}),v=l.z.object({containerId:l.z.string().regex(/^GTM-[A-Z0-9]+$/,"Must be a valid GTM Container ID (GTM-XXXXXXX)").describe("GTM Container ID (required)"),dataLayer:l.z.string().describe("Custom dataLayer variable name (default: dataLayer)").optional(),domain:l.z.string().describe("Custom GTM domain for script loading").optional(),data:l.z.any().describe("Custom data mapping (WalkerOS.Mapping.Value | Values)").optional()}),_=c.z.object({como:p.describe("Consent mode configuration: false (disabled), true (use defaults), or custom mapping").optional(),como_advanced:c.z.union([c.z.boolean(),c.z.number()]).describe("Advanced consent mode (non-EU): emit denied default at page load with wait_for_update (true=500ms, or a number of ms)").optional(),ga4:u.describe("GA4-specific configuration settings (like { measurementId: G-XXXXXXXXXX })").optional(),ads:m.describe("Google Ads specific configuration settings (like { conversionId: AW-XXXXXXXXX })").optional(),gtm:v.describe("Google Tag Manager specific configuration settings (like { containerId: GTM-XXXXXXX })").optional()}).refine(e=>{var a,t,n;return(null==(a=e.ga4)?void 0:a.measurementId)||(null==(t=e.ads)?void 0:t.conversionId)||(null==(n=e.gtm)?void 0:n.containerId)},{message:"At least one Google tool must be configured (ga4.measurementId, ads.conversionId, or gtm.containerId)"}),X=require("@walkeros/core/dev"),b=X.z.object({}),h=X.z.object({label:X.z.string().describe("Conversion label for this specific event").optional()}),y=X.z.object({}),f=X.z.object({ga4:b.describe("GA4-specific event mapping").optional(),ads:h.describe("Google Ads-specific event mapping").optional(),gtm:y.describe("GTM-specific event mapping").optional()}),A=(0,d.zodToSchema)(_),w=(0,d.zodToSchema)(f),z=(0,d.zodToSchema)(u),G=(0,d.zodToSchema)(m),E=(0,d.zodToSchema)(v),k={};o(k,{env:()=>C,step:()=>I});var C={};o(C,{init:()=>M,push:()=>S,simulation:()=>U});var M={window:{dataLayer:[]},document:{createElement:()=>({src:"",setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},S={window:{gtag:Object.assign(()=>{},{}),dataLayer:[]},document:{createElement:()=>({src:"",setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},U=["call:window.gtag"],I={};o(I,{addToCart:()=>L,adsEnhancedConversions:()=>D,adsInit:()=>j,consentModeV2:()=>H,ga4Init:()=>T,ga4WithIncludeAll:()=>N,googleAdsConversion:()=>W,gtmDataLayerPush:()=>V,gtmInit:()=>O,multipleToolsSimultaneous:()=>$,pageView:()=>q,purchase:()=>P});var R=require("@walkeros/core"),x=17e11,T=(new Date(x),{title:"GA4 init",description:"Configures a GA4 property via its measurementId. gtag already exists here, so no `js` is sent: that would be a second, false initialisation signal.",in:{settings:{ga4:{measurementId:"G-XXXXXX-1"}}},out:[["gtag","config","G-XXXXXX-1",{}]]}),j={title:"Google Ads init",description:"Configures a Google Ads account via its conversionId. gtag already exists here, so no `js` is sent.",in:{settings:{ads:{conversionId:"AW-123456789",currency:"EUR"}}},out:[["gtag","config","AW-123456789"]]},O={title:"GTM init",description:"With script loading enabled the destination initializes the dataLayer, pushes the gtm.js start event, and loads the GTM container.",in:{loadScript:!0,settings:{gtm:{containerId:"GTM-XXXXXXX"}}},out:[["dataLayer.push",{"gtm.start":x,event:"gtm.js"}]]},P={title:"Purchase",description:"An order complete event is mapped to the GA4 purchase event with transaction details and nested product items.",in:(0,R.getEvent)("order complete",{timestamp:1700000100}),mapping:{name:"purchase",include:["data","context"],data:{map:{transaction_id:"data.id",value:"data.total",tax:"data.taxes",shipping:"data.shipping",currency:{key:"data.currency",value:"EUR"},items:{loop:["nested",{condition:e=>(0,R.isObject)(e)&&"product"===e.entity,map:{item_id:"data.id",item_name:"data.name",quantity:{key:"data.quantity",value:1}}}]}}}},out:[["gtag","event","purchase",{transaction_id:"0rd3r1d",value:555,tax:73.76,shipping:5.22,currency:"EUR",items:[{item_id:"ers",item_name:"Everyday Ruck Snack",quantity:1},{item_id:"cc",item_name:"Cool Cap",quantity:1}],data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555,context_shopping:"complete",send_to:"G-XXXXXX-1"}]]},L={title:"Add to cart",description:"A product add event is mapped to the GA4 add_to_cart event with item details and value.",in:(0,R.getEvent)("product add",{timestamp:1700000101}),mapping:{name:"add_to_cart",include:["data"],data:{map:{currency:{value:"EUR",key:"data.currency"},value:"data.price",items:{loop:["this",{map:{item_id:"data.id",item_variant:"data.color",quantity:{value:1,key:"data.quantity"}}}]}}}},out:[["gtag","event","add_to_cart",{currency:"EUR",value:420,items:[{item_id:"ers",item_variant:"black",quantity:1}],data_id:"ers",data_name:"Everyday Ruck Snack",data_color:"black",data_size:"l",data_price:420,send_to:"G-XXXXXX-1"}]]},q={title:"Page view",description:"A page view event is forwarded as a GA4 page_view event with no additional mapping.",in:(0,R.getEvent)("page view",{timestamp:1700000102}),mapping:void 0,out:[["gtag","event","page_view",{send_to:"G-XXXXXX-1"}]]},W={title:"Ads conversion",description:"An order complete event is sent as a Google Ads conversion with a configured label and transaction value.",in:(0,R.getEvent)("order complete",{timestamp:1700000103}),mapping:{name:"PURCHASE_CONV",settings:{ads:{label:"PURCHASE_CONV"}},data:{map:{value:"data.total"}}},out:[["gtag","event","conversion",{send_to:"AW-123456789/PURCHASE_CONV",currency:"EUR",value:555}]]},D={title:"Enhanced conversions",description:"enhancedConversions maps event fields into a gtag set user_data call sent immediately before the conversion event.",in:(0,R.getEvent)("order complete",{timestamp:1700000109,data:{id:"0rd3r1d",currency:"EUR",shipping:5.22,taxes:73.76,total:555,customerEmail:"buyer@shop.com",customerPhone:"+1234567890"}}),mapping:{name:"PURCHASE_EC2",settings:{ads:{label:"PURCHASE_EC2"}},data:{map:{value:"data.total"}}},out:[["gtag","set","user_data",{email:"buyer@shop.com",phone_number:"+1234567890"}],["gtag","event","conversion",{send_to:"AW-123456789/PURCHASE_EC2",currency:"EUR",value:555}]]},V={title:"GTM dataLayer push",description:"A page view event is pushed to window.dataLayer for GTM with the mapped event name and parameters.",in:(0,R.getEvent)("page view",{timestamp:1700000104}),mapping:{name:"page_view",settings:{gtm:{}},data:{map:{page_title:"data.title",page_location:"data.domain"}}},out:[["dataLayer.push",{event:"page_view",page_title:"walkerOS documentation",page_location:"www.example.com"}]]},H={title:"Consent Mode v2",description:"A walker consent command with marketing and functional granted updates gtag Consent Mode v2 parameters.",command:"consent",in:{marketing:!0,functional:!0},out:[["gtag","consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied"}],["gtag","consent","update",{ad_storage:"granted",ad_user_data:"granted",ad_personalization:"granted",analytics_storage:"granted"}]]},N={title:"GA4 include all",description:"Include flattens every event section into prefixed GA4 params, exposing data, context, user, source, and event fields.",in:(0,R.getEvent)("page view",{id:"ev-1700000106",timestamp:1700000106,source:{type:"collector",schema:"4",count:1,trace:"1700000106abcdef1700000106abcdef"}}),mapping:{include:["data","context","globals","user","source","event"]},out:[["gtag","event","page_view",{data_domain:"www.example.com",data_title:"walkerOS documentation",data_referrer:"https://www.walkeros.io/",data_search:"?foo=bar",data_hash:"#hash",data_id:"/docs/",context_dev:"test",globals_pagegroup:"docs",user_device:"c00k13",user_session:"s3ss10n",source_type:"collector",source_schema:"4",source_count:1,source_trace:"1700000106abcdef1700000106abcdef",source_release_default:"4.6.1",event_entity:"page",event_action:"view",event_trigger:"load",event_id:"ev-1700000106",event_name:"page view",event_timestamp:1700000106,event_timing:3.14,send_to:"G-XXXXXX-1"}]]},$={title:"Multi-tool push",description:"A single order event fans out to GA4, Google Ads, and GTM from one mapping rule with per-tool settings.",in:(0,R.getEvent)("order complete",{timestamp:1700000107}),mapping:{name:"purchase",include:["data"],settings:{ga4:{},ads:{label:"PURCHASE_CONV"},gtm:{}},data:{map:{value:"data.total",currency:{key:"data.currency",value:"EUR"}}}},out:[["gtag","event","purchase",{value:555,currency:"EUR",data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555,send_to:"G-XXXXXX-1"}],["gtag","event","conversion",{send_to:"AW-123456789/PURCHASE_CONV",currency:"EUR",value:555,data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555}],["dataLayer.push",{event:"purchase",value:555,currency:"EUR",data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555}]]};//# sourceMappingURL=dev.js.map
package/dist/dev.mjs CHANGED
@@ -1 +1 @@
1
- var e=Object.defineProperty,a=(a,t)=>{for(var n in t)e(a,n,{get:t[n],enumerable:!0})},t={};a(t,{AdsSettingsSchema:()=>c,ConsentModeSchema:()=>r,GA4SettingsSchema:()=>s,GTMSettingsSchema:()=>l,MappingSchema:()=>_,SettingsSchema:()=>p,UserDataMappingSchema:()=>d,ads:()=>y,ga4:()=>h,gtm:()=>f,mapping:()=>b,settings:()=>X});import{zodToSchema as n}from"@walkeros/core/dev";import{z as i}from"@walkeros/core/dev";import{z as o}from"@walkeros/core/dev";var r=o.union([o.boolean(),o.record(o.string(),o.union([o.string(),o.array(o.string())]))]),s=o.object({measurementId:o.string().regex(/^G-[A-Z0-9]+$/,"Must be a valid GA4 Measurement ID (G-XXXXXXXXXX)").describe("GA4 Measurement ID from Google Analytics (like G-XXXXXXXXXX)"),debug:o.boolean().describe("Enable debug mode for GA4 (like true)").optional(),pageview:o.boolean().describe("Enable automatic pageview tracking (like true)").optional(),server_container_url:o.string().url().describe("Server-side GTM container URL (like https://server-container.com)").optional(),snakeCase:o.boolean().describe("Lowercase the event name and replace its spaces with underscores (like true). Applies to the event name only, never to parameter names").optional(),transport_url:o.string().url().describe("Custom transport URL for GA4 (like https://analytics.example.com/mp/collect)").optional(),data:o.any().describe("Custom data mapping configuration").optional()}),d=o.object({email:o.any().describe("Mapping value for user email (like user.email)").optional(),phone_number:o.any().describe("Mapping value for user phone number (like user.phone)").optional(),address:o.object({first_name:o.any().describe("Mapping value for first name (like data.firstName)").optional(),last_name:o.any().describe("Mapping value for last name (like data.lastName)").optional(),street:o.any().describe("Mapping value for street address").optional(),city:o.any().describe("Mapping value for city (like user.city)").optional(),region:o.any().describe("Mapping value for region/state (like user.region)").optional(),postal_code:o.any().describe("Mapping value for postal/zip code (like user.zip)").optional(),country:o.any().describe("Mapping value for country (like user.country)").optional()}).describe("Address mapping for enhanced conversions").optional()}),c=o.object({conversionId:o.string().regex(/^AW-[0-9]+$/,"Must be a valid Ads Conversion ID (AW-XXXXXXXXXX)").describe("Google Ads Conversion ID (required)"),currency:o.string().length(3).describe("Currency code (ISO 4217, e.g., USD, EUR)").optional(),data:o.any().describe("Custom data mapping (WalkerOS.Mapping.Value | Values)").optional(),enhancedConversions:d.describe("Enhanced conversions: maps event fields to Google user_data for improved measurement accuracy").optional()}),l=o.object({containerId:o.string().regex(/^GTM-[A-Z0-9]+$/,"Must be a valid GTM Container ID (GTM-XXXXXXX)").describe("GTM Container ID (required)"),dataLayer:o.string().describe("Custom dataLayer variable name (default: dataLayer)").optional(),domain:o.string().describe("Custom GTM domain for script loading").optional(),data:o.any().describe("Custom data mapping (WalkerOS.Mapping.Value | Values)").optional()}),p=i.object({como:r.describe("Consent mode configuration: false (disabled), true (use defaults), or custom mapping").optional(),como_advanced:i.union([i.boolean(),i.number()]).describe("Advanced consent mode (non-EU): emit denied default at page load with wait_for_update (true=500ms, or a number of ms)").optional(),ga4:s.describe("GA4-specific configuration settings (like { measurementId: G-XXXXXXXXXX })").optional(),ads:c.describe("Google Ads specific configuration settings (like { conversionId: AW-XXXXXXXXX })").optional(),gtm:l.describe("Google Tag Manager specific configuration settings (like { containerId: GTM-XXXXXXX })").optional()}).refine(e=>{var a,t,n;return(null==(a=e.ga4)?void 0:a.measurementId)||(null==(t=e.ads)?void 0:t.conversionId)||(null==(n=e.gtm)?void 0:n.containerId)},{message:"At least one Google tool must be configured (ga4.measurementId, ads.conversionId, or gtm.containerId)"});import{z as u}from"@walkeros/core/dev";var m=u.object({}),g=u.object({label:u.string().describe("Conversion label for this specific event").optional()}),v=u.object({}),_=u.object({ga4:m.describe("GA4-specific event mapping").optional(),ads:g.describe("Google Ads-specific event mapping").optional(),gtm:v.describe("GTM-specific event mapping").optional()}),X=n(p),b=n(_),h=n(s),y=n(c),f=n(l),A={};a(A,{env:()=>w,step:()=>E});var w={};a(w,{init:()=>G,push:()=>k,simulation:()=>C});var G={window:{dataLayer:[]},document:{createElement:()=>({src:"",setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},k={window:{gtag:Object.assign(()=>{},{}),dataLayer:[]},document:{createElement:()=>({src:"",setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},C=["call:window.gtag"],E={};a(E,{addToCart:()=>j,adsEnhancedConversions:()=>O,adsInit:()=>R,consentModeV2:()=>V,ga4Init:()=>I,ga4WithIncludeAll:()=>D,googleAdsConversion:()=>P,gtmDataLayerPush:()=>W,gtmInit:()=>x,multipleToolsSimultaneous:()=>q,pageView:()=>L,purchase:()=>T});import{getEvent as M,isObject as S}from"@walkeros/core";var U=17e11,I=(new Date(U),{title:"GA4 init",description:"Configures a GA4 property via its measurementId. gtag already exists here, so no `js` is sent: that would be a second, false initialisation signal.",in:{settings:{ga4:{measurementId:"G-XXXXXX-1"}}},out:[["gtag","config","G-XXXXXX-1",{}]]}),R={title:"Google Ads init",description:"Configures a Google Ads account via its conversionId. gtag already exists here, so no `js` is sent.",in:{settings:{ads:{conversionId:"AW-123456789",currency:"EUR"}}},out:[["gtag","config","AW-123456789"]]},x={title:"GTM init",description:"With script loading enabled the destination initializes the dataLayer, pushes the gtm.js start event, and loads the GTM container.",in:{loadScript:!0,settings:{gtm:{containerId:"GTM-XXXXXXX"}}},out:[["dataLayer.push",{"gtm.start":U,event:"gtm.js"}]]},T={title:"Purchase",description:"An order complete event is mapped to the GA4 purchase event with transaction details and nested product items.",in:M("order complete",{timestamp:1700000100}),mapping:{name:"purchase",include:["data","context"],data:{map:{transaction_id:"data.id",value:"data.total",tax:"data.taxes",shipping:"data.shipping",currency:{key:"data.currency",value:"EUR"},items:{loop:["nested",{condition:e=>S(e)&&"product"===e.entity,map:{item_id:"data.id",item_name:"data.name",quantity:{key:"data.quantity",value:1}}}]}}}},out:[["gtag","event","purchase",{transaction_id:"0rd3r1d",value:555,tax:73.76,shipping:5.22,currency:"EUR",items:[{item_id:"ers",item_name:"Everyday Ruck Snack",quantity:1},{item_id:"cc",item_name:"Cool Cap",quantity:1}],data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555,context_shopping:"complete",send_to:"G-XXXXXX-1"}]]},j={title:"Add to cart",description:"A product add event is mapped to the GA4 add_to_cart event with item details and value.",in:M("product add",{timestamp:1700000101}),mapping:{name:"add_to_cart",include:["data"],data:{map:{currency:{value:"EUR",key:"data.currency"},value:"data.price",items:{loop:["this",{map:{item_id:"data.id",item_variant:"data.color",quantity:{value:1,key:"data.quantity"}}}]}}}},out:[["gtag","event","add_to_cart",{currency:"EUR",value:420,items:[{item_id:"ers",item_variant:"black",quantity:1}],data_id:"ers",data_name:"Everyday Ruck Snack",data_color:"black",data_size:"l",data_price:420,send_to:"G-XXXXXX-1"}]]},L={title:"Page view",description:"A page view event is forwarded as a GA4 page_view event with no additional mapping.",in:M("page view",{timestamp:1700000102}),mapping:void 0,out:[["gtag","event","page_view",{send_to:"G-XXXXXX-1"}]]},P={title:"Ads conversion",description:"An order complete event is sent as a Google Ads conversion with a configured label and transaction value.",in:M("order complete",{timestamp:1700000103}),mapping:{name:"PURCHASE_CONV",settings:{ads:{label:"PURCHASE_CONV"}},data:{map:{value:"data.total"}}},out:[["gtag","event","conversion",{send_to:"AW-123456789/PURCHASE_CONV",currency:"EUR",value:555}]]},O={title:"Enhanced conversions",description:"enhancedConversions maps event fields into a gtag set user_data call sent immediately before the conversion event.",in:M("order complete",{timestamp:1700000109,data:{id:"0rd3r1d",currency:"EUR",shipping:5.22,taxes:73.76,total:555,customerEmail:"buyer@shop.com",customerPhone:"+1234567890"}}),mapping:{name:"PURCHASE_EC2",settings:{ads:{label:"PURCHASE_EC2"}},data:{map:{value:"data.total"}}},out:[["gtag","set","user_data",{email:"buyer@shop.com",phone_number:"+1234567890"}],["gtag","event","conversion",{send_to:"AW-123456789/PURCHASE_EC2",currency:"EUR",value:555}]]},W={title:"GTM dataLayer push",description:"A page view event is pushed to window.dataLayer for GTM with the mapped event name and parameters.",in:M("page view",{timestamp:1700000104}),mapping:{name:"page_view",settings:{gtm:{}},data:{map:{page_title:"data.title",page_location:"data.domain"}}},out:[["dataLayer.push",{event:"page_view",page_title:"walkerOS documentation",page_location:"www.example.com"}]]},V={title:"Consent Mode v2",description:"A walker consent command with marketing and functional granted updates gtag Consent Mode v2 parameters.",command:"consent",in:{marketing:!0,functional:!0},out:[["gtag","consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied"}],["gtag","consent","update",{ad_storage:"granted",ad_user_data:"granted",ad_personalization:"granted",analytics_storage:"granted"}]]},D={title:"GA4 include all",description:"Include flattens every event section into prefixed GA4 params, exposing data, context, user, source, and event fields.",in:M("page view",{id:"ev-1700000106",timestamp:1700000106,source:{type:"collector",schema:"4",count:1,trace:"1700000106abcdef1700000106abcdef"}}),mapping:{include:["data","context","globals","user","source","event"]},out:[["gtag","event","page_view",{data_domain:"www.example.com",data_title:"walkerOS documentation",data_referrer:"https://www.walkeros.io/",data_search:"?foo=bar",data_hash:"#hash",data_id:"/docs/",context_dev:"test",globals_pagegroup:"docs",user_device:"c00k13",user_session:"s3ss10n",source_type:"collector",source_schema:"4",source_count:1,source_trace:"1700000106abcdef1700000106abcdef",source_release_default:"4.6.0",event_entity:"page",event_action:"view",event_trigger:"load",event_id:"ev-1700000106",event_name:"page view",event_timestamp:1700000106,event_timing:3.14,send_to:"G-XXXXXX-1"}]]},q={title:"Multi-tool push",description:"A single order event fans out to GA4, Google Ads, and GTM from one mapping rule with per-tool settings.",in:M("order complete",{timestamp:1700000107}),mapping:{name:"purchase",include:["data"],settings:{ga4:{},ads:{label:"PURCHASE_CONV"},gtm:{}},data:{map:{value:"data.total",currency:{key:"data.currency",value:"EUR"}}}},out:[["gtag","event","purchase",{value:555,currency:"EUR",data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555,send_to:"G-XXXXXX-1"}],["gtag","event","conversion",{send_to:"AW-123456789/PURCHASE_CONV",currency:"EUR",value:555,data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555}],["dataLayer.push",{event:"purchase",value:555,currency:"EUR",data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555}]]};export{A as examples,t as schemas};//# sourceMappingURL=dev.mjs.map
1
+ var e=Object.defineProperty,a=(a,t)=>{for(var n in t)e(a,n,{get:t[n],enumerable:!0})},t={};a(t,{AdsSettingsSchema:()=>c,ConsentModeSchema:()=>r,GA4SettingsSchema:()=>s,GTMSettingsSchema:()=>l,MappingSchema:()=>_,SettingsSchema:()=>p,UserDataMappingSchema:()=>d,ads:()=>y,ga4:()=>h,gtm:()=>f,mapping:()=>b,settings:()=>X});import{zodToSchema as n}from"@walkeros/core/dev";import{z as i}from"@walkeros/core/dev";import{z as o}from"@walkeros/core/dev";var r=o.union([o.boolean(),o.record(o.string(),o.union([o.string(),o.array(o.string())]))]),s=o.object({measurementId:o.string().regex(/^G-[A-Z0-9]+$/,"Must be a valid GA4 Measurement ID (G-XXXXXXXXXX)").describe("GA4 Measurement ID from Google Analytics (like G-XXXXXXXXXX)"),debug:o.boolean().describe("Enable debug mode for GA4 (like true)").optional(),pageview:o.boolean().describe("Enable automatic pageview tracking (like true)").optional(),server_container_url:o.string().url().describe("Server-side GTM container URL (like https://server-container.com)").optional(),snakeCase:o.boolean().describe("Lowercase the event name and replace its spaces with underscores (like true). Applies to the event name only, never to parameter names").optional(),transport_url:o.string().url().describe("Custom transport URL for GA4 (like https://analytics.example.com/mp/collect)").optional(),data:o.any().describe("Custom data mapping configuration").optional()}),d=o.object({email:o.any().describe("Mapping value for user email (like user.email)").optional(),phone_number:o.any().describe("Mapping value for user phone number (like user.phone)").optional(),address:o.object({first_name:o.any().describe("Mapping value for first name (like data.firstName)").optional(),last_name:o.any().describe("Mapping value for last name (like data.lastName)").optional(),street:o.any().describe("Mapping value for street address").optional(),city:o.any().describe("Mapping value for city (like user.city)").optional(),region:o.any().describe("Mapping value for region/state (like user.region)").optional(),postal_code:o.any().describe("Mapping value for postal/zip code (like user.zip)").optional(),country:o.any().describe("Mapping value for country (like user.country)").optional()}).describe("Address mapping for enhanced conversions").optional()}),c=o.object({conversionId:o.string().regex(/^AW-[0-9]+$/,"Must be a valid Ads Conversion ID (AW-XXXXXXXXXX)").describe("Google Ads Conversion ID (required)"),currency:o.string().length(3).describe("Currency code (ISO 4217, e.g., USD, EUR)").optional(),data:o.any().describe("Custom data mapping (WalkerOS.Mapping.Value | Values)").optional(),enhancedConversions:d.describe("Enhanced conversions: maps event fields to Google user_data for improved measurement accuracy").optional()}),l=o.object({containerId:o.string().regex(/^GTM-[A-Z0-9]+$/,"Must be a valid GTM Container ID (GTM-XXXXXXX)").describe("GTM Container ID (required)"),dataLayer:o.string().describe("Custom dataLayer variable name (default: dataLayer)").optional(),domain:o.string().describe("Custom GTM domain for script loading").optional(),data:o.any().describe("Custom data mapping (WalkerOS.Mapping.Value | Values)").optional()}),p=i.object({como:r.describe("Consent mode configuration: false (disabled), true (use defaults), or custom mapping").optional(),como_advanced:i.union([i.boolean(),i.number()]).describe("Advanced consent mode (non-EU): emit denied default at page load with wait_for_update (true=500ms, or a number of ms)").optional(),ga4:s.describe("GA4-specific configuration settings (like { measurementId: G-XXXXXXXXXX })").optional(),ads:c.describe("Google Ads specific configuration settings (like { conversionId: AW-XXXXXXXXX })").optional(),gtm:l.describe("Google Tag Manager specific configuration settings (like { containerId: GTM-XXXXXXX })").optional()}).refine(e=>{var a,t,n;return(null==(a=e.ga4)?void 0:a.measurementId)||(null==(t=e.ads)?void 0:t.conversionId)||(null==(n=e.gtm)?void 0:n.containerId)},{message:"At least one Google tool must be configured (ga4.measurementId, ads.conversionId, or gtm.containerId)"});import{z as u}from"@walkeros/core/dev";var m=u.object({}),g=u.object({label:u.string().describe("Conversion label for this specific event").optional()}),v=u.object({}),_=u.object({ga4:m.describe("GA4-specific event mapping").optional(),ads:g.describe("Google Ads-specific event mapping").optional(),gtm:v.describe("GTM-specific event mapping").optional()}),X=n(p),b=n(_),h=n(s),y=n(c),f=n(l),A={};a(A,{env:()=>w,step:()=>E});var w={};a(w,{init:()=>G,push:()=>k,simulation:()=>C});var G={window:{dataLayer:[]},document:{createElement:()=>({src:"",setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},k={window:{gtag:Object.assign(()=>{},{}),dataLayer:[]},document:{createElement:()=>({src:"",setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},C=["call:window.gtag"],E={};a(E,{addToCart:()=>j,adsEnhancedConversions:()=>O,adsInit:()=>R,consentModeV2:()=>V,ga4Init:()=>I,ga4WithIncludeAll:()=>D,googleAdsConversion:()=>P,gtmDataLayerPush:()=>W,gtmInit:()=>x,multipleToolsSimultaneous:()=>q,pageView:()=>L,purchase:()=>T});import{getEvent as M,isObject as S}from"@walkeros/core";var U=17e11,I=(new Date(U),{title:"GA4 init",description:"Configures a GA4 property via its measurementId. gtag already exists here, so no `js` is sent: that would be a second, false initialisation signal.",in:{settings:{ga4:{measurementId:"G-XXXXXX-1"}}},out:[["gtag","config","G-XXXXXX-1",{}]]}),R={title:"Google Ads init",description:"Configures a Google Ads account via its conversionId. gtag already exists here, so no `js` is sent.",in:{settings:{ads:{conversionId:"AW-123456789",currency:"EUR"}}},out:[["gtag","config","AW-123456789"]]},x={title:"GTM init",description:"With script loading enabled the destination initializes the dataLayer, pushes the gtm.js start event, and loads the GTM container.",in:{loadScript:!0,settings:{gtm:{containerId:"GTM-XXXXXXX"}}},out:[["dataLayer.push",{"gtm.start":U,event:"gtm.js"}]]},T={title:"Purchase",description:"An order complete event is mapped to the GA4 purchase event with transaction details and nested product items.",in:M("order complete",{timestamp:1700000100}),mapping:{name:"purchase",include:["data","context"],data:{map:{transaction_id:"data.id",value:"data.total",tax:"data.taxes",shipping:"data.shipping",currency:{key:"data.currency",value:"EUR"},items:{loop:["nested",{condition:e=>S(e)&&"product"===e.entity,map:{item_id:"data.id",item_name:"data.name",quantity:{key:"data.quantity",value:1}}}]}}}},out:[["gtag","event","purchase",{transaction_id:"0rd3r1d",value:555,tax:73.76,shipping:5.22,currency:"EUR",items:[{item_id:"ers",item_name:"Everyday Ruck Snack",quantity:1},{item_id:"cc",item_name:"Cool Cap",quantity:1}],data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555,context_shopping:"complete",send_to:"G-XXXXXX-1"}]]},j={title:"Add to cart",description:"A product add event is mapped to the GA4 add_to_cart event with item details and value.",in:M("product add",{timestamp:1700000101}),mapping:{name:"add_to_cart",include:["data"],data:{map:{currency:{value:"EUR",key:"data.currency"},value:"data.price",items:{loop:["this",{map:{item_id:"data.id",item_variant:"data.color",quantity:{value:1,key:"data.quantity"}}}]}}}},out:[["gtag","event","add_to_cart",{currency:"EUR",value:420,items:[{item_id:"ers",item_variant:"black",quantity:1}],data_id:"ers",data_name:"Everyday Ruck Snack",data_color:"black",data_size:"l",data_price:420,send_to:"G-XXXXXX-1"}]]},L={title:"Page view",description:"A page view event is forwarded as a GA4 page_view event with no additional mapping.",in:M("page view",{timestamp:1700000102}),mapping:void 0,out:[["gtag","event","page_view",{send_to:"G-XXXXXX-1"}]]},P={title:"Ads conversion",description:"An order complete event is sent as a Google Ads conversion with a configured label and transaction value.",in:M("order complete",{timestamp:1700000103}),mapping:{name:"PURCHASE_CONV",settings:{ads:{label:"PURCHASE_CONV"}},data:{map:{value:"data.total"}}},out:[["gtag","event","conversion",{send_to:"AW-123456789/PURCHASE_CONV",currency:"EUR",value:555}]]},O={title:"Enhanced conversions",description:"enhancedConversions maps event fields into a gtag set user_data call sent immediately before the conversion event.",in:M("order complete",{timestamp:1700000109,data:{id:"0rd3r1d",currency:"EUR",shipping:5.22,taxes:73.76,total:555,customerEmail:"buyer@shop.com",customerPhone:"+1234567890"}}),mapping:{name:"PURCHASE_EC2",settings:{ads:{label:"PURCHASE_EC2"}},data:{map:{value:"data.total"}}},out:[["gtag","set","user_data",{email:"buyer@shop.com",phone_number:"+1234567890"}],["gtag","event","conversion",{send_to:"AW-123456789/PURCHASE_EC2",currency:"EUR",value:555}]]},W={title:"GTM dataLayer push",description:"A page view event is pushed to window.dataLayer for GTM with the mapped event name and parameters.",in:M("page view",{timestamp:1700000104}),mapping:{name:"page_view",settings:{gtm:{}},data:{map:{page_title:"data.title",page_location:"data.domain"}}},out:[["dataLayer.push",{event:"page_view",page_title:"walkerOS documentation",page_location:"www.example.com"}]]},V={title:"Consent Mode v2",description:"A walker consent command with marketing and functional granted updates gtag Consent Mode v2 parameters.",command:"consent",in:{marketing:!0,functional:!0},out:[["gtag","consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied"}],["gtag","consent","update",{ad_storage:"granted",ad_user_data:"granted",ad_personalization:"granted",analytics_storage:"granted"}]]},D={title:"GA4 include all",description:"Include flattens every event section into prefixed GA4 params, exposing data, context, user, source, and event fields.",in:M("page view",{id:"ev-1700000106",timestamp:1700000106,source:{type:"collector",schema:"4",count:1,trace:"1700000106abcdef1700000106abcdef"}}),mapping:{include:["data","context","globals","user","source","event"]},out:[["gtag","event","page_view",{data_domain:"www.example.com",data_title:"walkerOS documentation",data_referrer:"https://www.walkeros.io/",data_search:"?foo=bar",data_hash:"#hash",data_id:"/docs/",context_dev:"test",globals_pagegroup:"docs",user_device:"c00k13",user_session:"s3ss10n",source_type:"collector",source_schema:"4",source_count:1,source_trace:"1700000106abcdef1700000106abcdef",source_release_default:"4.6.1",event_entity:"page",event_action:"view",event_trigger:"load",event_id:"ev-1700000106",event_name:"page view",event_timestamp:1700000106,event_timing:3.14,send_to:"G-XXXXXX-1"}]]},q={title:"Multi-tool push",description:"A single order event fans out to GA4, Google Ads, and GTM from one mapping rule with per-tool settings.",in:M("order complete",{timestamp:1700000107}),mapping:{name:"purchase",include:["data"],settings:{ga4:{},ads:{label:"PURCHASE_CONV"},gtm:{}},data:{map:{value:"data.total",currency:{key:"data.currency",value:"EUR"}}}},out:[["gtag","event","purchase",{value:555,currency:"EUR",data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555,send_to:"G-XXXXXX-1"}],["gtag","event","conversion",{send_to:"AW-123456789/PURCHASE_CONV",currency:"EUR",value:555,data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555}],["dataLayer.push",{event:"purchase",value:555,currency:"EUR",data_id:"0rd3r1d",data_currency:"EUR",data_shipping:5.22,data_taxes:73.76,data_total:555}]]};export{A as examples,t as schemas};//# sourceMappingURL=dev.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$meta": {
3
3
  "package": "@walkeros/web-destination-gtag",
4
- "version": "4.6.0",
4
+ "version": "4.6.1",
5
5
  "type": "destination",
6
6
  "platform": [
7
7
  "web"
@@ -431,7 +431,7 @@
431
431
  "consent": {
432
432
  "functional": true
433
433
  },
434
- "id": "5c23a85c7f0adec3",
434
+ "id": "c8311bf6f9546210",
435
435
  "trigger": "click",
436
436
  "entity": "product",
437
437
  "action": "add",
@@ -581,7 +581,7 @@
581
581
  "consent": {
582
582
  "functional": true
583
583
  },
584
- "id": "0aafb40f4e0b3a06",
584
+ "id": "fd4da394159334e1",
585
585
  "trigger": "load",
586
586
  "entity": "order",
587
587
  "action": "complete",
@@ -784,7 +784,7 @@
784
784
  "source_schema": "4",
785
785
  "source_count": 1,
786
786
  "source_trace": "1700000106abcdef1700000106abcdef",
787
- "source_release_default": "4.6.0",
787
+ "source_release_default": "4.6.1",
788
788
  "event_entity": "page",
789
789
  "event_action": "view",
790
790
  "event_trigger": "load",
@@ -877,7 +877,7 @@
877
877
  "consent": {
878
878
  "functional": true
879
879
  },
880
- "id": "ea38f735280494b4",
880
+ "id": "276113fffeeb6167",
881
881
  "trigger": "load",
882
882
  "entity": "order",
883
883
  "action": "complete",
@@ -957,7 +957,7 @@
957
957
  "consent": {
958
958
  "functional": true
959
959
  },
960
- "id": "3448c5b920652dd5",
960
+ "id": "022cf9a06d0ad20d",
961
961
  "trigger": "load",
962
962
  "entity": "page",
963
963
  "action": "view",
@@ -1094,7 +1094,7 @@
1094
1094
  "consent": {
1095
1095
  "functional": true
1096
1096
  },
1097
- "id": "2e08e41fe34d7f1e",
1097
+ "id": "3a4f0c681d423150",
1098
1098
  "trigger": "load",
1099
1099
  "entity": "order",
1100
1100
  "action": "complete",
@@ -1216,7 +1216,7 @@
1216
1216
  "consent": {
1217
1217
  "functional": true
1218
1218
  },
1219
- "id": "652d095c7628c0ff",
1219
+ "id": "06ba76b261a8ae33",
1220
1220
  "trigger": "load",
1221
1221
  "entity": "page",
1222
1222
  "action": "view",
@@ -1320,7 +1320,7 @@
1320
1320
  "consent": {
1321
1321
  "functional": true
1322
1322
  },
1323
- "id": "3f1de47ac233d9c5",
1323
+ "id": "1a9c0c8811fa5e4e",
1324
1324
  "trigger": "load",
1325
1325
  "entity": "order",
1326
1326
  "action": "complete",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@walkeros/web-destination-gtag",
3
3
  "description": "Unified Google destination for walkerOS (GA4, Ads, GTM)",
4
- "version": "4.6.0",
4
+ "version": "4.6.1",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.mjs",
@@ -38,8 +38,8 @@
38
38
  "update": "npx npm-check-updates -u && npm update"
39
39
  },
40
40
  "dependencies": {
41
- "@walkeros/core": "4.6.0",
42
- "@walkeros/web-core": "4.6.0"
41
+ "@walkeros/core": "4.6.1",
42
+ "@walkeros/web-core": "4.6.1"
43
43
  },
44
44
  "repository": {
45
45
  "url": "git+https://github.com/elbwalker/walkerOS.git",