diff --git a/pkg/config/googleads.go b/pkg/config/googleads.go index 9a1ab3c..be3d064 100644 --- a/pkg/config/googleads.go +++ b/pkg/config/googleads.go @@ -4,8 +4,11 @@ type GoogleAds struct { // Enable provider Enabled bool `json:"enabled" yaml:"enabled"` // Google Consent settings - GoogleConsent GoogleConsent `json:"googleConsent" yaml:"googleConsent"` - ConversionID string `json:"conversionId" yaml:"conversionId"` - Conversion GoogleAdsConversion `json:"conversion" yaml:"conversion"` - Remarketing GoogleAdsRemarketing `json:"remarketing" yaml:"remarketing"` + GoogleConsent GoogleConsent `json:"googleConsent" yaml:"googleConsent"` + // Conversion id + ConversionID string `json:"conversionId" yaml:"conversionId"` + // Google Ads Conversion settings + Conversion GoogleAdsConversion `json:"conversion" yaml:"conversion"` + // Google Ads Remarketing settings + Remarketing GoogleAdsRemarketing `json:"remarketing" yaml:"remarketing"` } diff --git a/pkg/config/googleadsconversion.go b/pkg/config/googleadsconversion.go index a390975..c6ddda5 100644 --- a/pkg/config/googleadsconversion.go +++ b/pkg/config/googleadsconversion.go @@ -6,8 +6,23 @@ import ( type GoogleAdsConversion struct { // Enable provider - Enabled bool `json:"enabled" yaml:"enabled"` - ConversionLabel string `json:"conversionLabel" yaml:"conversionLabel"` + Enabled bool `json:"enabled" yaml:"enabled"` // Google Tag Manager server container settings - ServerContainer contemplate.Config `json:"serverContainer" yaml:"serverContainer"` + ServerContainer ServerContainer `json:"serverContainer" yaml:"serverContainer"` +} + +type ServerContainer struct { + contemplate.Config `json:",inline" yaml:",squash"` + Settings map[string]GoogleAdsConversionTracking `json:"settings" yaml:"settings"` +} + +type GoogleAdsConversionTracking struct { + Label string `json:"label" yaml:"label"` +} + +func (s *ServerContainer) Setting(eventName string) GoogleAdsConversionTracking { + if value, ok := s.Settings[eventName]; ok { + return value + } + return GoogleAdsConversionTracking{} } diff --git a/pkg/provider/googleads/constants.go b/pkg/provider/googleads/constants.go index 55b4a39..b442e42 100644 --- a/pkg/provider/googleads/constants.go +++ b/pkg/provider/googleads/constants.go @@ -4,7 +4,6 @@ const ( Tag = "gads" Name = "Google Ads" NameConversionIDConstant = "GAds Conversion ID" - NameConversionLabelConstant = "GAds Conversion Label" NameGoogleAdsRemarketingTag = "Google Ads Remarketing" NameGoogleAdsRemarketingTrigger = "Google Ads Remarketing" ) diff --git a/pkg/provider/googleads/server.go b/pkg/provider/googleads/server.go index 23d97ff..9c231fe 100644 --- a/pkg/provider/googleads/server.go +++ b/pkg/provider/googleads/server.go @@ -31,11 +31,6 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.GoogleAds) err // conversion if cfg.Conversion.Enabled { - conversionLabel, err := tm.UpsertVariable(commonvariable.NewConstant(NameConversionLabelConstant, cfg.Conversion.ConversionLabel)) - if err != nil { - return err - } - value, err := tm.UpsertVariable(variable.NewEventData("value")) if err != nil { return err @@ -47,7 +42,7 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.GoogleAds) err } { // create tags - eventParameters, err := utils.LoadEventParams(cfg.Conversion.ServerContainer) + eventParameters, err := utils.LoadEventParams(cfg.Conversion.ServerContainer.Config) if err != nil { return err } @@ -70,7 +65,7 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.GoogleAds) err return errors.Wrap(err, "failed to upsert event trigger: "+event) } - if _, err := tm.UpsertTag(servertagx.NewGoogleAdsConversionTracking(event, value, currency, conversionID, conversionLabel, eventTrigger)); err != nil { + if _, err := tm.UpsertTag(servertagx.NewGoogleAdsConversionTracking(event, value, currency, conversionID, cfg.Conversion.ServerContainer.Setting(event), eventTrigger)); err != nil { return err } } diff --git a/pkg/provider/googleads/server/tag/googleadsconversiontracking.go b/pkg/provider/googleads/server/tag/googleadsconversiontracking.go index 5bd6b53..dd741ca 100644 --- a/pkg/provider/googleads/server/tag/googleadsconversiontracking.go +++ b/pkg/provider/googleads/server/tag/googleadsconversiontracking.go @@ -1,6 +1,7 @@ package tag import ( + "github.com/foomo/sesamy-cli/pkg/config" "github.com/foomo/sesamy-cli/pkg/utils" "google.golang.org/api/tagmanager/v2" ) @@ -9,7 +10,7 @@ func GoogleAdsConversionTrackingName(v string) string { return "GAds Conversion - " + v } -func NewGoogleAdsConversionTracking(name string, value, currency, conversionID, conversionLabel *tagmanager.Variable, triggers ...*tagmanager.Trigger) *tagmanager.Tag { +func NewGoogleAdsConversionTracking(name string, value, currency, conversionID *tagmanager.Variable, settings config.GoogleAdsConversionTracking, triggers ...*tagmanager.Trigger) *tagmanager.Tag { return &tagmanager.Tag{ FiringTriggerId: utils.TriggerIDs(triggers), Name: GoogleAdsConversionTrackingName(name), @@ -48,7 +49,7 @@ func NewGoogleAdsConversionTracking(name string, value, currency, conversionID, { Key: "conversionLabel", Type: "template", - Value: "{{" + conversionLabel.Name + "}}", + Value: settings.Label, }, { Key: "rdp", diff --git a/pkg/provider/tracify/server/template/tracifytagdata.go b/pkg/provider/tracify/server/template/tracifytagdata.go index 53b53e8..26a0a45 100644 --- a/pkg/provider/tracify/server/template/tracifytagdata.go +++ b/pkg/provider/tracify/server/template/tracifytagdata.go @@ -168,7 +168,7 @@ function mapEventData() { // Anonymized email address (optional, if available) if (eventData.user_id) { - event.identity_dataidentity[anonymize(eventData.user_id)] = 1; + event.identity_data[anonymize(eventData.user_id)] = 1; } // Anonymized session id if (remoteAddress && userAgent) { diff --git a/pkg/tagmanager/tagmanager.go b/pkg/tagmanager/tagmanager.go index 6a8e400..1e8ca68 100644 --- a/pkg/tagmanager/tagmanager.go +++ b/pkg/tagmanager/tagmanager.go @@ -78,6 +78,7 @@ func New(ctx context.Context, l *slog.Logger, accountID string, container config notes: "Managed by Sesamy. DO NOT EDIT.", folderName: "Sesamy", clientOptions: []option.ClientOption{ + option.WithLogger(l), option.WithRequestReason("Sesamy container provisioning"), }, } diff --git a/sesamy.schema.json b/sesamy.schema.json index f9a682b..3f0660a 100644 --- a/sesamy.schema.json +++ b/sesamy.schema.json @@ -249,13 +249,16 @@ "description": "Google Consent settings" }, "conversionId": { - "type": "string" + "type": "string", + "description": "Conversion id" }, "conversion": { - "$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.GoogleAdsConversion" + "$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.GoogleAdsConversion", + "description": "Google Ads Conversion settings" }, "remarketing": { - "$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.GoogleAdsRemarketing" + "$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.GoogleAdsRemarketing", + "description": "Google Ads Remarketing settings" } }, "additionalProperties": false, @@ -267,17 +270,23 @@ "type": "boolean", "description": "Enable provider" }, - "conversionLabel": { - "type": "string" - }, "serverContainer": { - "$ref": "#/$defs/github.com.foomo.gocontemplate.pkg.contemplate.Config", + "$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.ServerContainer", "description": "Google Tag Manager server container settings" } }, "additionalProperties": false, "type": "object" }, + "github.com.foomo.sesamy-cli.pkg.config.GoogleAdsConversionTracking": { + "properties": { + "label": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object" + }, "github.com.foomo.sesamy-cli.pkg.config.GoogleAdsRemarketing": { "properties": { "enabled": { @@ -410,6 +419,18 @@ "additionalProperties": false, "type": "object" }, + "github.com.foomo.sesamy-cli.pkg.config.ServerContainer": { + "properties": { + "packages": { + "$ref": "#/$defs/[]*contemplate.PackageConfig" + }, + "settings": { + "$ref": "#/$defs/map[string]config.GoogleAdsConversionTracking" + } + }, + "additionalProperties": false, + "type": "object" + }, "github.com.foomo.sesamy-cli.pkg.config.Tracify": { "properties": { "enabled": { @@ -474,6 +495,12 @@ }, "additionalProperties": false, "type": "object" + }, + "map[string]config.GoogleAdsConversionTracking": { + "additionalProperties": { + "$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.GoogleAdsConversionTracking" + }, + "type": "object" } } } \ No newline at end of file