mirror of
https://github.com/foomo/sesamy-cli.git
synced 2025-10-16 12:35:36 +00:00
fix(provider/facebook): make enableEventEnhancement & extendCookies configurable
This commit is contained in:
parent
fd0227455b
commit
d4c9ccb16f
@ -4,14 +4,27 @@ import (
|
||||
"github.com/foomo/gocontemplate/pkg/contemplate"
|
||||
)
|
||||
|
||||
type Facebook struct {
|
||||
// Enable provider
|
||||
Enabled bool `json:"enabled" yaml:"enabled"`
|
||||
PixelID string `json:"pixelId" yaml:"pixelId"`
|
||||
APIAccessToken string `json:"apiAccessToken" yaml:"apiAccessToken"`
|
||||
TestEventToken string `json:"testEventToken" yaml:"testEventToken"`
|
||||
// Google Consent settings
|
||||
GoogleConsent GoogleConsent `json:"googleConsent" yaml:"googleConsent"`
|
||||
// Google Tag Manager server container settings
|
||||
ServerContainer contemplate.Config `json:"serverContainer" yaml:"serverContainer"`
|
||||
type (
|
||||
Facebook struct {
|
||||
// Enable provider
|
||||
Enabled bool `json:"enabled" yaml:"enabled"`
|
||||
PixelID string `json:"pixelId" yaml:"pixelId"`
|
||||
APIAccessToken string `json:"apiAccessToken" yaml:"apiAccessToken"`
|
||||
TestEventToken string `json:"testEventToken" yaml:"testEventToken"`
|
||||
// Google Consent settings
|
||||
GoogleConsent GoogleConsent `json:"googleConsent" yaml:"googleConsent"`
|
||||
// Google Tag Manager server container settings
|
||||
ServerContainer FacebookServerContainer `json:"serverContainer" yaml:"serverContainer"`
|
||||
}
|
||||
FacebookServerContainer struct {
|
||||
contemplate.Config `json:",inline" yaml:",squash"`
|
||||
Settings map[string]FacebookConversionAPITag `json:"settings" yaml:"settings"`
|
||||
}
|
||||
)
|
||||
|
||||
func (s *FacebookServerContainer) Setting(eventName string) FacebookConversionAPITag {
|
||||
if value, ok := s.Settings[eventName]; ok {
|
||||
return value
|
||||
}
|
||||
return FacebookConversionAPITag{}
|
||||
}
|
||||
|
||||
8
pkg/config/facebookconversionapitag.go
Normal file
8
pkg/config/facebookconversionapitag.go
Normal file
@ -0,0 +1,8 @@
|
||||
package config
|
||||
|
||||
type FacebookConversionAPITag struct {
|
||||
// Extend Meta Pixel cookies (fbp/fbc)
|
||||
ExtendCookies bool `json:"extendCookies" yaml:"extendCookies"`
|
||||
// Enable Use of HTTP Only Secure Cookie (gtmeec) to Enhance Event Data
|
||||
EnableEventEnhancement bool `json:"enableEventEnhancement" yaml:"enableEventEnhancement"`
|
||||
}
|
||||
@ -4,23 +4,20 @@ import (
|
||||
"github.com/foomo/gocontemplate/pkg/contemplate"
|
||||
)
|
||||
|
||||
type GoogleAdsConversion struct {
|
||||
// Enable provider
|
||||
Enabled bool `json:"enabled" yaml:"enabled"`
|
||||
// Google Tag Manager server container settings
|
||||
ServerContainer ServerContainer `json:"serverContainer" yaml:"serverContainer"`
|
||||
}
|
||||
type (
|
||||
GoogleAdsConversion struct {
|
||||
// Enable provider
|
||||
Enabled bool `json:"enabled" yaml:"enabled"`
|
||||
// Google Tag Manager server container settings
|
||||
ServerContainer GoogleAdsConversionServerContainer `json:"serverContainer" yaml:"serverContainer"`
|
||||
}
|
||||
GoogleAdsConversionServerContainer struct {
|
||||
contemplate.Config `json:",inline" yaml:",squash"`
|
||||
Settings map[string]GoogleAdsConversionTracking `json:"settings" yaml:"settings"`
|
||||
}
|
||||
)
|
||||
|
||||
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 {
|
||||
func (s *GoogleAdsConversionServerContainer) Setting(eventName string) GoogleAdsConversionTracking {
|
||||
if value, ok := s.Settings[eventName]; ok {
|
||||
return value
|
||||
}
|
||||
|
||||
5
pkg/config/googleadsconversiontracking.go
Normal file
5
pkg/config/googleadsconversiontracking.go
Normal file
@ -0,0 +1,5 @@
|
||||
package config
|
||||
|
||||
type GoogleAdsConversionTracking struct {
|
||||
Label string `json:"label" yaml:"label"`
|
||||
}
|
||||
@ -47,7 +47,7 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Facebook) erro
|
||||
}
|
||||
|
||||
{ // create tags
|
||||
eventParameters, err := utils.LoadEventParams(cfg.ServerContainer)
|
||||
eventParameters, err := utils.LoadEventParams(cfg.ServerContainer.Config)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -70,7 +70,7 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Facebook) erro
|
||||
return errors.Wrap(err, "failed to upsert event trigger: "+event)
|
||||
}
|
||||
|
||||
if _, err := tm.UpsertTag(servertagx.NewConversionsAPITag(event, pixelID, apiAccessToken, testEventToken, template, eventTrigger)); err != nil {
|
||||
if _, err := tm.UpsertTag(servertagx.NewConversionsAPITag(event, pixelID, apiAccessToken, testEventToken, cfg.ServerContainer.Setting(event), template, eventTrigger)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
package tag
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"github.com/foomo/sesamy-cli/pkg/config"
|
||||
"github.com/foomo/sesamy-cli/pkg/utils"
|
||||
"google.golang.org/api/tagmanager/v2"
|
||||
)
|
||||
@ -9,7 +12,7 @@ func ConversionsAPITagName(v string) string {
|
||||
return "FB Conversion - " + v
|
||||
}
|
||||
|
||||
func NewConversionsAPITag(name string, pixelID, apiAccessToken, testEventCode *tagmanager.Variable, template *tagmanager.CustomTemplate, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
|
||||
func NewConversionsAPITag(name string, pixelID, apiAccessToken, testEventCode *tagmanager.Variable, settings config.FacebookConversionAPITag, template *tagmanager.CustomTemplate, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
|
||||
return &tagmanager.Tag{
|
||||
FiringTriggerId: utils.TriggerIDs(triggers),
|
||||
Name: ConversionsAPITagName(name),
|
||||
@ -33,12 +36,12 @@ func NewConversionsAPITag(name string, pixelID, apiAccessToken, testEventCode *t
|
||||
{
|
||||
Key: "enableEventEnhancement",
|
||||
Type: "boolean",
|
||||
Value: "false",
|
||||
Value: strconv.FormatBool(settings.EnableEventEnhancement),
|
||||
},
|
||||
{
|
||||
Key: "extendCookies",
|
||||
Type: "boolean",
|
||||
Value: "false",
|
||||
Value: strconv.FormatBool(settings.ExtendCookies),
|
||||
},
|
||||
{
|
||||
Key: "actionSource",
|
||||
|
||||
@ -220,13 +220,39 @@
|
||||
"description": "Google Consent settings"
|
||||
},
|
||||
"serverContainer": {
|
||||
"$ref": "#/$defs/github.com.foomo.gocontemplate.pkg.contemplate.Config",
|
||||
"$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.FacebookServerContainer",
|
||||
"description": "Google Tag Manager server container settings"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"type": "object"
|
||||
},
|
||||
"github.com.foomo.sesamy-cli.pkg.config.FacebookConversionAPITag": {
|
||||
"properties": {
|
||||
"extendCookies": {
|
||||
"type": "boolean",
|
||||
"description": "Extend Meta Pixel cookies (fbp/fbc)"
|
||||
},
|
||||
"enableEventEnhancement": {
|
||||
"type": "boolean",
|
||||
"description": "Enable Use of HTTP Only Secure Cookie (gtmeec) to Enhance Event Data"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"type": "object"
|
||||
},
|
||||
"github.com.foomo.sesamy-cli.pkg.config.FacebookServerContainer": {
|
||||
"properties": {
|
||||
"packages": {
|
||||
"$ref": "#/$defs/[]*contemplate.PackageConfig"
|
||||
},
|
||||
"settings": {
|
||||
"$ref": "#/$defs/map[string]config.FacebookConversionAPITag"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"type": "object"
|
||||
},
|
||||
"github.com.foomo.sesamy-cli.pkg.config.GoogleAPI": {
|
||||
"properties": {
|
||||
"credentials": {
|
||||
@ -275,13 +301,25 @@
|
||||
"description": "Enable provider"
|
||||
},
|
||||
"serverContainer": {
|
||||
"$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.ServerContainer",
|
||||
"$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.GoogleAdsConversionServerContainer",
|
||||
"description": "Google Tag Manager server container settings"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"type": "object"
|
||||
},
|
||||
"github.com.foomo.sesamy-cli.pkg.config.GoogleAdsConversionServerContainer": {
|
||||
"properties": {
|
||||
"packages": {
|
||||
"$ref": "#/$defs/[]*contemplate.PackageConfig"
|
||||
},
|
||||
"settings": {
|
||||
"$ref": "#/$defs/map[string]config.GoogleAdsConversionTracking"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"type": "object"
|
||||
},
|
||||
"github.com.foomo.sesamy-cli.pkg.config.GoogleAdsConversionTracking": {
|
||||
"properties": {
|
||||
"label": {
|
||||
@ -483,18 +521,6 @@
|
||||
"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": {
|
||||
@ -560,6 +586,12 @@
|
||||
"additionalProperties": false,
|
||||
"type": "object"
|
||||
},
|
||||
"map[string]config.FacebookConversionAPITag": {
|
||||
"additionalProperties": {
|
||||
"$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.FacebookConversionAPITag"
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"map[string]config.GoogleAdsConversionTracking": {
|
||||
"additionalProperties": {
|
||||
"$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.GoogleAdsConversionTracking"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user