Merge pull request #91 from foomo/v0.13.1

V0.13.1
This commit is contained in:
Kevin Franklin Kim 2025-02-25 10:58:49 +01:00 committed by GitHub
commit f742f71a0b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 118 additions and 20 deletions

View File

@ -88,6 +88,15 @@ googleTagManager:
containerId: '175348980'
# The workspace id that should be used by the api
workspaceId: '10'
# Server container variables
serverContainerVariables:
eventData:
- link_url
lookupTables:
link_url_conversion_label:
input: '{{event.link_url}}'
valueTable:
123456: 'https://foomo.org/'
# --- Google Tag settings
googleTag:
@ -263,6 +272,29 @@ umami:
types:
- PageView
- SelectItem
# --- Criteo
criteo:
# Enable provider
enabled: true
# Criteo caller id
callerId: 123
# Criteo partner id
partnerId: 123456
# Criteo applicaiton id
applicationId: com.foomo
# Google Tag Manager server container settings
serverContainer:
# Contemplate package config for generated events
packages:
- path: github.com/foomo/sesamy-go/pkg/event
types:
- AddToCart
- BeginCheckout
- PageView
- Purchase
- ViewItem
- ViewItemList
- ViewCart
# --- Facebook
# https://developers.facebook.com/docs/marketing-api/conversions-api/guides/gtm-server-side

View File

@ -34,6 +34,8 @@ func dump(i interface{ MarshalJSON() ([]byte, error) }, err error) error {
func list(l *slog.Logger, tm *tagmanager.TagManager, resource string) error {
switch resource {
case "status":
return dump(tm.Service().Accounts.Containers.Workspaces.GetStatus(tm.WorkspacePath()).Do())
case "clients":
return dump(tm.Service().Accounts.Containers.Workspaces.Clients.List(tm.WorkspacePath()).Do())
case "tags":

View File

@ -17,6 +17,7 @@ func NewServer(root *cobra.Command) {
"clients",
"folders",
"gtag-config",
"status",
"tags",
"templates",
"templates-data",

View File

@ -16,6 +16,7 @@ func NewWeb(root *cobra.Command) {
"built-in-variables",
"folders",
"gtag-config",
"status",
"tags",
"templates",
"templates-data",

View File

@ -11,6 +11,8 @@ type Criteo struct {
CallerID string `json:"callerId" yaml:"callerId"`
// Criteo partner id
PartnerID string `json:"partnerId" yaml:"partnerId"`
// Criteo application id
ApplicationID string `json:"applicationId" yaml:"applicationId"`
// Google Consent settings
GoogleConsent GoogleConsent `json:"googleConsent" yaml:"googleConsent"`
// Google Tag Manager server container settings

View File

@ -5,6 +5,7 @@ const (
Name = "Criteo"
NameCallerID = "Criteo Caller ID"
NamePartnerID = "Criteo Partner ID"
NameApplicationID = "Criteo Application ID"
NameCriteoEventsAPITemplate = "Criteo Events API"
NameCriteoUserIdentificationTag = "Criteo User Identification"
NameCriteoUserIdentificationTemplate = "Criteo User Identification"

View File

@ -42,6 +42,11 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Criteo) error
return err
}
applicationID, err := tm.UpsertVariable(commonvariable.NewConstant(NameApplicationID, cfg.ApplicationID))
if err != nil {
return err
}
eventParameters, err := utils.LoadEventParams(cfg.ServerContainer)
if err != nil {
return err
@ -65,7 +70,7 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Criteo) error
return errors.Wrap(err, "failed to upsert event trigger: "+event)
}
if _, err := tm.UpsertTag(servertagx.NewEventsAPITag(event, callerID, partnerID, template, eventTrigger)); err != nil {
if _, err := tm.UpsertTag(servertagx.NewEventsAPITag(event, callerID, partnerID, applicationID, template, eventTrigger)); err != nil {
return err
}
}

View File

@ -9,7 +9,7 @@ func EventsAPITagName(v string) string {
return "Criteo - " + v
}
func NewEventsAPITag(name string, callerID, partnerID *tagmanager.Variable, template *tagmanager.CustomTemplate, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
func NewEventsAPITag(name string, callerID, partnerID, applicationID *tagmanager.Variable, template *tagmanager.CustomTemplate, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
return &tagmanager.Tag{
FiringTriggerId: utils.TriggerIDs(triggers),
Name: EventsAPITagName(name),
@ -34,8 +34,14 @@ func NewEventsAPITag(name string, callerID, partnerID *tagmanager.Variable, temp
Value: "false",
},
{
Key: "applicationId",
Type: "template",
Key: "callerId",
Type: "template",
Value: "{{" + callerID.Name + "}}",
},
{
Key: "applicationId",
Type: "template",
Value: "{{" + applicationID.Name + "}}",
},
},
Type: utils.TemplateType(template),

View File

@ -1,6 +1,9 @@
package variable
import (
"maps"
"slices"
"github.com/foomo/sesamy-cli/pkg/config"
"google.golang.org/api/tagmanager/v2"
)
@ -11,24 +14,32 @@ func LookupTableName(v string) string {
func NewLookupTable(name string, data config.LookupTable) *tagmanager.Variable {
var list []*tagmanager.Parameter
for k, v := range data.KeyTable {
list = append(list, &tagmanager.Parameter{
Type: "map",
Map: []*tagmanager.Parameter{
{
Key: "key",
Type: "template",
Value: k,
{
keys := slices.AppendSeq(make([]string, 0, len(data.KeyTable)), maps.Keys(data.KeyTable))
slices.Sort(keys)
for _, k := range keys {
v := data.KeyTable[k]
list = append(list, &tagmanager.Parameter{
Type: "map",
Map: []*tagmanager.Parameter{
{
Key: "key",
Type: "template",
Value: k,
},
{
Key: "value",
Type: "template",
Value: v,
},
},
{
Key: "value",
Type: "template",
Value: v,
},
},
})
})
}
}
for k, v := range data.ValueTable {
keys := slices.AppendSeq(make([]string, 0, len(data.ValueTable)), maps.Keys(data.ValueTable))
slices.Sort(keys)
for _, k := range keys {
v := data.ValueTable[k]
list = append(list, &tagmanager.Parameter{
Type: "map",
Map: []*tagmanager.Parameter{

View File

@ -166,6 +166,10 @@
"type": "string",
"description": "Criteo partner id"
},
"applicationId": {
"type": "string",
"description": "Criteo application id"
},
"googleConsent": {
"$ref": "#/$defs/github.com.foomo.sesamy-cli.pkg.config.GoogleConsent",
"description": "Google Consent settings"

View File

@ -36,6 +36,15 @@ googleTagManager:
containerId: '175348980'
# The workspace id that should be used by the api
workspaceId: '10'
# Server container variables
serverContainerVariables:
eventData:
- link_url
lookupTables:
link_url_conversion_label:
input: '{{event.link_url}}'
valueTable:
123456: 'https://foomo.org/'
# --- Google Tag settings
googleTag:
@ -219,6 +228,30 @@ umami:
- PageView
- SelectItem
# --- Criteo
criteo:
# Enable provider
enabled: true
# Criteo caller id
callerId: 123
# Criteo partner id
partnerId: 123456
# Criteo applicaiton id
applicationId: com.foomo
# Google Tag Manager server container settings
serverContainer:
# Contemplate package config for generated events
packages:
- path: github.com/foomo/sesamy-go/pkg/event
types:
- AddToCart
- BeginCheckout
- PageView
- Purchase
- ViewItem
- ViewItemList
- ViewCart
# --- Facebook
# https://developers.facebook.com/docs/marketing-api/conversions-api/guides/gtm-server-side
facebook: