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"
|
"github.com/foomo/gocontemplate/pkg/contemplate"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Facebook struct {
|
type (
|
||||||
// Enable provider
|
Facebook struct {
|
||||||
Enabled bool `json:"enabled" yaml:"enabled"`
|
// Enable provider
|
||||||
PixelID string `json:"pixelId" yaml:"pixelId"`
|
Enabled bool `json:"enabled" yaml:"enabled"`
|
||||||
APIAccessToken string `json:"apiAccessToken" yaml:"apiAccessToken"`
|
PixelID string `json:"pixelId" yaml:"pixelId"`
|
||||||
TestEventToken string `json:"testEventToken" yaml:"testEventToken"`
|
APIAccessToken string `json:"apiAccessToken" yaml:"apiAccessToken"`
|
||||||
// Google Consent settings
|
TestEventToken string `json:"testEventToken" yaml:"testEventToken"`
|
||||||
GoogleConsent GoogleConsent `json:"googleConsent" yaml:"googleConsent"`
|
// Google Consent settings
|
||||||
// Google Tag Manager server container settings
|
GoogleConsent GoogleConsent `json:"googleConsent" yaml:"googleConsent"`
|
||||||
ServerContainer contemplate.Config `json:"serverContainer" yaml:"serverContainer"`
|
// 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"
|
"github.com/foomo/gocontemplate/pkg/contemplate"
|
||||||
)
|
)
|
||||||
|
|
||||||
type GoogleAdsConversion struct {
|
type (
|
||||||
// Enable provider
|
GoogleAdsConversion struct {
|
||||||
Enabled bool `json:"enabled" yaml:"enabled"`
|
// Enable provider
|
||||||
// Google Tag Manager server container settings
|
Enabled bool `json:"enabled" yaml:"enabled"`
|
||||||
ServerContainer ServerContainer `json:"serverContainer" yaml:"serverContainer"`
|
// 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 {
|
func (s *GoogleAdsConversionServerContainer) Setting(eventName string) GoogleAdsConversionTracking {
|
||||||
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 {
|
if value, ok := s.Settings[eventName]; ok {
|
||||||
return value
|
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
|
{ // create tags
|
||||||
eventParameters, err := utils.LoadEventParams(cfg.ServerContainer)
|
eventParameters, err := utils.LoadEventParams(cfg.ServerContainer.Config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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)
|
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
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
package tag
|
package tag
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"github.com/foomo/sesamy-cli/pkg/config"
|
||||||
"github.com/foomo/sesamy-cli/pkg/utils"
|
"github.com/foomo/sesamy-cli/pkg/utils"
|
||||||
"google.golang.org/api/tagmanager/v2"
|
"google.golang.org/api/tagmanager/v2"
|
||||||
)
|
)
|
||||||
@ -9,7 +12,7 @@ func ConversionsAPITagName(v string) string {
|
|||||||
return "FB Conversion - " + v
|
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{
|
return &tagmanager.Tag{
|
||||||
FiringTriggerId: utils.TriggerIDs(triggers),
|
FiringTriggerId: utils.TriggerIDs(triggers),
|
||||||
Name: ConversionsAPITagName(name),
|
Name: ConversionsAPITagName(name),
|
||||||
@ -33,12 +36,12 @@ func NewConversionsAPITag(name string, pixelID, apiAccessToken, testEventCode *t
|
|||||||
{
|
{
|
||||||
Key: "enableEventEnhancement",
|
Key: "enableEventEnhancement",
|
||||||
Type: "boolean",
|
Type: "boolean",
|
||||||
Value: "false",
|
Value: strconv.FormatBool(settings.EnableEventEnhancement),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Key: "extendCookies",
|
Key: "extendCookies",
|
||||||
Type: "boolean",
|
Type: "boolean",
|
||||||
Value: "false",
|
Value: strconv.FormatBool(settings.ExtendCookies),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Key: "actionSource",
|
Key: "actionSource",
|
||||||
|
|||||||
@ -220,13 +220,39 @@
|
|||||||
"description": "Google Consent settings"
|
"description": "Google Consent settings"
|
||||||
},
|
},
|
||||||
"serverContainer": {
|
"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"
|
"description": "Google Tag Manager server container settings"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"type": "object"
|
"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": {
|
"github.com.foomo.sesamy-cli.pkg.config.GoogleAPI": {
|
||||||
"properties": {
|
"properties": {
|
||||||
"credentials": {
|
"credentials": {
|
||||||
@ -275,13 +301,25 @@
|
|||||||
"description": "Enable provider"
|
"description": "Enable provider"
|
||||||
},
|
},
|
||||||
"serverContainer": {
|
"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"
|
"description": "Google Tag Manager server container settings"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"type": "object"
|
"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": {
|
"github.com.foomo.sesamy-cli.pkg.config.GoogleAdsConversionTracking": {
|
||||||
"properties": {
|
"properties": {
|
||||||
"label": {
|
"label": {
|
||||||
@ -483,18 +521,6 @@
|
|||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"type": "object"
|
"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": {
|
"github.com.foomo.sesamy-cli.pkg.config.Tracify": {
|
||||||
"properties": {
|
"properties": {
|
||||||
"enabled": {
|
"enabled": {
|
||||||
@ -560,6 +586,12 @@
|
|||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
|
"map[string]config.FacebookConversionAPITag": {
|
||||||
|
"additionalProperties": {
|
||||||
|
"$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.FacebookConversionAPITag"
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
"map[string]config.GoogleAdsConversionTracking": {
|
"map[string]config.GoogleAdsConversionTracking": {
|
||||||
"additionalProperties": {
|
"additionalProperties": {
|
||||||
"$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.GoogleAdsConversionTracking"
|
"$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.GoogleAdsConversionTracking"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user