{
    "exportFormatVersion": 2,
    "exportTime": "2026-10-03 10:29:11",
    "containerVersion": {
        "path": "accounts/6374306328/containers/262776217/versions/0",
        "accountId": "6374306328",
        "containerId": "262776217",
        "containerVersionId": "0",
        "container": {
            "path": "accounts/6374306328/containers/262776217",
            "accountId": "6374306328",
            "containerId": "262776217",
            "name": "PixelFly - Web (Proxy)",
            "publicId": "GTM-K3CRPTH7",
            "usageContext": [
                "WEB"
            ],
            "fingerprint": "1788193050266",
            "tagManagerUrl": "https://tagmanager.google.com/#/container/accounts/6374306328/containers/262776217/workspaces?apiLink=container",
            "features": {
                "supportUserPermissions": true,
                "supportEnvironments": true,
                "supportWorkspaces": true,
                "supportGtagConfigs": false,
                "supportBuiltInVariables": true,
                "supportClients": false,
                "supportFolders": true,
                "supportTags": true,
                "supportTemplates": true,
                "supportTriggers": true,
                "supportVariables": true,
                "supportVersions": true,
                "supportZones": true,
                "supportTransformations": false
            },
            "tagIds": [
                "GTM-K3CRPTH7"
            ]
        },
        "tag": [
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "26",
                "name": "🟡GA4 | view_item",
                "type": "gaawe",
                "parameter": [
                    {
                        "type": "LIST",
                        "key": "eventSettingsTable",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "value"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{✅dlv-value}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "currency"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{✅dlv-currency}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.country"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer country}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.first_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer first_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.last_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer last_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.phone_number"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer phone}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.region"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{--CUD-state}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventName",
                        "value": "view_item"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "measurementIdOverride",
                        "value": "{{GA4-FM ID}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "sendEcommerceData",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "getEcommerceDataFrom",
                        "value": "dataLayer"
                    }
                ],
                "fingerprint": "1791001751368",
                "firingTriggerId": [
                    "5"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "32",
                "name": "cHTML-SetUserData",
                "type": "html",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "html",
                        "value": "<script>\n  \nlocalStorage.setItem('first_name', {{-Set-name}});\nlocalStorage.setItem('phone',{{-Set-phone}});\nlocalStorage.setItem('state',{{-Set-state}});\n\n</script>"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "supportDocumentWrite",
                        "value": "false"
                    }
                ],
                "fingerprint": "1788192217940",
                "firingTriggerId": [
                    "30"
                ],
                "tagFiringOption": "ONCE_PER_EVENT",
                "paused": true,
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "39",
                "name": "🔵Google Ads || UserData",
                "type": "awud",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "userDataVariable",
                        "value": "{{🟣Gads-UserData}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableConversionLinker",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "conversionId",
                        "value": "{{🟣GAds-Conversion ID}}"
                    }
                ],
                "fingerprint": "1790951149819",
                "firingTriggerId": [
                    "35"
                ],
                "tagFiringOption": "ONCE_PER_EVENT",
                "paused": true,
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                },
                "blockingTriggerId": [
                    "95"
                ]
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "43",
                "name": "🟡GA4 | begin_checkout",
                "type": "gaawe",
                "parameter": [
                    {
                        "type": "LIST",
                        "key": "eventSettingsTable",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "value"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{✅dlv-value}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "currency"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{✅dlv-currency}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.country"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer country}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.first_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer first_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.last_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer last_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.phone_number"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer phone}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.region"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{--CUD-state}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventName",
                        "value": "begin_checkout"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "measurementIdOverride",
                        "value": "{{GA4-FM ID}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "sendEcommerceData",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "getEcommerceDataFrom",
                        "value": "dataLayer"
                    }
                ],
                "fingerprint": "1791001751368",
                "firingTriggerId": [
                    "42"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "50",
                "name": "🔴Meta Ads Pixel-AddToCart",
                "type": "cvt_262776217_47",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "disablePushState",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventId",
                        "value": "{{cJS - PixelFly event ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "standardEventName",
                        "value": "AddToCart"
                    },
                    {
                        "type": "LIST",
                        "key": "advancedMatchingList",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "external_id"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-External ID}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "cn"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer country}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "fn"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer first_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "ln"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer last_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "ph"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer phone}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "st"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{--CUD-state}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "em"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer email}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "objectPropertiesFromVariable",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "consent",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "pixelId",
                        "value": "{{Meta Pixel ID-000}}"
                    },
                    {
                        "type": "LIST",
                        "key": "objectPropertyList",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-content_names}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_ids"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-content_ids}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "currency"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-currency}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "value"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-value}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "num_items"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-num_items}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "contents"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-Contents}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "event_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "AddToCart"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_category"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-category}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_type"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-content_Type}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "disableAutoConfig",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enhancedEcommerce",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "dpoLDU",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventName",
                        "value": "standard"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "advancedMatching",
                        "value": "true"
                    }
                ],
                "fingerprint": "1788192218028",
                "firingTriggerId": [
                    "48"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "51",
                "name": "🔵Google Ads || AW Tag",
                "type": "googtag",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "tagId",
                        "value": "AW-0000000000"
                    }
                ],
                "fingerprint": "1788192218029",
                "firingTriggerId": [
                    "2147479553"
                ],
                "tagFiringOption": "ONCE_PER_EVENT",
                "paused": true,
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "56",
                "name": "🔵Google Ads || add_to_cart",
                "type": "awct",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "enableNewCustomerReporting",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableConversionLinker",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "orderId",
                        "value": "{{✅dlv-transaction_id}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableProductReporting",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "conversionValue",
                        "value": "{{✅dlv-value}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableShippingData",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "conversionId",
                        "value": "{{🟣GAds-Conversion ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "currencyCode",
                        "value": "{{✅dlv-currency}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "conversionLabel",
                        "value": "000000000000"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "rdp",
                        "value": "false"
                    }
                ],
                "fingerprint": "1788192218029",
                "firingTriggerId": [
                    "48"
                ],
                "tagFiringOption": "ONCE_PER_EVENT",
                "paused": true,
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "58",
                "name": "🔴Meta Ads Pixel-ViewContent",
                "type": "cvt_262776217_47",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "disablePushState",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventId",
                        "value": "{{cJS - PixelFly event ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "standardEventName",
                        "value": "ViewContent"
                    },
                    {
                        "type": "LIST",
                        "key": "advancedMatchingList",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "external_id"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-External ID}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "cn"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer country}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "fn"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer first_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "ln"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer last_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "ph"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer phone}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "st"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{--CUD-state}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "em"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer email}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "objectPropertiesFromVariable",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "consent",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "pixelId",
                        "value": "{{Meta Pixel ID-000}}"
                    },
                    {
                        "type": "LIST",
                        "key": "objectPropertyList",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "event_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "ViewContent"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_type"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-content_Type}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-content_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_ids"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-content_id}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "value"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-value}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "currency"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-currency}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "contents"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-Contents}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_category"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-category}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "disableAutoConfig",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enhancedEcommerce",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "dpoLDU",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventName",
                        "value": "standard"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "advancedMatching",
                        "value": "true"
                    }
                ],
                "fingerprint": "1788192218029",
                "firingTriggerId": [
                    "5"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "60",
                "name": "🟡GA4 | add_to_cart",
                "type": "gaawe",
                "parameter": [
                    {
                        "type": "LIST",
                        "key": "eventSettingsTable",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "value"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{✅dlv-value}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "currency"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{✅dlv-currency}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.country"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer country}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.first_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer first_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.last_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer last_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.phone_number"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer phone}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.region"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{--CUD-state}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventName",
                        "value": "add_to_cart"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "measurementIdOverride",
                        "value": "{{GA4-FM ID}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "sendEcommerceData",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "getEcommerceDataFrom",
                        "value": "dataLayer"
                    }
                ],
                "fingerprint": "1791001751368",
                "firingTriggerId": [
                    "48"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "66",
                "name": "Google Tag",
                "type": "googtag",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "tagId",
                        "value": "{{GA4-FM ID}}"
                    },
                    {
                        "type": "LIST",
                        "key": "configSettingsTable",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "send_page_view"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "false"
                                    }
                                ]
                            }
                        ]
                    }
                ],
                "fingerprint": "1791001751368",
                "firingTriggerId": [
                    "2147479553"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "69",
                "name": "⚫TikTok Ads Pixel-Purchase",
                "type": "cvt_MRQN8",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "single_multi_product",
                        "value": "multiple"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "external_id",
                        "value": "{{✅[cJS]-External ID}}"
                    },
                    {
                        "type": "LIST",
                        "key": "custom_properties",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "key",
                                        "value": "content_type"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "product"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "pixel_code",
                        "value": "{{Tiktok_Pixel-000}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enhance_ecomm",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "event_id",
                        "value": "{{cJS - PixelFly event ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "contents",
                        "value": "{{1. TikTok-Items}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "phone",
                        "value": "{{-----Correct Phone}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "currency",
                        "value": "{{✅dlv-currency}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "event",
                        "value": "{{tiktok-purchase}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "{{✅dlv-value}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "order_id",
                        "value": "{{✅dlv-transaction_id}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "hash",
                        "value": "non-hashed"
                    }
                ],
                "fingerprint": "1790951149819",
                "firingTriggerId": [
                    "35"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "paused": true,
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                },
                "blockingTriggerId": [
                    "95"
                ]
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "70",
                "name": "⚫TikTok Ads Pixel-AddToCart",
                "type": "cvt_MRQN8",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "single_multi_product",
                        "value": "multiple"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "event_id",
                        "value": "{{cJS - PixelFly event ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "contents",
                        "value": "{{1. TikTok-Items}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "currency",
                        "value": "{{✅dlv-currency}}"
                    },
                    {
                        "type": "LIST",
                        "key": "custom_properties",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "key",
                                        "value": "content_type"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "product"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "pixel_code",
                        "value": "{{Tiktok_Pixel-000}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "event",
                        "value": "AddToCart"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "{{✅dlv-value}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enhance_ecomm",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "hash",
                        "value": "non-hashed"
                    }
                ],
                "fingerprint": "1788192218088",
                "firingTriggerId": [
                    "48"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "paused": true,
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "72",
                "name": "🔵Google Ads || Purchase",
                "type": "awct",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "productReportingDataSource",
                        "value": "JSON"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableNewCustomerReporting",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableConversionLinker",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "orderId",
                        "value": "{{✅dlv-transaction_id}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableProductReporting",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "conversionValue",
                        "value": "{{✅dlv-value}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableShippingData",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "conversionId",
                        "value": "{{🟣GAds-Conversion ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "currencyCode",
                        "value": "{{✅dlv-currency}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "items",
                        "value": "{{🟣Gads-items}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "conversionLabel",
                        "value": "00000000000"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "rdp",
                        "value": "false"
                    }
                ],
                "fingerprint": "1790951149819",
                "firingTriggerId": [
                    "35"
                ],
                "tagFiringOption": "ONCE_PER_EVENT",
                "paused": true,
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                },
                "blockingTriggerId": [
                    "95"
                ]
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "81",
                "name": "🔴Meta Ads Pixel-ViewCart",
                "type": "cvt_262776217_47",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "disablePushState",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventId",
                        "value": "{{cJS - PixelFly event ID}}"
                    },
                    {
                        "type": "LIST",
                        "key": "advancedMatchingList",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "external_id"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-External ID}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "cn"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer country}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "fn"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer first_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "ln"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer last_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "ph"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer phone}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "st"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{--CUD-state}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "em"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer email}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "objectPropertiesFromVariable",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "consent",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "pixelId",
                        "value": "{{Meta Pixel ID-000}}"
                    },
                    {
                        "type": "LIST",
                        "key": "objectPropertyList",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-content_names}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_ids"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-content_ids}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "currency"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-currency}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "value"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{VC-value}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "num_items"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-num_items}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "contents"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-Contents}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "event_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "view_cart"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_category"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-category}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_type"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-content_Type}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "disableAutoConfig",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enhancedEcommerce",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "dpoLDU",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventName",
                        "value": "custom"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "customEventName",
                        "value": "view_cart"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "advancedMatching",
                        "value": "true"
                    }
                ],
                "fingerprint": "1788192218097",
                "firingTriggerId": [
                    "53"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "83",
                "name": "⚫TikTok Ads Pixel-InitiateCheckout",
                "type": "cvt_MRQN8",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "single_multi_product",
                        "value": "multiple"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "event_id",
                        "value": "{{cJS - PixelFly event ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "contents",
                        "value": "{{1. TikTok-Items}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "currency",
                        "value": "{{✅dlv-currency}}"
                    },
                    {
                        "type": "LIST",
                        "key": "custom_properties",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "key",
                                        "value": "content_type"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "product"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "pixel_code",
                        "value": "{{Tiktok_Pixel-000}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "event",
                        "value": "InitiateCheckout"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "{{✅dlv-value}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enhance_ecomm",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "hash",
                        "value": "non-hashed"
                    }
                ],
                "fingerprint": "1788192218097",
                "firingTriggerId": [
                    "42"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "paused": true,
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "85",
                "name": "🔴Meta Ads Pixel-PageView",
                "type": "cvt_262776217_47",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "disablePushState",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventId",
                        "value": "{{cJS - PixelFly event ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "standardEventName",
                        "value": "PageView"
                    },
                    {
                        "type": "LIST",
                        "key": "advancedMatchingList",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "external_id"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-External ID}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "cn"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer country}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "fn"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer first_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "ln"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer last_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "ph"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer phone}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "st"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{--CUD-state}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "em"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer email}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "objectPropertiesFromVariable",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "consent",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "pixelId",
                        "value": "{{Meta Pixel ID-000}}"
                    },
                    {
                        "type": "LIST",
                        "key": "objectPropertyList",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "event_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "PageView"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "disableAutoConfig",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enhancedEcommerce",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "dpoLDU",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventName",
                        "value": "standard"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "advancedMatching",
                        "value": "true"
                    }
                ],
                "fingerprint": "1788192218097",
                "firingTriggerId": [
                    "2147479553"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "87",
                "name": "🔵Conversion Linker",
                "type": "gclidw",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "enableCrossDomain",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableUrlPassthrough",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableCookieOverrides",
                        "value": "false"
                    }
                ],
                "fingerprint": "1788192218098",
                "firingTriggerId": [
                    "2147479553"
                ],
                "tagFiringOption": "ONCE_PER_EVENT",
                "paused": true,
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "90",
                "name": "🟡GA4 | page_view",
                "type": "gaawe",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "sendEcommerceData",
                        "value": "false"
                    },
                    {
                        "type": "LIST",
                        "key": "eventSettingsTable",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.country"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer country}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.first_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer first_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.last_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer last_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.phone_number"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer phone}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.region"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{--CUD-state}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventName",
                        "value": "page_view"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "measurementIdOverride",
                        "value": "{{GA4-FM ID}}"
                    }
                ],
                "fingerprint": "1791001751368",
                "firingTriggerId": [
                    "2147479553"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "96",
                "name": "🟡GA4 | purchase",
                "type": "gaawe",
                "parameter": [
                    {
                        "type": "LIST",
                        "key": "eventSettingsTable",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "value"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{✅dlv-value}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "currency"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{✅dlv-currency}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "transaction_id"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{✅dlv-transaction_id}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "tax"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{✅dlv-tax}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "shipping"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{✅dlv-shipping}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.country"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer country}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.first_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer first_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.last_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer last_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.phone_number"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer phone}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.region"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{--CUD-state}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.email_address"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer email}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventName",
                        "value": "purchase"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "measurementIdOverride",
                        "value": "{{GA4-FM ID}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "sendEcommerceData",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "getEcommerceDataFrom",
                        "value": "dataLayer"
                    }
                ],
                "fingerprint": "1791001751368",
                "firingTriggerId": [
                    "35"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                },
                "blockingTriggerId": [
                    "95",
                    "96"
                ]
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "101",
                "name": "🔵Google Ads || begin_checkout",
                "type": "awct",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "productReportingDataSource",
                        "value": "JSON"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "newCustomerReportingDataSource",
                        "value": "JSON"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "awNewCustomer",
                        "value": "{{dlv-new_customer}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "orderId",
                        "value": "{{✅dlv-transaction_id}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableProductReporting",
                        "value": "true"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableShippingData",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableNewCustomerReporting",
                        "value": "true"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enableConversionLinker",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "conversionValue",
                        "value": "{{✅dlv-value}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "conversionId",
                        "value": "{{🟣GAds-Conversion ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "currencyCode",
                        "value": "{{✅dlv-currency}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "items",
                        "value": "{{🟣Gads-items}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "conversionLabel",
                        "value": "0000000000000"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "rdp",
                        "value": "false"
                    }
                ],
                "fingerprint": "1788192218123",
                "firingTriggerId": [
                    "42"
                ],
                "tagFiringOption": "ONCE_PER_EVENT",
                "paused": true,
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "102",
                "name": "🔴Meta Ads Pixel-Purchase",
                "type": "cvt_262776217_47",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "disablePushState",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventId",
                        "value": "{{cJS - PixelFly event ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "standardEventName",
                        "value": "Purchase"
                    },
                    {
                        "type": "LIST",
                        "key": "advancedMatchingList",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "external_id"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-External ID}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "fn"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer first_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "ln"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer last_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "cn"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer country}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "ph"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer phone}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "st"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{--CUD-state}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "em"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer email}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "objectPropertiesFromVariable",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "consent",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "pixelId",
                        "value": "{{Meta Pixel ID-000}}"
                    },
                    {
                        "type": "LIST",
                        "key": "objectPropertyList",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "event_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "Purchase"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_type"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-content_Type}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-content_names}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_ids"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-content_ids}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "value"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-value}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "currency"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-currency}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "order_id"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-transaction_id}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "num_items"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-num_items}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "contents"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-Contents}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "disableAutoConfig",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enhancedEcommerce",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "dpoLDU",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventName",
                        "value": "standard"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "advancedMatching",
                        "value": "true"
                    }
                ],
                "fingerprint": "1790951149819",
                "firingTriggerId": [
                    "35"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                },
                "blockingTriggerId": [
                    "95"
                ]
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "103",
                "name": "🟡GA4 | view_cart",
                "type": "gaawe",
                "parameter": [
                    {
                        "type": "LIST",
                        "key": "eventSettingsTable",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "value"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{VC-value}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "currency"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{✅dlv-currency}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.country"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer country}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.first_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer first_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.last_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer last_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.phone_number"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{cJS - PixelFly customer phone}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameter",
                                        "value": "user_data.address.region"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "parameterValue",
                                        "value": "{{--CUD-state}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventName",
                        "value": "view_cart"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "measurementIdOverride",
                        "value": "{{GA4-FM ID}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "sendEcommerceData",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "getEcommerceDataFrom",
                        "value": "dataLayer"
                    }
                ],
                "fingerprint": "1791001751368",
                "firingTriggerId": [
                    "53"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "104",
                "name": "⚫TikTok Ads Pixel-PageView",
                "type": "html",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "html",
                        "value": "<!-- TikTok Pixel Code Start -->\n<script>\n!function (w, d, t) {\n  w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=[\"page\",\"track\",\"identify\",\"instances\",\"debug\",\"on\",\"off\",\"once\",\"ready\",\"alias\",\"group\",\"enableCookie\",\"disableCookie\",\"holdConsent\",\"revokeConsent\",\"grantConsent\"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(\nvar e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var r=\"https://analytics.tiktok.com/i18n/pixel/events.js\",o=n&&n.partner;ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=r,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};n=document.createElement(\"script\")\n;n.type=\"text/javascript\",n.async=!0,n.src=r+\"?sdkid=\"+e+\"&lib=\"+t;e=document.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(n,e)};\n\n\n  ttq.load('0000000000000');\n  ttq.page();\n}(window, document, 'ttq');\n</script>\n<!-- TikTok Pixel Code End -->"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "supportDocumentWrite",
                        "value": "false"
                    }
                ],
                "fingerprint": "1789878491633",
                "firingTriggerId": [
                    "2147479553"
                ],
                "tagFiringOption": "ONCE_PER_EVENT",
                "paused": true,
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "109",
                "name": "🔴Meta Ads Pixel-InitiateCheckout",
                "type": "cvt_262776217_47",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "disablePushState",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventId",
                        "value": "{{cJS - PixelFly event ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "standardEventName",
                        "value": "InitiateCheckout"
                    },
                    {
                        "type": "LIST",
                        "key": "advancedMatchingList",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "external_id"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-External ID}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "cn"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer country}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "fn"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer first_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "ln"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer last_name}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "ph"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer phone}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "st"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{--CUD-state}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "em"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly customer email}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "objectPropertiesFromVariable",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "consent",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "pixelId",
                        "value": "{{Meta Pixel ID-000}}"
                    },
                    {
                        "type": "LIST",
                        "key": "objectPropertyList",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "event_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "InitiateCheckout"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_type"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-content_Type}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_name"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-content_names}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_ids"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-content_ids}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "value"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-value}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "currency"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-currency}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "content_category"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-category}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "num_items"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅dlv-num_items}}"
                                    }
                                ]
                            },
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "contents"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{✅[cJS]-Contents}}"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "disableAutoConfig",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enhancedEcommerce",
                        "value": "false"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "dpoLDU",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventName",
                        "value": "standard"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "advancedMatching",
                        "value": "true"
                    }
                ],
                "fingerprint": "1788192218124",
                "firingTriggerId": [
                    "42"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "110",
                "name": "⚫TikTok Ads Pixel-ViewContent",
                "type": "cvt_MRQN8",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "single_multi_product",
                        "value": "multiple"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "event_id",
                        "value": "{{cJS - PixelFly event ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "contents",
                        "value": "{{1. TikTok-Items}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "currency",
                        "value": "{{✅dlv-currency}}"
                    },
                    {
                        "type": "LIST",
                        "key": "custom_properties",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "key",
                                        "value": "content_type"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "product"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "pixel_code",
                        "value": "{{Tiktok_Pixel-000}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "event",
                        "value": "ViewContent"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "{{✅dlv-value}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "enhance_ecomm",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "hash",
                        "value": "non-hashed"
                    }
                ],
                "fingerprint": "1788192218125",
                "firingTriggerId": [
                    "5"
                ],
                "tagFiringOption": "ONCE_PER_LOAD",
                "paused": true,
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "111",
                "name": "🟢PixelFly | Server-Side Tracking",
                "type": "cvt_262776217_101",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "endpoint",
                        "value": "{{PixelFly - Server URL}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "apiKey",
                        "value": "{{PixelFly API Key}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventSource",
                        "value": "auto"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventIdVariable",
                        "value": "{{cJS - PixelFly event ID}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "autoGenerateEventId",
                        "value": "true"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "autoCaptureFbCookies",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "fbpVariable",
                        "value": "{{✅fbp}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "fbcVariable",
                        "value": "{{✅fbc}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "transactionId",
                        "value": "{{✅dlv-transaction_id}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventValue",
                        "value": "{{✅dlv-value}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventCurrency",
                        "value": "{{✅dlv-currency}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventShipping",
                        "value": "{{✅dlv-shipping}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "eventItems",
                        "value": "{{✅eEommerce_items}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "contentName",
                        "value": "{{✅[cJS]-content_names}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "contentCategory",
                        "value": "{{✅dlv-category}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "externalId",
                        "value": "{{✅[cJS]-External ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "clientIdVariable",
                        "value": "{{cJS - PixelFly GA client ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "sessionIdVariable",
                        "value": "{{cJS - PixelFly GA session ID}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "userEmail",
                        "value": "{{cJS - PixelFly customer email}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "userPhone",
                        "value": "{{cJS - PixelFly customer phone}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "userFirstName",
                        "value": "{{cJS - PixelFly customer first_name}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "userLastName",
                        "value": "{{cJS - PixelFly customer last_name}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "userCity",
                        "value": "{{cJS - PixelFly customer city}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "userCountry",
                        "value": "{{cJS - PixelFly customer country}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "userZip",
                        "value": "{{cJS - PixelFly customer zip}}"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "sendConsentSignals",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "consentSource",
                        "value": "auto"
                    }
                ],
                "fingerprint": "1791001751368",
                "firingTriggerId": [
                    "2147479553",
                    "5",
                    "48",
                    "42",
                    "53",
                    "80",
                    "94",
                    "35"
                ],
                "blockingTriggerId": [
                    "95"
                ],
                "tagFiringOption": "ONCE_PER_EVENT",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "tagId": "112",
                "name": "PixelFly COD Protection (hold)",
                "type": "cvt_262776217_102",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "serverHost",
                        "value": "{{PixelFly - COD Host}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "apiKey",
                        "value": "{{PixelFly API Key}}"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "dataMode",
                        "value": "auto"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "skipIfNotCod",
                        "value": "true"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "logToConsole",
                        "value": "false"
                    },
                    {
                        "type": "LIST",
                        "key": "additionalFields",
                        "list": [
                            {
                                "type": "MAP",
                                "map": [
                                    {
                                        "type": "TEMPLATE",
                                        "key": "name",
                                        "value": "ga_session_id"
                                    },
                                    {
                                        "type": "TEMPLATE",
                                        "key": "value",
                                        "value": "{{cJS - PixelFly GA session ID}}"
                                    }
                                ]
                            }
                        ]
                    }
                ],
                "fingerprint": "1791001751368",
                "firingTriggerId": [
                    "95"
                ],
                "tagFiringOption": "ONCE_PER_EVENT",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            }
        ],
        "trigger": [
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "triggerId": "5",
                "name": "cEvent-view_item",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "view_item"
                            }
                        ]
                    }
                ],
                "fingerprint": "1788192217934"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "triggerId": "30",
                "name": "setitem",
                "type": "CLICK",
                "filter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{Click Classes}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "order-submit-btn"
                            }
                        ]
                    }
                ],
                "fingerprint": "1788192217940"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "triggerId": "35",
                "name": "cEvent-purchase",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "purchase"
                            }
                        ]
                    }
                ],
                "filter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{📌 prevention_reload}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "false"
                            }
                        ]
                    }
                ],
                "fingerprint": "1788192217940"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "triggerId": "42",
                "name": "cEvent-begin_checkout",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "begin_checkout"
                            }
                        ]
                    }
                ],
                "fingerprint": "1788192217941"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "triggerId": "48",
                "name": "cEvent-add_to_cart",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "add_to_cart"
                            }
                        ]
                    }
                ],
                "fingerprint": "1788192218028"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "triggerId": "53",
                "name": "cEvent-view_cart",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "view_cart"
                            }
                        ]
                    }
                ],
                "fingerprint": "1788192218029"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "triggerId": "80",
                "name": "cEvent-add_payment_info",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "add_payment_info"
                            }
                        ]
                    }
                ],
                "fingerprint": "1788192218097"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "triggerId": "94",
                "name": "cEvent-add_shipping_info",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "add_shipping_info"
                            }
                        ]
                    }
                ],
                "fingerprint": "1788192218098"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "triggerId": "95",
                "name": "cEvent-purchase - COD hold (PixelFly)",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "purchase"
                            }
                        ]
                    }
                ],
                "filter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{📌 prevention_reload}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "false"
                            }
                        ]
                    },
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{cJS - PixelFly COD hold}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "true"
                            }
                        ]
                    }
                ],
                "fingerprint": "1790951149819"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "triggerId": "96",
                "name": "cEvent-purchase - GA4 via PixelFly",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "purchase"
                            }
                        ]
                    }
                ],
                "filter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{📌 prevention_reload}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "false"
                            }
                        ]
                    },
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{PixelFly - GA4 purchase via}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "pixelfly"
                            }
                        ]
                    }
                ],
                "fingerprint": "1791001751368"
            }
        ],
        "variable": [
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "3",
                "name": "✅dlv-content_name",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ecommerce.items.0.item_name"
                    }
                ],
                "fingerprint": "1788192217934",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "4",
                "name": "--CUD-lname",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.last_name"
                    }
                ],
                "fingerprint": "1788192217934",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "6",
                "name": "--CUD-phone",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.phone_number"
                    }
                ],
                "fingerprint": "1788192217934",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "7",
                "name": "✅[cJS]-External ID",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() { \n    function generateUUID() { \n        var d = new Date().getTime();\n        var d2 = (performance && performance.now && (performance.now()*1000)) || 0; \n        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n            var r = Math.random() * 16;\n            if(d > 0){ \n                r = (d + r)%16 | 0;\n                d = Math.floor(d/16);\n            } else { \n                r = (d2 + r)%16 | 0;\n                d2 = Math.floor(d2/16);\n            }\n            return (c==='x' ? r : (r&0x3|0x8)).toString(16);\n        });\n    }  \n    function setCookie(name, value, days) {\n        var expires = \"\";\n        if (days) {\n            var date = new Date();\n            date.setTime(date.getTime() + (days*24*60*60*1000));\n            expires = \"; expires=\" + date.toUTCString();\n        }\n        document.cookie = name + \"=\" + (value || \"\")  + expires + \"; path=/\";\n    }   \n    function getCookie(name) {\n        var nameEQ = name + \"=\";\n        var ca = document.cookie.split(';');\n        for(var i=0;i < ca.length;i++) {\n            var c = ca[i];\n            while (c.charAt(0)==' ') c = c.substring(1,c.length);\n            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);\n        }\n        return null;\n    }   \n    var urlParams = new URLSearchParams(window.location.search);\n    var externalIdFromUrl = urlParams.get('external_id');  \n    var externalIdFromCookie = getCookie('external_id');   \n    if (externalIdFromUrl && externalIdFromUrl !== '') {\n        setCookie('external_id', externalIdFromUrl, 365);\n        return externalIdFromUrl;\n    }  \n    if (externalIdFromCookie && externalIdFromCookie !== '') {\n        return externalIdFromCookie;\n    }  \n    var generatedUUID = generateUUID();\n    setCookie('external_id', generatedUUID, 365);\n    return generatedUUID;\n}"
                    }
                ],
                "fingerprint": "1788192217934",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "8",
                "name": "✅eEommerce_items",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ecommerce.items"
                    }
                ],
                "fingerprint": "1788192217935",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "9",
                "name": "✅[cJS]-content_ids",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function(){\n    function getData(input){\n        var x = [];\n        for (var i = input.length - 1; i >=0; i--) {\n            x.push(input[i].item_id);\n          }\n            return x;\n      }\n       var data = getData({{✅eEommerce_items}});\n      if(data == \"undefined\" ){\n        data =\"\"; }\n        \n        return data;\n}"
                    }
                ],
                "fingerprint": "1788192217935",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "10",
                "name": "✅dlv-category",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ecommerce.items.0.item_category"
                    }
                ],
                "fingerprint": "1788192217935",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "11",
                "name": "--CUD-fname",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.first_name"
                    }
                ],
                "fingerprint": "1788192217935",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "13",
                "name": "-✅[Meta Event ID]",
                "type": "cvt_M63B8",
                "fingerprint": "1789878624813",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "14",
                "name": "✅dlv-currency",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ecommerce.currency"
                    }
                ],
                "fingerprint": "1788192217938",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "15",
                "name": "GA4-FM ID",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "G-XXXXXXXXXX"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {},
                "notes": "Your GA4 Measurement ID (G-...)."
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "16",
                "name": "✅dlv-content_Type",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "product_group"
                    }
                ],
                "fingerprint": "1788192217938",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "17",
                "name": "✅[cJS]-Event_Time",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  return Math.floor(Date.now() / 1000);\n}"
                    }
                ],
                "fingerprint": "1788192217938",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "18",
                "name": "✅fbp",
                "type": "k",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "decodeCookie",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "_fbp"
                    }
                ],
                "fingerprint": "1788192217939",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "19",
                "name": "--CUD-state",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.address"
                    }
                ],
                "fingerprint": "1788192217939",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "20",
                "name": "✅fbc",
                "type": "k",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "decodeCookie",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "_fbc"
                    }
                ],
                "fingerprint": "1788192217939",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "21",
                "name": "--CUD-country",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.country"
                    }
                ],
                "fingerprint": "1788192217939",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "22",
                "name": "✅dlv-num_items",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ecommerce.items.0.quantity"
                    }
                ],
                "fingerprint": "1788192217939",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "23",
                "name": "1. TikTok-Items",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var items = {{✅eEommerce_items}}; // Items Array\n\n  return JSON.stringify(items.map(function(item) {\n    return {\n      content_id: item.item_id.toString(),\n      content_name: item.item_name,\n      price: parseFloat(item.price),\n      quantity: item.quantity ? parseFloat(item.quantity) : 1,\n      content_category: item.item_category\n    };\n  }));\n}"
                    }
                ],
                "fingerprint": "1788192217939",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "24",
                "name": "✅dlv-value",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ecommerce.value"
                    }
                ],
                "fingerprint": "1788192217939",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "25",
                "name": "--✅TikTok-ttp",
                "type": "k",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "decodeCookie",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "_ttp"
                    }
                ],
                "fingerprint": "1788192217939",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "27",
                "name": "Tiktok_Pixel-000",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "0000000000"
                    }
                ],
                "fingerprint": "1788192278876",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "28",
                "name": "-Set-phone",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function(){\n\nvar phone = document.querySelector(\"#phone\").value;\nreturn phone;\n\n\n\n\n\n\n\n\n\n\n\n}"
                    }
                ],
                "fingerprint": "1788192217940",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "29",
                "name": "-Set-state",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function(){\n\nvar state = document.querySelector(\"#address\").value;\nreturn state;\n\n\n\n\n\n\n\n\n\n\n\n}"
                    }
                ],
                "fingerprint": "1788192217940",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "31",
                "name": "-Set-name",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function(){\n\nvar firstName = document.querySelector(\"#name\").value;\nreturn firstName;\n\n\n\n\n\n\n\n\n\n\n\n}"
                    }
                ],
                "fingerprint": "1788192217940",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "33",
                "name": "✅[cJS]-content_names",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var items = {{✅eEommerce_items}};\n  if (!items || !Array.isArray(items)) return '';\n  \n  // Extract product names\n  var productNames = [];\n  for (var i = 0; i < items.length; i++) {\n    var name = items[i].item_name || items[i].name || '';\n    if (name) {\n      productNames.push(name);\n    }\n  }\n  \n  // Join with comma for Facebook\n  return productNames.join(', ');\n}"
                    }
                ],
                "fingerprint": "1788192217940",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "34",
                "name": "📌 prevention_reload",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function(){\nreturn window.performance.getEntriesByType('navigation').map(function(nav){ return nav.type}).includes('reload')\n}"
                    }
                ],
                "fingerprint": "1788192217940",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "36",
                "name": "🟣GAds-Conversion ID",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "0000000000"
                    }
                ],
                "fingerprint": "1788192217940",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "37",
                "name": "--✅Hash--phone",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n    return sha256( {{--CUD-phone}} );\n\n/**\n* Author: Md Hasanuzzamna\n* Linkedin: https://linkedin.com/in/md-h\n* Youtube: https://youtube.com/@leomeasure\n* Email: info@leomeasure.com\n*/\n\n    function sha256(r){if(r){r=r.toString();for(var $,_,o=Math.pow,f=o(2,32),t=\"length\",a=\"\",n=[],h=8*r[t],i=sha256.h=sha256.h||[],c=sha256.k=sha256.k||[],e=c[t],s={},u=2;e<64;u++)if(!s[u]){for($=0;$<313;$+=u)s[$]=u;i[e]=o(u,.5)*f|0,c[e++]=o(u,1/3)*f|0}for(r+=\"\\x80\";r[t]%64-56;)r+=\"\\0\";for($=0;$<r[t];$++){if((_=r.charCodeAt($))>>8)return;n[$>>2]|=_<<(3-$)%4*8}for(_=0,n[n[t]]=h/f|0,n[n[t]]=h;_<n[t];){var v=n.slice(_,_+=16),g=i;for($=0,i=i.slice(0,8);$<64;$++){var l=v[$-15],k=v[$-2],x=i[0],S=i[4],d=i[7]+(A(S,6)^A(S,11)^A(S,25))+(S&i[5]^~S&i[6])+c[$]+(v[$]=$<16?v[$]:v[$-16]+(A(l,7)^A(l,18)^l>>>3)+v[$-7]+(A(k,17)^A(k,19)^k>>>10)|0),p=(A(x,2)^A(x,13)^A(x,22))+(x&i[1]^x&i[2]^i[1]&i[2]);(i=[d+p|0].concat(i))[4]=i[4]+d|0}for($=0;$<8;$++)i[$]=i[$]+g[$]|0}for($=0;$<8;$++)for(_=3;_+1;_--){var w=i[$]>>8*_&255;a+=(w<16?0:\"\")+w.toString(16)}return a}function A(r,$){return r>>>$|r<<32-$}}\n}"
                    }
                ],
                "fingerprint": "1788192217940",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "38",
                "name": "🟣Gads-UserData",
                "type": "awec",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "mode",
                        "value": "MANUAL"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "phone_number",
                        "value": "{{--✅Hash--phone}}"
                    }
                ],
                "fingerprint": "1788192217940",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "40",
                "name": "cJS-External_ID_Hashed",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var rawId = {{✅[cJS]-External ID}}; // Your existing raw external_id variable\n  \n  if (!rawId) return undefined;\n  \n  // SHA-256 function\n  function sha256(ascii) {\n    function rightRotate(value, amount) {\n      return (value>>>amount) | (value<<(32 - amount));\n    }\n    \n    var mathPow = Math.pow;\n    var maxWord = mathPow(2, 32);\n    var lengthProperty = 'length';\n    var i, j;\n    var result = '';\n    var words = [];\n    var asciiBitLength = ascii[lengthProperty]*8;\n    var hash = sha256.h = sha256.h || [];\n    var k = sha256.k = sha256.k || [];\n    var primeCounter = k[lengthProperty];\n    var isComposite = {};\n    \n    for (var candidate = 2; primeCounter < 64; candidate++) {\n      if (!isComposite[candidate]) {\n        for (i = 0; i < 313; i += candidate) {\n          isComposite[i] = candidate;\n        }\n        hash[primeCounter] = (mathPow(candidate, .5)*maxWord)|0;\n        k[primeCounter++] = (mathPow(candidate, 1/3)*maxWord)|0;\n      }\n    }\n    \n    ascii += '\\x80';\n    while (ascii[lengthProperty]%64 - 56) ascii += '\\x00';\n    \n    for (i = 0; i < ascii[lengthProperty]; i++) {\n      j = ascii.charCodeAt(i);\n      if (j>>8) return;\n      words[i>>2] |= j << ((3 - i)%4)*8;\n    }\n    \n    words[words[lengthProperty]] = ((asciiBitLength/maxWord)|0);\n    words[words[lengthProperty]] = (asciiBitLength);\n    \n    for (j = 0; j < words[lengthProperty];) {\n      var w = words.slice(j, j += 16);\n      var oldHash = hash;\n      hash = hash.slice(0, 8);\n      \n      for (i = 0; i < 64; i++) {\n        var w15 = w[i-15], w2 = w[i-2];\n        var a = hash[0], e = hash[4];\n        var temp1 = hash[7]\n          + (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25))\n          + ((e&hash[5])^((~e)&hash[6]))\n          + k[i]\n          + (w[i] = (i < 16) ? w[i] : (\n              w[i-16]\n              + (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15>>>3))\n              + w[i-7]\n              + (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2>>>10))\n            )|0\n          );\n        var temp2 = (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22))\n          + ((a&hash[1])^(a&hash[2])^(hash[1]&hash[2]));\n        \n        hash = [(temp1 + temp2)|0].concat(hash);\n        hash[4] = (hash[4] + temp1)|0;\n      }\n      \n      for (i = 0; i < 8; i++) {\n        hash[i] = (hash[i] + oldHash[i])|0;\n      }\n    }\n    \n    for (i = 0; i < 8; i++) {\n      for (j = 3; j + 1; j--) {\n        var b = (hash[i]>>(j*8)) & 255;\n        result += ((b < 16) ? 0 : '') + b.toString(16);\n      }\n    }\n    return result;\n  }\n  \n  return sha256(rawId.toString());\n}"
                    }
                ],
                "fingerprint": "1788192217940",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "41",
                "name": "--✅TikTok-ttclid",
                "type": "k",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "decodeCookie",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ttclid"
                    }
                ],
                "fingerprint": "1788192217941",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "44",
                "name": "--✅action_source",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "website"
                    }
                ],
                "fingerprint": "1788192217941",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "45",
                "name": "✅dlv-action_source",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "website"
                    }
                ],
                "fingerprint": "1788192217941",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "46",
                "name": "✅[cJS]-Contents",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var items = {{✅eEommerce_items}};\n  if (!items || !Array.isArray(items)) return [];\n  \n  return items.map(function(item) {\n    return {\n      id: (item.item_id || item.id || item.sku || '').toString(),\n      quantity: item.quantity ? parseFloat(item.quantity) : 1,\n      item_price: item.price ? parseFloat(item.price) : 0\n    };\n  }).filter(function(product) {\n    return product.id !== ''; // Remove items without ID\n  });\n}"
                    }
                ],
                "fingerprint": "1788192218028",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "49",
                "name": "Meta Pixel ID-000",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "0000000000"
                    }
                ],
                "fingerprint": "1788192255122",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "52",
                "name": "dlv-email",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.billing_email"
                    }
                ],
                "fingerprint": "1788192218029",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "54",
                "name": "dlv-postcode",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "customer.billing.postcode"
                    }
                ],
                "fingerprint": "1788192218029",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "55",
                "name": "✅dlv-transaction_id",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ecommerce.transaction_id"
                    }
                ],
                "fingerprint": "1788192218029",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "57",
                "name": "✅dlv-content_id",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ecommerce.items.0.item_id"
                    }
                ],
                "fingerprint": "1788192218029",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "59",
                "name": "-Get-state",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function(){\n\nreturn localStorage.getItem('state');\n  \n\n\n\n\n\n\n\n\n\n\n\n\n}"
                    }
                ],
                "fingerprint": "1788192218029",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "61",
                "name": "-Get-phone",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function(){\n\nreturn localStorage.getItem('phone');\n  \n\n\n\n\n\n\n\n\n\n\n\n\n}"
                    }
                ],
                "fingerprint": "1788192218030",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "62",
                "name": "tiktok-phone",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function(){\n  return '+88'+{{-Get-phone}};\n}"
                    }
                ],
                "fingerprint": "1788192218030",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "63",
                "name": "--✅Hash--lname",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n    return sha256( {{--CUD-lname}} );\n\n/**\n* Author: Md Hasanuzzamna\n* Linkedin: https://linkedin.com/in/md-h\n* Youtube: https://youtube.com/@leomeasure\n* Email: info@leomeasure.com\n*/\n\n    function sha256(r){if(r){r=r.toString();for(var $,_,o=Math.pow,f=o(2,32),t=\"length\",a=\"\",n=[],h=8*r[t],i=sha256.h=sha256.h||[],c=sha256.k=sha256.k||[],e=c[t],s={},u=2;e<64;u++)if(!s[u]){for($=0;$<313;$+=u)s[$]=u;i[e]=o(u,.5)*f|0,c[e++]=o(u,1/3)*f|0}for(r+=\"\\x80\";r[t]%64-56;)r+=\"\\0\";for($=0;$<r[t];$++){if((_=r.charCodeAt($))>>8)return;n[$>>2]|=_<<(3-$)%4*8}for(_=0,n[n[t]]=h/f|0,n[n[t]]=h;_<n[t];){var v=n.slice(_,_+=16),g=i;for($=0,i=i.slice(0,8);$<64;$++){var l=v[$-15],k=v[$-2],x=i[0],S=i[4],d=i[7]+(A(S,6)^A(S,11)^A(S,25))+(S&i[5]^~S&i[6])+c[$]+(v[$]=$<16?v[$]:v[$-16]+(A(l,7)^A(l,18)^l>>>3)+v[$-7]+(A(k,17)^A(k,19)^k>>>10)|0),p=(A(x,2)^A(x,13)^A(x,22))+(x&i[1]^x&i[2]^i[1]&i[2]);(i=[d+p|0].concat(i))[4]=i[4]+d|0}for($=0;$<8;$++)i[$]=i[$]+g[$]|0}for($=0;$<8;$++)for(_=3;_+1;_--){var w=i[$]>>8*_&255;a+=(w<16?0:\"\")+w.toString(16)}return a}function A(r,$){return r>>>$|r<<32-$}}\n}"
                    }
                ],
                "fingerprint": "1788192218030",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "64",
                "name": "TikTok-Purchase",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "Purchase"
                    }
                ],
                "fingerprint": "1788192218030",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "67",
                "name": "-----Correct Phone",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var standardCountryCode = '+88'; // Change if needed (e.g., '+1' for US)\n\n  // Get phone number from Data Layer Variable\n  var phone = {{-Get-phone}};\n\n  // Do not edit below this line\n  //////////////////////////////////\n\n  if (!phone) {\n    return undefined;\n  }\n\n  var countryCodeNoPlus = standardCountryCode.replace('+', '');\n  phone = phone.replace(/[^\\d+]/g, '');\n\n  if (phone.startsWith('+') && !phone.startsWith(standardCountryCode)) {\n    return phone;\n  } else if (phone.startsWith('00') && !phone.startsWith('00' + countryCodeNoPlus)) {\n    return '+' + phone.substr(2);\n  }\n\n  if (!phone.startsWith(standardCountryCode) &&\n      !phone.startsWith('00' + countryCodeNoPlus) &&\n      phone.startsWith('0')) {\n    phone = phone.substr(1);\n  }\n\n  if (phone.startsWith(standardCountryCode)) {\n    return phone;\n  } else if (phone.startsWith('00' + countryCodeNoPlus)) {\n    return standardCountryCode + phone.substr(2 + countryCodeNoPlus.length);\n  } else {\n    return standardCountryCode + phone;\n  }\n}"
                    }
                ],
                "fingerprint": "1788192218088",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "68",
                "name": "tiktok-purchase",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "purchase"
                    }
                ],
                "fingerprint": "1788192218088",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "71",
                "name": "🟣Gads-items",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function(){\nvar items = {{✅eEommerce_items}}; \n\nreturn items.map(function(item){\n\nreturn {\nid : item.item_id.toString(),\nprice : item.price,\nquantity : item.quantity ? parseFloat(item.quantity) : 1\n}\n\n})\n}"
                    }
                ],
                "fingerprint": "1788192218088",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "73",
                "name": "✅[cJS]-client_user_agent",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  return navigator.userAgent;\n}"
                    }
                ],
                "fingerprint": "1788192218089",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "74",
                "name": "CheckOut Value",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  return Number({{✅dlv-value}});\n}"
                    }
                ],
                "fingerprint": "1788192218089",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "75",
                "name": "--✅Hash--fname",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n    return sha256( {{--CUD-fname}} );\n\n/**\n* Author: Md Hasanuzzamna\n* Linkedin: https://linkedin.com/in/md-h\n* Youtube: https://youtube.com/@leomeasure\n* Email: info@leomeasure.com\n*/\n\n    function sha256(r){if(r){r=r.toString();for(var $,_,o=Math.pow,f=o(2,32),t=\"length\",a=\"\",n=[],h=8*r[t],i=sha256.h=sha256.h||[],c=sha256.k=sha256.k||[],e=c[t],s={},u=2;e<64;u++)if(!s[u]){for($=0;$<313;$+=u)s[$]=u;i[e]=o(u,.5)*f|0,c[e++]=o(u,1/3)*f|0}for(r+=\"\\x80\";r[t]%64-56;)r+=\"\\0\";for($=0;$<r[t];$++){if((_=r.charCodeAt($))>>8)return;n[$>>2]|=_<<(3-$)%4*8}for(_=0,n[n[t]]=h/f|0,n[n[t]]=h;_<n[t];){var v=n.slice(_,_+=16),g=i;for($=0,i=i.slice(0,8);$<64;$++){var l=v[$-15],k=v[$-2],x=i[0],S=i[4],d=i[7]+(A(S,6)^A(S,11)^A(S,25))+(S&i[5]^~S&i[6])+c[$]+(v[$]=$<16?v[$]:v[$-16]+(A(l,7)^A(l,18)^l>>>3)+v[$-7]+(A(k,17)^A(k,19)^k>>>10)|0),p=(A(x,2)^A(x,13)^A(x,22))+(x&i[1]^x&i[2]^i[1]&i[2]);(i=[d+p|0].concat(i))[4]=i[4]+d|0}for($=0;$<8;$++)i[$]=i[$]+g[$]|0}for($=0;$<8;$++)for(_=3;_+1;_--){var w=i[$]>>8*_&255;a+=(w<16?0:\"\")+w.toString(16)}return a}function A(r,$){return r>>>$|r<<32-$}}\n}"
                    }
                ],
                "fingerprint": "1788192218089",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "76",
                "name": "VC-value",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "cart_total"
                    }
                ],
                "fingerprint": "1788192218089",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "77",
                "name": "✅dlv-shipping",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ecommerce.shipping"
                    }
                ],
                "fingerprint": "1788192218089",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "79",
                "name": "✅dlv-tax",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ecommerce.tax"
                    }
                ],
                "fingerprint": "1788192218097",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "82",
                "name": "dlv-new_customer",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "new_customer"
                    }
                ],
                "fingerprint": "1788192218097",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "84",
                "name": "✅cJS- Items",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function(){\nvar items = {{✅eEommerce_items}}; \n\nreturn items.map(function(item){\n\nreturn {\nitem_id : item.item_id.toString(),\nprice : item.price,\nquantity : item.quantity ? parseFloat(item.quantity) : 1\n}\n\n})\n}"
                    }
                ],
                "fingerprint": "1788192218097",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "86",
                "name": "--✅client_ip_address",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "visitorIP"
                    }
                ],
                "fingerprint": "1788192218098",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "88",
                "name": "dlv-country",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "customer.billing.country"
                    }
                ],
                "fingerprint": "1788192218098",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "89",
                "name": "--✅Hash--country",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n    return sha256( {{--CUD-country}} );\n\n/**\n* Author: Md Hasanuzzamna\n* Linkedin: https://linkedin.com/in/md-h\n* Youtube: https://youtube.com/@leomeasure\n* Email: info@leomeasure.com\n*/\n\n    function sha256(r){if(r){r=r.toString();for(var $,_,o=Math.pow,f=o(2,32),t=\"length\",a=\"\",n=[],h=8*r[t],i=sha256.h=sha256.h||[],c=sha256.k=sha256.k||[],e=c[t],s={},u=2;e<64;u++)if(!s[u]){for($=0;$<313;$+=u)s[$]=u;i[e]=o(u,.5)*f|0,c[e++]=o(u,1/3)*f|0}for(r+=\"\\x80\";r[t]%64-56;)r+=\"\\0\";for($=0;$<r[t];$++){if((_=r.charCodeAt($))>>8)return;n[$>>2]|=_<<(3-$)%4*8}for(_=0,n[n[t]]=h/f|0,n[n[t]]=h;_<n[t];){var v=n.slice(_,_+=16),g=i;for($=0,i=i.slice(0,8);$<64;$++){var l=v[$-15],k=v[$-2],x=i[0],S=i[4],d=i[7]+(A(S,6)^A(S,11)^A(S,25))+(S&i[5]^~S&i[6])+c[$]+(v[$]=$<16?v[$]:v[$-16]+(A(l,7)^A(l,18)^l>>>3)+v[$-7]+(A(k,17)^A(k,19)^k>>>10)|0),p=(A(x,2)^A(x,13)^A(x,22))+(x&i[1]^x&i[2]^i[1]&i[2]);(i=[d+p|0].concat(i))[4]=i[4]+d|0}for($=0;$<8;$++)i[$]=i[$]+g[$]|0}for($=0;$<8;$++)for(_=3;_+1;_--){var w=i[$]>>8*_&255;a+=(w<16?0:\"\")+w.toString(16)}return a}function A(r,$){return r>>>$|r<<32-$}}\n}"
                    }
                ],
                "fingerprint": "1788192218098",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "91",
                "name": "---✅cJS-client_user_agent",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  return navigator.userAgent ? String(navigator.userAgent) : \"\";\n}"
                    }
                ],
                "fingerprint": "1788192218098",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "92",
                "name": "dlv-state",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.billing_street"
                    }
                ],
                "fingerprint": "1788192218098",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "93",
                "name": "Purchase",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "Purchase"
                    }
                ],
                "fingerprint": "1788192218098",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "97",
                "name": "-Get-name",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function(){\n\nreturn localStorage.getItem('first_name');\n  \n\n\n\n\n\n\n\n\n\n\n\n\n}"
                    }
                ],
                "fingerprint": "1788192218102",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "98",
                "name": "purchase",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "purchase"
                    }
                ],
                "fingerprint": "1788192218102",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "99",
                "name": "Purchase Value",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var productValue = parseFloat({{✅dlv-value}}) || 0;\n  var shipping = parseFloat({{✅dlv-shipping}}) || 0;\n\n  return productValue + shipping;\n}"
                    }
                ],
                "fingerprint": "1788192218102",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "105",
                "name": "✅[cJS]-items_array",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function(){\nvar items = {{✅eEommerce_items}}; \n\nreturn items.map(function(item){\n\nreturn {\nitem_id : item.item_id.toString(),\nprice : item.price,\nquantity : item.quantity ? parseFloat(item.quantity) : 1\n}\n\n})\n}"
                    }
                ],
                "fingerprint": "1788192218124",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "106",
                "name": "dlv-city",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.billing.city"
                    }
                ],
                "fingerprint": "1788192218124",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "107",
                "name": "--✅item_price",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ecommerce.items.0.price"
                    }
                ],
                "fingerprint": "1788192218124",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "108",
                "name": "-----✅tiktok contents",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function(){\nvar products = {{✅eEommerce_items}};\n\n return products.map(function(product) {\n       return {\n       \"content_id\": product.item_id,\n       \"content_name\": product.item_name,\n       \"price\": product.price,\n       \"quantity\": product.quantity || 1,\n       \"content_category\": product.item_category,\n       \"brand\": product.item_brand,\n       }\n });\n}"
                    }
                ],
                "fingerprint": "1788192218124",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "109",
                "name": "PixelFly - COD Protection",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "off"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {},
                "notes": "\"on\" holds cash-on-delivery purchases for PixelFly COD Order Protection; \"off\" sends every purchase at once. Turn COD Order Protection on in PixelFly first."
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "110",
                "name": "dlv - ecommerce.payment_method",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ecommerce.payment_method"
                    }
                ],
                "fingerprint": "1790951149819",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "111",
                "name": "dlv - payment_method",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "payment_method"
                    }
                ],
                "fingerprint": "1790951149819",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "112",
                "name": "dlv - ecommerce.payment_type",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "ecommerce.payment_type"
                    }
                ],
                "fingerprint": "1790951149819",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "113",
                "name": "cJS - PixelFly payment method",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  return {{dlv - ecommerce.payment_method}} || {{dlv - payment_method}} || {{dlv - ecommerce.payment_type}} || '';\n}"
                    }
                ],
                "fingerprint": "1790951149819",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "114",
                "name": "cJS - PixelFly COD hold",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  // \"true\" when PixelFly holds this purchase until the order is confirmed: the\n  // switch is on and the order is cash on delivery (or names no payment method).\n  if ({{PixelFly - COD Protection}} !== 'on') return 'false';\n  var key = String({{PixelFly API Key}} || '');\n  if (key.indexOf('pf_live_') !== 0 || key === 'pf_live_REPLACE_ME') return 'false';\n  var method = String({{cJS - PixelFly payment method}} || '').toLowerCase();\n  if (!method) return 'true';\n  var cod = method === 'cod' || method.indexOf('cash_on_delivery') !== -1 || method.indexOf('cash on delivery') !== -1;\n  return cod ? 'true' : 'false';\n}"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "115",
                "name": "dlv - gclid",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "gclid"
                    }
                ],
                "fingerprint": "1790951149819",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "116",
                "name": "cookie - _gcl_aw",
                "type": "k",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "decodeCookie",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "_gcl_aw"
                    }
                ],
                "fingerprint": "1790951149819",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "117",
                "name": "cookie - _gcl_gb",
                "type": "k",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "decodeCookie",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "_gcl_gb"
                    }
                ],
                "fingerprint": "1790951149819",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "118",
                "name": "cJS - PixelFly gclid",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var fromPage = {{dlv - gclid}};\n  if (fromPage && fromPage !== 'undefined' && fromPage !== 'null') return String(fromPage);\n  var parts = String({{cookie - _gcl_aw}} || '').split('.');\n  return parts.length >= 3 ? parts.slice(2).join('.') : undefined;\n}"
                    }
                ],
                "fingerprint": "1790951149819",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "119",
                "name": "cJS - PixelFly gbraid",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var parts = String({{cookie - _gcl_gb}} || '').split('.');\n  return parts.length >= 3 ? parts.slice(2).join('.') : undefined;\n}"
                    }
                ],
                "fingerprint": "1790951149819",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "120",
                "name": "PixelFly API Key",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "pf_live_REPLACE_ME"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {},
                "notes": "Your container's API Key (pf_live_...), shown on the container page in PixelFly."
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "121",
                "name": "PixelFly - Server URL",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "https://track.pixelfly.io/e"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {},
                "notes": "https://track.pixelfly.io/e, or https://<your tracking domain>/e if you set one up in PixelFly."
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "122",
                "name": "PixelFly - GA4 purchase via",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "browser"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {},
                "notes": "\"browser\": GA4 gets the purchase from this container. \"pixelfly\": from your PixelFly GA4 Receiver instead (use it with a GA4 Receiver, so prepaid and confirmed COD orders both reach GA4 once). Never both: that counts each purchase twice."
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "123",
                "name": "PixelFly - COD Host",
                "type": "c",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "value",
                        "value": "https://track.pixelfly.io"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {},
                "notes": "The Hold URL on your container's PixelFly COD Power-up without /cod/hold: your tracking domain if you have one, otherwise https://track.pixelfly.io."
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "124",
                "name": "pfdl - user_data.billing_email",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.billing_email"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "125",
                "name": "pfdl - user_data.email",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.email"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "126",
                "name": "pfdl - user_data.email_address",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.email_address"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "127",
                "name": "pfdl - user_data.em",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.em"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "128",
                "name": "pfdl - email",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "email"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "129",
                "name": "pfdl - customerBillingEmail",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "customerBillingEmail"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "130",
                "name": "cJS - PixelFly customer email",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var values = [{{pfdl - user_data.billing_email}}, {{pfdl - user_data.email}}, {{pfdl - user_data.email_address}}, {{pfdl - user_data.em}}, {{pfdl - email}}, {{pfdl - customerBillingEmail}}];\n  for (var i = 0; i < values.length; i++) {\n    if (values[i] !== undefined && values[i] !== null && values[i] !== '') return String(values[i]);\n  }\n  return undefined;\n}"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "131",
                "name": "pfdl - user_data.phone_number",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.phone_number"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "132",
                "name": "pfdl - user_data.phone",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.phone"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "133",
                "name": "pfdl - user_data.ph",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.ph"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "134",
                "name": "pfdl - phone",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "phone"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "135",
                "name": "pfdl - customerBillingPhone",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "customerBillingPhone"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "136",
                "name": "cJS - PixelFly customer phone",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var values = [{{pfdl - user_data.phone_number}}, {{pfdl - user_data.phone}}, {{pfdl - user_data.ph}}, {{pfdl - phone}}, {{pfdl - customerBillingPhone}}];\n  for (var i = 0; i < values.length; i++) {\n    if (values[i] !== undefined && values[i] !== null && values[i] !== '') return String(values[i]);\n  }\n  return undefined;\n}"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "137",
                "name": "pfdl - user_data.first_name",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.first_name"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "138",
                "name": "pfdl - user_data.fn",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.fn"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "139",
                "name": "pfdl - user_data.address.first_name",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.address.first_name"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "140",
                "name": "pfdl - customerFirstName",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "customerFirstName"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "141",
                "name": "cJS - PixelFly customer first_name",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var values = [{{pfdl - user_data.first_name}}, {{pfdl - user_data.fn}}, {{pfdl - user_data.address.first_name}}, {{pfdl - customerFirstName}}];\n  for (var i = 0; i < values.length; i++) {\n    if (values[i] !== undefined && values[i] !== null && values[i] !== '') return String(values[i]);\n  }\n  return undefined;\n}"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "142",
                "name": "pfdl - user_data.last_name",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.last_name"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "143",
                "name": "pfdl - user_data.ln",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.ln"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "144",
                "name": "pfdl - user_data.address.last_name",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.address.last_name"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "145",
                "name": "pfdl - customerLastName",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "customerLastName"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "146",
                "name": "cJS - PixelFly customer last_name",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var values = [{{pfdl - user_data.last_name}}, {{pfdl - user_data.ln}}, {{pfdl - user_data.address.last_name}}, {{pfdl - customerLastName}}];\n  for (var i = 0; i < values.length; i++) {\n    if (values[i] !== undefined && values[i] !== null && values[i] !== '') return String(values[i]);\n  }\n  return undefined;\n}"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "147",
                "name": "pfdl - user_data.city",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.city"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "148",
                "name": "pfdl - user_data.ct",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.ct"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "149",
                "name": "pfdl - user_data.billing.city",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.billing.city"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "150",
                "name": "pfdl - customerBillingCity",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "customerBillingCity"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "151",
                "name": "cJS - PixelFly customer city",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var values = [{{pfdl - user_data.city}}, {{pfdl - user_data.ct}}, {{pfdl - user_data.billing.city}}, {{pfdl - customerBillingCity}}];\n  for (var i = 0; i < values.length; i++) {\n    if (values[i] !== undefined && values[i] !== null && values[i] !== '') return String(values[i]);\n  }\n  return undefined;\n}"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "152",
                "name": "pfdl - user_data.country",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.country"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "153",
                "name": "pfdl - customerBillingCountry",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "customerBillingCountry"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "154",
                "name": "cJS - PixelFly customer country",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var values = [{{pfdl - user_data.country}}, {{pfdl - customerBillingCountry}}];\n  for (var i = 0; i < values.length; i++) {\n    if (values[i] !== undefined && values[i] !== null && values[i] !== '') return String(values[i]);\n  }\n  return undefined;\n}"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "155",
                "name": "pfdl - user_data.zp",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.zp"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "156",
                "name": "pfdl - user_data.postcode",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "user_data.postcode"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "157",
                "name": "pfdl - customer.billing.postcode",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "customer.billing.postcode"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "158",
                "name": "pfdl - customerBillingPostcode",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "customerBillingPostcode"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "159",
                "name": "cJS - PixelFly customer zip",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var values = [{{pfdl - user_data.zp}}, {{pfdl - user_data.postcode}}, {{pfdl - customer.billing.postcode}}, {{pfdl - customerBillingPostcode}}];\n  for (var i = 0; i < values.length; i++) {\n    if (values[i] !== undefined && values[i] !== null && values[i] !== '') return String(values[i]);\n  }\n  return undefined;\n}"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "160",
                "name": "cookie - _ga",
                "type": "k",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "decodeCookie",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "_ga"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "161",
                "name": "cJS - PixelFly GA client ID",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  // _ga is GA1.1.<random>.<first visit time>; GA4's client ID is the last two parts.\n  var parts = String({{cookie - _ga}} || '').split('.');\n  return parts.length >= 4 ? parts[2] + '.' + parts[3] : undefined;\n}"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "162",
                "name": "cJS - PixelFly GA session ID",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  // _ga_<stream> is GS1.1.<session id>.... (older) or GS2.1.s<session id>$o... (newer).\n  var stream = String({{GA4-FM ID}} || '').replace('G-', '');\n  if (!stream) return undefined;\n  var match = document.cookie.match(new RegExp('(?:^|; )_ga_' + stream + '=([^;]*)'));\n  if (!match) return undefined;\n  var value = match[1];\n  var parts = value.split('.');\n  if (parts[0] === 'GS1' && parts.length > 2) return parts[2];\n  var newer = value.match(/[.$]s(\\d+)/);\n  return newer ? newer[1] : undefined;\n}"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "163",
                "name": "pfdl - eventId",
                "type": "v",
                "parameter": [
                    {
                        "type": "INTEGER",
                        "key": "dataLayerVersion",
                        "value": "2"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "setDefaultValue",
                        "value": "false"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "name",
                        "value": "eventId"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "variableId": "164",
                "name": "cJS - PixelFly event ID",
                "type": "jsm",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "javascript",
                        "value": "function() {\n  var fromPage = {{pfdl - eventId}};\n  if ({{Event}} === 'purchase' && fromPage) return String(fromPage);\n  return {{-✅[Meta Event ID]}};\n}"
                    }
                ],
                "fingerprint": "1791001751368",
                "formatValue": {}
            }
        ],
        "builtInVariable": [
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "type": "PAGE_URL",
                "name": "Page URL"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "type": "PAGE_HOSTNAME",
                "name": "Page Hostname"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "type": "PAGE_PATH",
                "name": "Page Path"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "type": "REFERRER",
                "name": "Referrer"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "type": "EVENT",
                "name": "Event"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "type": "CLICK_CLASSES",
                "name": "Click Classes"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "type": "CLICK_ID",
                "name": "Click ID"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "type": "CLICK_TARGET",
                "name": "Click Target"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "type": "CLICK_URL",
                "name": "Click URL"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "type": "CLICK_TEXT",
                "name": "Click Text"
            }
        ],
        "fingerprint": "1790836645721",
        "tagManagerUrl": "https://tagmanager.google.com/#/versions/accounts/6374306328/containers/262776217/versions/0?apiLink=version",
        "customTemplate": [
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "templateId": "12",
                "name": "Unique Event ID",
                "fingerprint": "1788192217935",
                "templateData": "___TERMS_OF_SERVICE___\n\nBy creating or modifying this file you agree to Google Tag Manager's Community\nTemplate Gallery Developer Terms of Service available at\nhttps://developers.google.com/tag-manager/gallery-tos (or such other URL as\nGoogle may provide), as modified from time to time.\n\n\n___INFO___\n\n{\n  \"type\": \"MACRO\",\n  \"id\": \"cvt_M63B8\",\n  \"version\": 1,\n  \"displayName\": \"Unique Event ID\",\n  \"description\": \"Generates unique event id\",\n  \"categories\": [\n    \"UTILITY\"\n  ],\n  \"containerContexts\": [\n    \"WEB\"\n  ],\n  \"brand\": {\n    \"displayName\": \"stape-io\",\n    \"id\": \"github.com_stape-io\"\n  }\n}\n\n\n___TEMPLATE_PARAMETERS___\n\n[]\n\n\n___SANDBOXED_JS_FOR_WEB_TEMPLATE___\n\nconst copyFromDataLayer = require('copyFromDataLayer');\nconst setInWindow = require('setInWindow');\nconst copyFromWindow = require('copyFromWindow');\nconst getTimestampMillis = require('getTimestampMillis');\nconst generateRandom = require('generateRandom');\n\n\nreturn getBrowserId() + '_' + getPageLoadId() + getGtmUniqueEventId();\n\nfunction getGtmUniqueEventId() {\n    let gtmId = copyFromDataLayer('gtm.uniqueEventId')  || 0;\n    return gtmId >= 0 ? gtmId : '00';\n}\n\nfunction getBrowserId() {\n    let gtmBrowserId =  copyFromWindow('gtmBrowserId');\n\n    if (!gtmBrowserId) {\n        gtmBrowserId = getTimestampMillis() + generateRandom(100000, 999999);\n        setInWindow('gtmBrowserId', gtmBrowserId, false);\n    }\n\n    return gtmBrowserId;\n}\n\nfunction getPageLoadId() {\n  let eventId = copyFromWindow('gtmPageLoadId');\n\n  if (!eventId) {\n    eventId = getTimestampMillis() + generateRandom(100000, 999999);\n    setInWindow('gtmPageLoadId', eventId, false);\n  }\n\n  return eventId;\n}\n\n\n___WEB_PERMISSIONS___\n\n[\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"read_data_layer\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"allowedKeys\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"specific\"\n          }\n        },\n        {\n          \"key\": \"keyPatterns\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 1,\n                \"string\": \"gtm.uniqueEventId\"\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"access_globals\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"keys\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"gtmPageLoadId\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"gtmBrowserId\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  }\n]\n\n\n___TESTS___\n\nscenarios: []\n\n\n___NOTES___\n\nCreated on 11/03/2021, 11:05:32\n\n\n",
                "galleryReference": {
                    "host": "github.com",
                    "owner": "stape-io",
                    "repository": "unique-event-id-variable",
                    "version": "76498f16f1954b0286640d19eb6a1ddf2909e183",
                    "signature": "fe53a57c443dd898aa8ad7095fc9a32114fafa6af0eb66b1671338f69d9530be",
                    "galleryTemplateId": "M63B8"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "templateId": "47",
                "name": "Facebook Pixel",
                "fingerprint": "1788192218028",
                "templateData": "___TERMS_OF_SERVICE___\n\nBy creating or modifying this file you agree to Google Tag Manager's Community\nTemplate Gallery Developer Terms of Service available at\nhttps://developers.google.com/tag-manager/gallery-tos (or such other URL as\nGoogle may provide), as modified from time to time.\n\n\n___INFO___\n\n{\n  \"displayName\": \"Facebook Pixel\",\n  \"__wm\": \"VGVtcGxhdGUtQXV0aG9yX0ZhY2Vib29rLVNpbW8tQWhhdmE\\u003d\",\n  \"description\": \"This is an unofficial Google Tag Manager template for the Facebook Pixel.\",\n  \"categories\": [\n    \"ADVERTISING\",\n    \"ANALYTICS\"\n  ],\n  \"id\": \"cvt_5RM3Q\",\n  \"type\": \"TAG\",\n  \"version\": 1,\n  \"brand\": {\n    \"displayName\": \"facebookarchive\",\n    \"id\": \"github.com_facebookarchive\",\n    \"thumbnail\": \"data:image/png;base64,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\"\n  },\n  \"containerContexts\": [\n    \"WEB\"\n  ],\n  \"securityGroups\": []\n}\n\n\n___TEMPLATE_PARAMETERS___\n\n[\n  {\n    \"alwaysInSummary\": true,\n    \"valueValidators\": [\n      {\n        \"errorMessage\": \"You must provide a Pixel ID\",\n        \"type\": \"NON_EMPTY\"\n      },\n      {\n        \"args\": [\n          \"^[0-9,]+$\"\n        ],\n        \"errorMessage\": \"Invalid Pixel ID format\",\n        \"type\": \"REGEX\"\n      }\n    ],\n    \"displayName\": \"Facebook Pixel ID(s)\",\n    \"simpleValueType\": true,\n    \"name\": \"pixelId\",\n    \"type\": \"TEXT\",\n    \"valueHint\": \"e.g. 12345678910\"\n  },\n  {\n    \"type\": \"CHECKBOX\",\n    \"name\": \"enhancedEcommerce\",\n    \"checkboxText\": \"Enhanced Ecommerce dataLayer Integration\",\n    \"simpleValueType\": true,\n    \"help\": \"If you check this, then the Facebook pixel will populate \\u003cstrong\\u003eEvent Name\\u003c/strong\\u003e and \\u003cstrong\\u003eObject Properties\\u003c/strong\\u003e automatically from the last \\u003ca href\\u003d\\\"https://developers.google.com/tag-manager/enhanced-ecommerce\\\"\\u003eecommerce\\u003c/a\\u003e object pushed into the dataLayer array.\"\n  },\n  {\n    \"type\": \"RADIO\",\n    \"name\": \"eventName\",\n    \"displayName\": \"Event Name\",\n    \"radioItems\": [\n      {\n        \"value\": \"standard\",\n        \"displayValue\": \"Standard\",\n        \"subParams\": [\n          {\n            \"type\": \"SELECT\",\n            \"name\": \"standardEventName\",\n            \"macrosInSelect\": false,\n            \"selectItems\": [\n              {\n                \"displayValue\": \"PageView\",\n                \"value\": \"PageView\"\n              },\n              {\n                \"displayValue\": \"AddPaymentInfo\",\n                \"value\": \"AddPaymentInfo\"\n              },\n              {\n                \"displayValue\": \"AddToCart\",\n                \"value\": \"AddToCart\"\n              },\n              {\n                \"displayValue\": \"AddToWishlist\",\n                \"value\": \"AddToWishlist\"\n              },\n              {\n                \"displayValue\": \"CompleteRegistration\",\n                \"value\": \"CompleteRegistration\"\n              },\n              {\n                \"displayValue\": \"Contact\",\n                \"value\": \"Contact\"\n              },\n              {\n                \"displayValue\": \"CustomizeProduct\",\n                \"value\": \"CustomizeProduct\"\n              },\n              {\n                \"displayValue\": \"Donate\",\n                \"value\": \"Donate\"\n              },\n              {\n                \"displayValue\": \"FindLocation\",\n                \"value\": \"FindLocation\"\n              },\n              {\n                \"displayValue\": \"InitiateCheckout\",\n                \"value\": \"InitiateCheckout\"\n              },\n              {\n                \"displayValue\": \"Lead\",\n                \"value\": \"Lead\"\n              },\n              {\n                \"displayValue\": \"Purchase\",\n                \"value\": \"Purchase\"\n              },\n              {\n                \"displayValue\": \"Schedule\",\n                \"value\": \"Schedule\"\n              },\n              {\n                \"displayValue\": \"Search\",\n                \"value\": \"Search\"\n              },\n              {\n                \"displayValue\": \"StartTrial\",\n                \"value\": \"StartTrial\"\n              },\n              {\n                \"displayValue\": \"SubmitApplication\",\n                \"value\": \"SubmitApplication\"\n              },\n              {\n                \"displayValue\": \"Subscribe\",\n                \"value\": \"Subscribe\"\n              },\n              {\n                \"displayValue\": \"ViewContent\",\n                \"value\": \"ViewContent\"\n              }\n            ],\n            \"simpleValueType\": true,\n            \"defaultValue\": \"PageView\"\n          }\n        ]\n      },\n      {\n        \"value\": \"custom\",\n        \"displayValue\": \"Custom\",\n        \"subParams\": [\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"customEventName\",\n            \"displayName\": \"\",\n            \"simpleValueType\": true\n          }\n        ]\n      },\n      {\n        \"value\": \"variable\",\n        \"displayValue\": \"Variable\",\n        \"subParams\": [\n          {\n            \"type\": \"SELECT\",\n            \"name\": \"variableEventName\",\n            \"macrosInSelect\": true,\n            \"selectItems\": [],\n            \"simpleValueType\": true\n          }\n        ]\n      }\n    ],\n    \"simpleValueType\": true,\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"enhancedEcommerce\",\n        \"paramValue\": true,\n        \"type\": \"NOT_EQUALS\"\n      }\n    ]\n  },\n  {\n    \"type\": \"RADIO\",\n    \"name\": \"eecEventName\",\n    \"displayName\": \"Event Name\",\n    \"radioItems\": [\n      {\n        \"value\": \"eec\",\n        \"displayValue\": \"Set automatically from dataLayer\"\n      }\n    ],\n    \"simpleValueType\": true,\n    \"help\": \"The Enhanced Ecommerce integration populates the Event Name automatically depending on what type of \\u003cstrong\\u003eecommerce\\u003c/strong\\u003e object was last pushed into dataLayer (\\\"detail\\\" -\\u003e \\\"ViewContent\\\", \\\"add\\\" -\\u003e \\\"AddToCart\\\", \\\"checkout\\\" -\\u003e \\\"InitiateCheckout\\\", \\\"purchase\\\" -\\u003e \\\"Purchase\\\").\",\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"enhancedEcommerce\",\n        \"paramValue\": true,\n        \"type\": \"EQUALS\"\n      }\n    ]\n  },\n  {\n    \"type\": \"SELECT\",\n    \"name\": \"consent\",\n    \"displayName\": \"Consent Granted (GDPR)\",\n    \"macrosInSelect\": true,\n    \"selectItems\": [\n      {\n        \"value\": true,\n        \"displayValue\": \"True\"\n      },\n      {\n        \"value\": false,\n        \"displayValue\": \"False\"\n      }\n    ],\n    \"simpleValueType\": true,\n    \"help\": \"If you set Consent Granted to \\u003cstrong\\u003efalse\\u003c/strong\\u003e, the pixel will not send any hits until a tag is fired where Consent Granted is set to \\u003cstrong\\u003etrue\\u003c/strong\\u003e. See \\u003ca href\\u003d\\\"https://developers.facebook.com/docs/facebook-pixel/implementation/gdpr/\\\"\\u003ethis article\\u003c/a\\u003e for more information.\"\n  },\n  {\n    \"simpleValueType\": true,\n    \"name\": \"advancedMatching\",\n    \"checkboxText\": \"Enable Advanced Matching\",\n    \"type\": \"CHECKBOX\"\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"dataProcessingOptionsGroup\",\n    \"displayName\": \"Data Processing Options\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"subParams\": [\n      {\n        \"type\": \"LABEL\",\n        \"name\": \"dpoInfo\",\n        \"displayName\": \"Data Processing Options force this Facebook event to comply to regional regulations with regard to the processing and selling of user data. Read \\u003ca href\\u003d\\\"https://developers.facebook.com/docs/marketing-apis/data-processing-options\\\"\\u003ethis\\u003c/a\\u003e for more information about how to configure this section.\"\n      },\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"dpoLDU\",\n        \"checkboxText\": \"Limited Data Use (LDU)\",\n        \"simpleValueType\": true\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"dpoCountry\",\n        \"displayName\": \"Country\",\n        \"simpleValueType\": true,\n        \"defaultValue\": 0,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"dpoLDU\",\n            \"paramValue\": true,\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"valueValidators\": [\n          {\n            \"type\": \"NUMBER\"\n          }\n        ]\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"dpoState\",\n        \"displayName\": \"State\",\n        \"simpleValueType\": true,\n        \"defaultValue\": 0,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"dpoLDU\",\n            \"paramValue\": true,\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"valueValidators\": [\n          {\n            \"type\": \"NUMBER\"\n          }\n        ]\n      }\n    ]\n  },\n  {\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"advancedMatching\",\n        \"type\": \"EQUALS\",\n        \"paramValue\": true\n      }\n    ],\n    \"displayName\": \"Customer Information Data Parameters\",\n    \"name\": \"advancedMatchingGroup\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"type\": \"GROUP\",\n    \"subParams\": [\n      {\n        \"displayName\": \"\",\n        \"name\": \"advancedMatchingList\",\n        \"simpleTableColumns\": [\n          {\n            \"selectItems\": [\n              {\n                \"displayValue\": \"City\",\n                \"value\": \"ct\"\n              },\n              {\n                \"displayValue\": \"Country\",\n                \"value\": \"cn\"\n              },\n              {\n                \"displayValue\": \"Date of Birth\",\n                \"value\": \"db\"\n              },\n              {\n                \"displayValue\": \"Email\",\n                \"value\": \"em\"\n              },\n              {\n                \"displayValue\": \"External ID\",\n                \"value\": \"external_id\"\n              },\n              {\n                \"displayValue\": \"First Name\",\n                \"value\": \"fn\"\n              },\n              {\n                \"displayValue\": \"Gender\",\n                \"value\": \"ge\"\n              },\n              {\n                \"displayValue\": \"Last Name\",\n                \"value\": \"ln\"\n              },\n              {\n                \"displayValue\": \"Phone\",\n                \"value\": \"ph\"\n              },\n              {\n                \"displayValue\": \"State\",\n                \"value\": \"st\"\n              },\n              {\n                \"displayValue\": \"Zip Code\",\n                \"value\": \"zp\"\n              }\n            ],\n            \"defaultValue\": \"\",\n            \"displayName\": \"Parameter name\",\n            \"name\": \"name\",\n            \"isUnique\": true,\n            \"type\": \"SELECT\"\n          },\n          {\n            \"defaultValue\": \"\",\n            \"displayName\": \"Parameter value\",\n            \"name\": \"value\",\n            \"type\": \"TEXT\"\n          }\n        ],\n        \"type\": \"SIMPLE_TABLE\",\n        \"newRowButtonText\": \"Add parameter\",\n        \"valueValidators\": [\n          {\n            \"type\": \"NON_EMPTY\"\n          }\n        ]\n      }\n    ]\n  },\n  {\n    \"displayName\": \"Object Properties\",\n    \"name\": \"objectPropertiesGroup\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"type\": \"GROUP\",\n    \"subParams\": [\n      {\n        \"type\": \"LABEL\",\n        \"name\": \"enhancedEcommerceObject\",\n        \"displayName\": \"\\u003cstrong\\u003eWarning!\\u003c/strong\\u003e Object properties are populated automatically based on the most recent \\u003cstrong\\u003eecommerce\\u003c/strong\\u003e object pushed into dataLayer. If you add properties here that are already set by the integration (content_type, contents, num_items, value, currency), then the properties you add here will override those set automatically by the integration!\",\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"enhancedEcommerce\",\n            \"paramValue\": true,\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"SELECT\",\n        \"name\": \"objectPropertiesFromVariable\",\n        \"displayName\": \"Load Properties From Variable\",\n        \"macrosInSelect\": true,\n        \"selectItems\": [\n          {\n            \"value\": false,\n            \"displayValue\": \"False\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"help\": \"You can use a variable that returns a JavaScript object with the properties you want to use. This object will be merged with any additional properties you add via the table below. Any conflicts will be resolved in favor of the properties you add to the table.\"\n      },\n      {\n        \"name\": \"objectPropertyList\",\n        \"simpleTableColumns\": [\n          {\n            \"valueValidators\": [],\n            \"defaultValue\": \"\",\n            \"displayName\": \"Property Name\",\n            \"name\": \"name\",\n            \"isUnique\": true,\n            \"type\": \"TEXT\"\n          },\n          {\n            \"defaultValue\": \"\",\n            \"displayName\": \"Property Value\",\n            \"name\": \"value\",\n            \"type\": \"TEXT\"\n          }\n        ],\n        \"type\": \"SIMPLE_TABLE\",\n        \"newRowButtonText\": \"Add property\"\n      }\n    ]\n  },\n  {\n    \"displayName\": \"More Settings\",\n    \"name\": \"moreSettingsGroup\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"type\": \"GROUP\",\n    \"subParams\": [\n      {\n        \"help\": \"Facebook collects some metadata (e.g. structured data) and user interactions (e.g. clicks) automatically. Check this box to disable this automatic configuration of the pixel.\",\n        \"simpleValueType\": true,\n        \"name\": \"disableAutoConfig\",\n        \"checkboxText\": \"Disable Automatic Configuration\",\n        \"type\": \"CHECKBOX\"\n      },\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"disablePushState\",\n        \"checkboxText\": \"Disable History Event Tracking\",\n        \"simpleValueType\": true,\n        \"help\": \"The Facebook Pixel tracks history events (pushState and replaceState) automatically as PageViews. Check this box to prevent the pixel from tracking such events automatically.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"eventId\",\n        \"displayName\": \"Event ID\",\n        \"simpleValueType\": true,\n        \"help\": \"Set the Event ID parameter in case you are tracking the same event server-side as well. The Event ID can be used to deduplicate the same event if sent from multiple sources. See more \\u003ca href\\u003d\\\"https://developers.facebook.com/docs/marketing-api/conversions-api/deduplicate-pixel-and-server-events/\\\"\\u003ehere\\u003c/a\\u003e.\"\n      }\n    ]\n  }\n]\n\n\n___SANDBOXED_JS_FOR_WEB_TEMPLATE___\n\nconst createQueue = require('createQueue');\nconst callInWindow = require('callInWindow');\nconst aliasInWindow = require('aliasInWindow');\nconst copyFromWindow = require('copyFromWindow');\nconst setInWindow = require('setInWindow');\nconst injectScript = require('injectScript');\nconst makeTableMap = require('makeTableMap');\nconst makeNumber = require('makeNumber');\nconst getType = require('getType');\nconst copyFromDataLayer = require('copyFromDataLayer');\nconst math = require('Math');\nconst log = require('logToConsole');\n\nconst initIds = copyFromWindow('_fbq_gtm_ids') || [];\nconst pixelIds = data.pixelId;\nconst standardEventNames = ['AddPaymentInfo', 'AddToCart', 'AddToWishlist', 'CompleteRegistration', 'Contact', 'CustomizeProduct', 'Donate', 'FindLocation', 'InitiateCheckout', 'Lead', 'PageView', 'Purchase', 'Schedule', 'Search', 'StartTrial', 'SubmitApplication', 'Subscribe', 'ViewContent'];\nconst ecommerce = copyFromDataLayer('ecommerce', 1);\n\n// Helper methods\nconst fail = msg => {\n  log(msg);\n  data.gtmOnFailure();\n};\n\nconst mergeObj = (obj, obj2) => {\n  for (let key in obj2) {\n    if (obj2.hasOwnProperty(key)) {\n      obj[key] = obj2[key];\n    }\n  }\n  return obj;\n};\n\nconst parseEecObj = prod => {\n  return {\n    id: prod.id,\n    quantity: prod.quantity\n  };\n};\n\n// Initialize EEC integration\nlet eventName, action, eecObjectProps;\nif (data.enhancedEcommerce) {\n  if (!ecommerce) return fail('Facebook Pixel: No valid \"ecommerce\" object found in dataLayer');\n  if (ecommerce.detail) { eventName = 'ViewContent'; action = 'detail'; }\n  else if (ecommerce.add) { eventName = 'AddToCart'; action = 'add'; }\n  else if (ecommerce.checkout) { eventName = 'InitiateCheckout'; action = 'checkout'; }\n  else if (ecommerce.purchase) { eventName = 'Purchase'; action = 'purchase'; }\n  else return fail('Facebook Pixel: Most recently pushed \"ecommerce\" object must be one of types \"detail\", \"add\", \"checkout\" or \"purchase\".');\n  \n  if (!ecommerce[action].products || getType(ecommerce[action].products) !== 'array') return fail('Facebook pixel: Most recently pushed \"ecommerce\" object did not have a valid \"products\" array.');\n  eecObjectProps = {\n    content_type: 'product',\n    contents: ecommerce[action].products.map(parseEecObj),\n    value: ecommerce[action].products.reduce((acc, cur) => {\n      const curVal = math.round(makeNumber(cur.price || 0) * (cur.quantity || 1) * 100) / 100;\n      return acc + curVal;\n    }, 0.0),\n    currency: ecommerce.currencyCode || 'USD'\n  };\n  if (['InitiateCheckout', 'Purchase'].indexOf(eventName) > -1) eecObjectProps.num_items = ecommerce[action].products.reduce((acc,cur) => {\n    return acc + makeNumber(cur.quantity || 1);\n  }, 0);\n}\n\n// Build the fbq() command arguments\nconst cidParams = data.advancedMatchingList && data.advancedMatchingList.length ? makeTableMap(data.advancedMatchingList, 'name', 'value') : {};\nconst objectProps = data.objectPropertyList && data.objectPropertyList.length ? makeTableMap(data.objectPropertyList, 'name', 'value') : {};\nconst objectPropsFromVar = getType(data.objectPropertiesFromVariable) === 'object' ? data.objectPropertiesFromVariable : {};\nconst mergedObjectProps = mergeObj(objectPropsFromVar, objectProps);\nconst finalObjectProps = mergeObj(eecObjectProps || {}, mergedObjectProps);\neventName = eventName || (data.eventName === 'custom' ? data.customEventName : (data.eventName === 'variable' ? data.variableEventName : data.standardEventName));\n\nconst command = standardEventNames.indexOf(eventName) === -1 ? 'trackSingleCustom' : 'trackSingle';\nconst consent = data.consent === false ? 'revoke' : 'grant';\n\n// Utility function to use either fbq.queue[]\n// (if the FB SDK hasn't loaded yet), or fbq.callMethod()\n// if the SDK has loaded.\nconst getFbq = () => {\n  // Return the existing 'fbq' global method if available\n  let fbq = copyFromWindow('fbq');\n  if (fbq) {\n    return fbq;\n  }\n  \n  // Initialize the 'fbq' global method to either use\n  // fbq.callMethod or fbq.queue)\n  setInWindow('fbq', function() {    \n    const callMethod = copyFromWindow('fbq.callMethod.apply');\n    if (callMethod) {           \n      callInWindow('fbq.callMethod.apply', null, arguments); \n    } else {       \n      callInWindow('fbq.queue.push', arguments);\n    }\n  });\n  aliasInWindow('_fbq', 'fbq');\n  \n  // Create the fbq.queue\n  createQueue('fbq.queue');\n    \n  // Return the global 'fbq' method, created above\n  return copyFromWindow('fbq');\n};\n\n// Get reference to the global method\nconst fbq = getFbq();\n\nfbq('consent', consent);\n\n // Set Data Processing Options\nif (data.dpoLDU) {\n  fbq('dataProcessingOptions', ['LDU'], makeNumber(data.dpoCountry), makeNumber(data.dpoState));\n}\n\n// Handle multiple, comma-separated pixel IDs,\n// and initialize each ID if not done already.\npixelIds.split(',').forEach(pixelId => {\n  if (initIds.indexOf(pixelId) === -1) {\n    \n    // If the user has chosen to disable automatic configuration\n    if (data.disableAutoConfig) {\n      fbq('set', 'autoConfig', false, pixelId);\n    }\n    \n    // If the user has chosen to disable pushState and replaceState tracking\n    if (data.disablePushState) {\n      setInWindow('fbq.disablePushState', true);\n    }\n   \t\n    \n    // Initialize pixel and store in global array\n    fbq('init', pixelId, cidParams);\n\n    // Monitoring agent string for Tag Setup\n    fbq('set','agent','tmSimo-GTM-WebTemplate', pixelId);\n\n    initIds.push(pixelId);\n    setInWindow('_fbq_gtm_ids', initIds, true);\n    \n  }\n\n  // Call the fbq() method with the parameters defined earlier\n  if (data.eventId) {\n    fbq(command, pixelId, eventName, finalObjectProps, {eventID: data.eventId});\n  } else {\n    fbq(command, pixelId, eventName, finalObjectProps);\n  }\n});\n\ninjectScript('https://connect.facebook.net/en_US/fbevents.js', data.gtmOnSuccess, data.gtmOnFailure, 'fbPixel');\n\n\n___WEB_PERMISSIONS___\n\n[\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"access_globals\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"keys\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"fbq\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"_fbq_gtm\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"_fbq\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"_fbq_gtm_ids\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"fbq.callMethod.apply\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"fbq.queue.push\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"fbq.queue\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"fbq.disablePushState\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"inject_script\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"urls\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 1,\n                \"string\": \"https://connect.facebook.net/*\"\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"logging\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"environments\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"debug\"\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"read_data_layer\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"allowedKeys\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"specific\"\n          }\n        },\n        {\n          \"key\": \"keyPatterns\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 1,\n                \"string\": \"ecommerce\"\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  }\n]\n\n\n___TESTS___\n\nscenarios:\n- name: Library is injected\n  code: |-\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('injectScript').wasCalledWith(scriptUrl, success, failure, 'fbPixel');\n    assertApi('gtmOnSuccess').wasCalled();\n- name: fbq does not exist - method created\n  code: |-\n    let fbq;\n\n    mock('copyFromWindow', key => {\n      if (key === 'fbq') return fbq;\n    });\n\n    mock('createQueue', key => {});\n\n    mock('setInWindow', (key, val) => {\n      if (key === 'fbq') fbq = val;\n    });\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('aliasInWindow').wasCalledWith('_fbq', 'fbq');\n    assertApi('setInWindow').wasCalled();\n    assertApi('gtmOnSuccess').wasCalled();\n- name: fbq exists - method copied\n  code: |-\n    mock('setInWindow', key => {\n      if (key === 'fbq') fail('setInWindow called with fbq even though variable exists');\n    });\n\n    mock('createQueue', key => {});\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: makeTableMap called\n  code: |-\n    mockData.advancedMatching = true;\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('makeTableMap').wasCalledWith(mockData.advancedMatchingList, 'name', 'value');\n    assertApi('makeTableMap').wasCalledWith(mockData.objectPropertyList, 'name', 'value');\n    assertApi('gtmOnSuccess').wasCalled();\n- name: Consent set\n  code: |-\n    mock('copyFromWindow', key => {\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'consent') {\n          assertThat(arguments[1], 'Consent set incorrectly').isEqualTo('grant');\n        }\n      };\n    });\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: DPO LDU set\n  code: |-\n    mockData.dpoLDU = true;\n    mockData.dpoCountry = '0';\n    mockData.dpoState = '0';\n\n    mock('copyFromWindow', key => {\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'consent') {\n          assertThat(arguments[1], 'Consent set incorrectly').isEqualTo('grant');\n        }\n        if (arguments[0] === 'dataProcessingOptions') {\n          assertThat(arguments[1], 'LDU array value not set').isEqualTo(['LDU']);\n          assertThat(arguments[2], 'LDU country not set').isEqualTo(0);\n          assertThat(arguments[3], 'LDU state not set').isEqualTo(0);\n        }\n      };\n    });\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: DPO LDU not set\n  code: |-\n    mock('copyFromWindow', key => {\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'consent') {\n          assertThat(arguments[1], 'Consent set incorrectly').isEqualTo('grant');\n        }\n        if (arguments[0] === 'dataProcessingOptions') {\n          fail('dataProcessingOptions called even though DPO was not set');\n        }\n      };\n    });\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: Pixel IDs set - do not initialize\n  code: |-\n    mock('copyFromWindow', key => {\n      if (key === '_fbq_gtm_ids') return ['12345', '23456'];\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'init') fail('init called even though pixel IDs already initialized');\n      };\n    });\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: Pixel IDs not set - run init process\n  code: \"let index = 0;\\nlet count = 0;\\nlet _fbq_gtm_ids;\\n\\nmockData.advancedMatching\\\n    \\ = true;\\nmockData.disableAutoConfig = true;\\nmockData.disablePushState = true;\\n\\\n    \\nmock('setInWindow', (key, val) => {\\n  if (key === 'fbq.disablePushState') count\\\n    \\ += 1;\\n  if (key === '_fbq_gtm_ids') _fbq_gtm_ids = val;\\n});\\n\\nconst initObj\\\n    \\ = {\\n  ct: 'Helsinki',\\n  cn: 'Finland',\\n  external_id: 'UserId'\\n};\\n\\nmock('copyFromWindow',\\\n    \\ key => {\\n  if (key === 'fbq') return function() {\\n    if (arguments[0] ===\\\n    \\ 'set' && arguments[1] === 'autoConfig' && arguments[2] === false) {\\n      assertThat(arguments[3],\\\n    \\ 'autoConfig called with incorrect pixelId').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\    }\\n    if (arguments[0] === 'set' && arguments[1] === 'agent') {\\n      assertThat(arguments[2],\\\n    \\ 'agent set with invalid value').isEqualTo('tmSimo-GTM-WebTemplate');\\n     \\\n    \\ assertThat(arguments[3], 'agent set with invalid pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      index += 1;\\n    }\\n    if (arguments[0] === 'init') {\\n      assertThat(arguments[1],\\\n    \\ 'init called with incorrect pixelId').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'init called with incorrect initObj').isEqualTo(initObj);\\n\\\n    \\    } \\n  };\\n});\\n\\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\\n    \\nassertThat(_fbq_gtm_ids, '_fbq_gtm_ids has incorrect contents').isEqualTo(mockData.pixelId.split(','));\\n\\\n    assertThat(index, 'init called incorrect number of times: ' + index).isEqualTo(2);\\n\\\n    assertThat(count, 'fbq.disablePushState called incorrect number of times: ' +\\\n    \\ count).isEqualTo(2);\\n\\n// Verify that the tag finished successfully.\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: Send standard event\n  code: \"const eventParams = {\\n  prop1: 'val1',\\n  prop2: 'val2'\\n};\\n\\nlet index\\\n    \\ = 0;\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return function()\\\n    \\ {\\n    if (arguments[0] === 'trackSingle') {\\n      assertThat(arguments[1],\\\n    \\ 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo(mockData.standardEventName);\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(eventParams);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n});\\n     \\n// Call runCode to run the template's\\\n    \\ code.\\nrunCode(mockData);\\n\\n// Verify that the tag finished successfully.\\n\\\n    assertThat(index, 'trackSingle called incorrect number of times').isEqualTo(2);\\n\\\n    assertApi('gtmOnSuccess').wasCalled();\"\n- name: Send custom event\n  code: \"mockData.eventName = 'custom';\\n\\nconst eventParams = {\\n  prop1: 'val1',\\n\\\n    \\  prop2: 'val2'\\n};\\n\\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  if\\\n    \\ (key === 'fbq') return function() {\\n    if (arguments[0] === 'trackSingleCustom')\\\n    \\ {\\n      assertThat(arguments[1], 'trackSingleCustom called with incorrect pixel\\\n    \\ ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n      assertThat(arguments[2],\\\n    \\ 'trackSingleCustom called with incorrect event name').isEqualTo(mockData.customEventName);\\n\\\n    \\      assertThat(arguments[3], 'trackSingleCustom called with incorrect event\\\n    \\ parameters').isEqualTo(eventParams);\\n      index += 1;\\n    }\\n  };\\n});\\n\\\n    \\     \\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\n//\\\n    \\ Verify that the tag finished successfully.\\nassertThat(index, 'trackSingleCustom\\\n    \\ called incorrect number of times').isEqualTo(2);\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: Send variable event with standard name\n  code: \"mockData.eventName = 'variable';\\nmockData.variableEventName = 'PageView';\\n\\\n    \\nconst eventParams = {\\n  prop1: 'val1',\\n  prop2: 'val2'\\n};\\n\\nlet index =\\\n    \\ 0;\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return function()\\\n    \\ {\\n    if (arguments[0] === 'trackSingle') {\\n      assertThat(arguments[1],\\\n    \\ 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo(mockData.variableEventName);\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(eventParams);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n});\\n     \\n// Call runCode to run the template's\\\n    \\ code.\\nrunCode(mockData);\\n\\n// Verify that the tag finished successfully.\\n\\\n    assertThat(index, 'trackSingle called incorrect number of times').isEqualTo(2);\\n\\\n    assertApi('gtmOnSuccess').wasCalled();\"\n- name: Send variable event with custom name\n  code: \"mockData.eventName = 'variable';\\nmockData.variableEventName = 'custom';\\n\\\n    \\nconst eventParams = {\\n  prop1: 'val1',\\n  prop2: 'val2'\\n};\\n\\nlet index =\\\n    \\ 0;\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return function()\\\n    \\ {\\n    if (arguments[0] === 'trackSingleCustom') {\\n      assertThat(arguments[1],\\\n    \\ 'trackSingleCustom called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingleCustom called with incorrect event\\\n    \\ name').isEqualTo(mockData.variableEventName);\\n      assertThat(arguments[3],\\\n    \\ 'trackSingleCustom called with incorrect event parameters').isEqualTo(eventParams);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n});\\n     \\n// Call runCode to run the template's\\\n    \\ code.\\nrunCode(mockData);\\n\\n// Verify that the tag finished successfully.\\n\\\n    assertThat(index, 'trackSingleCustom called incorrect number of times').isEqualTo(2);\\n\\\n    assertApi('gtmOnSuccess').wasCalled();\"\n- name: Send event parameters from a variable\n  code: \"mockData.objectPropertiesFromVariable = {\\n  prop1: 'val1',\\n  prop2: 'val2'\\n\\\n    };\\n\\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return\\\n    \\ function() {\\n    if (arguments[0] === 'trackSingle') {\\n      assertThat(arguments[1],\\\n    \\ 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo(mockData.standardEventName);\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(mockData.objectPropertiesFromVariable);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n});\\n     \\n// Call runCode to run the template's\\\n    \\ code.\\nrunCode(mockData);\\n\\n// Verify that the tag finished successfully.\\n\\\n    assertThat(index, 'trackSingle called incorrect number of times').isEqualTo(2);\\n\\\n    assertApi('gtmOnSuccess').wasCalled();\"\n- name: Enhanced Ecommerce integration fails with invalid object\n  code: |-\n    mockData.enhancedEcommerce = true;\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('logToConsole').wasCalledWith('Facebook Pixel: No valid \"ecommerce\" object found in dataLayer');\n    assertApi('gtmOnFailure').wasCalled();\n    assertApi('gtmOnSuccess').wasNotCalled();\n- name: Enhanced Ecommerce integration fails with invalid action\n  code: |-\n    mockData.enhancedEcommerce = true;\n\n    mock('copyFromDataLayer', key => {\n      if (key === 'ecommerce') return {\n        invalid: true\n      };\n    });\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('logToConsole').wasCalledWith('Facebook Pixel: Most recently pushed \"ecommerce\" object must be one of types \"detail\", \"add\", \"checkout\" or \"purchase\".');\n    assertApi('gtmOnFailure').wasCalled();\n    assertApi('gtmOnSuccess').wasNotCalled();\n- name: Enhanced Ecommerce ViewContent works\n  code: \"mockData.enhancedEcommerce = true;\\nmockData.objectPropertyList = {};\\n\\n\\\n    mock('copyFromDataLayer', key => {\\n  if (key === 'ecommerce') return {\\n    currencyCode:\\\n    \\ 'EUR',\\n    detail: {\\n      products: mockEec.gtm.products\\n    }\\n  };\\n});\\n\\\n    \\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return\\\n    \\ function() {\\n    if (arguments[0] === 'trackSingle') {\\n      assertThat(arguments[1],\\\n    \\ 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo('ViewContent');\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(mockEec.fb);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n});\\n     \\n// Call runCode to run the template's\\\n    \\ code.\\nrunCode(mockData);\\n\\n// Verify that the tag finished successfully.\\n\\\n    assertThat(index, 'trackSingle called incorrect number of times').isEqualTo(2);\\n\\\n    assertApi('gtmOnSuccess').wasCalled();\"\n- name: Enhanced Ecommerce AddToCart works\n  code: \"mockData.enhancedEcommerce = true;\\nmockData.objectPropertyList = {};\\n\\n\\\n    mock('copyFromDataLayer', key => {\\n  if (key === 'ecommerce') return {\\n    currencyCode:\\\n    \\ 'EUR',\\n    add: {\\n      products: mockEec.gtm.products\\n    }\\n  };\\n});\\n\\\n    \\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return\\\n    \\ function() {\\n    if (arguments[0] === 'trackSingle') {\\n      assertThat(arguments[1],\\\n    \\ 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo('AddToCart');\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(mockEec.fb);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n});\\n     \\n// Call runCode to run the template's\\\n    \\ code.\\nrunCode(mockData);\\n\\n// Verify that the tag finished successfully.\\n\\\n    assertThat(index, 'trackSingle called incorrect number of times').isEqualTo(2);\\n\\\n    assertApi('gtmOnSuccess').wasCalled();\"\n- name: Enhanced Ecommerce InitiateCheckout works\n  code: \"mockData.enhancedEcommerce = true;\\nmockEec.fb.num_items = 3;\\nmockData.objectPropertyList\\\n    \\ = {};\\n\\nmock('copyFromDataLayer', key => {\\n  if (key === 'ecommerce') return\\\n    \\ {\\n    currencyCode: 'EUR',\\n    checkout: {\\n      products: mockEec.gtm.products\\n\\\n    \\    }\\n  };\\n});\\n\\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  if (key\\\n    \\ === 'fbq') return function() {\\n    if (arguments[0] === 'trackSingle') {\\n\\\n    \\      assertThat(arguments[1], 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo('InitiateCheckout');\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(mockEec.fb);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n});\\n     \\n// Call runCode to run the template's\\\n    \\ code.\\nrunCode(mockData);\\n\\n// Verify that the tag finished successfully.\\n\\\n    assertThat(index, 'trackSingle called incorrect number of times').isEqualTo(2);\\n\\\n    assertApi('gtmOnSuccess').wasCalled();\"\n- name: Enhanced Ecommerce Purchase works\n  code: \"mockData.enhancedEcommerce = true;\\nmockEec.fb.num_items = 3;\\nmockData.objectPropertyList\\\n    \\ = {};\\n\\nmock('copyFromDataLayer', key => {\\n  if (key === 'ecommerce') return\\\n    \\ {\\n    currencyCode: 'EUR',\\n    purchase: {\\n      products: mockEec.gtm.products\\n\\\n    \\    }\\n  };\\n});\\n\\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  if (key\\\n    \\ === 'fbq') return function() {\\n    if (arguments[0] === 'trackSingle') {\\n\\\n    \\      assertThat(arguments[1], 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo('Purchase');\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(mockEec.fb);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n});\\n     \\n// Call runCode to run the template's\\\n    \\ code.\\nrunCode(mockData);\\n\\n// Verify that the tag finished successfully.\\n\\\n    assertThat(index, 'trackSingle called incorrect number of times').isEqualTo(2);\\n\\\n    assertApi('gtmOnSuccess').wasCalled();\"\n- name: Object merge with variable and list works\n  code: \"mockData.objectPropertiesFromVariable = {\\n  prop1: 'var1',\\n  prop2: 'var2',\\n\\\n    \\  prop3: 'var3'\\n};\\n\\nconst expected = {\\n  prop1: 'val1',\\n  prop2: 'val2',\\n\\\n    \\  prop3: 'var3'\\n};\\n\\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  if\\\n    \\ (key === 'fbq') return function() {\\n    if (arguments[0] === 'trackSingle')\\\n    \\ {\\n      assertThat(arguments[1], 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo('PageView');\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(expected);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n});\\n     \\n// Call runCode to run the template's\\\n    \\ code.\\nrunCode(mockData);\\n\\n// Verify that the tag finished successfully.\\n\\\n    assertThat(index, 'trackSingle called incorrect number of times').isEqualTo(2);\\n\\\n    assertApi('gtmOnSuccess').wasCalled();\"\n- name: Object merge with variable, list and eec works\n  code: \"mockData.enhancedEcommerce = true;\\nmockData.objectPropertiesFromVariable\\\n    \\ = {\\n  content_type: 'product_group'\\n};\\nmockData.objectPropertyList = [{\\n\\\n    \\  name: 'currency',\\n  value: 'USD'\\n}];\\nmockEec.fb.num_items = 3;\\nmockEec.fb.content_type\\\n    \\ = 'product_group';\\nmockEec.fb.currency = 'USD';\\n\\nmock('copyFromDataLayer',\\\n    \\ key => {\\n  if (key === 'ecommerce') return {\\n    currencyCode: 'EUR',\\n  \\\n    \\  purchase: {\\n      products: mockEec.gtm.products\\n    }\\n  };\\n});\\n\\nlet\\\n    \\ index = 0;\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return function()\\\n    \\ {\\n    if (arguments[0] === 'trackSingle') {\\n      assertThat(arguments[1],\\\n    \\ 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo('Purchase');\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(mockEec.fb);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n});\\n     \\n// Call runCode to run the template's\\\n    \\ code.\\nrunCode(mockData);\\n\\n// Verify that the tag finished successfully.\\n\\\n    assertThat(index, 'trackSingle called incorrect number of times').isEqualTo(2);\\n\\\n    assertApi('gtmOnSuccess').wasCalled();\"\n- name: Send event ID\n  code: \"mockData.eventId = 'eventId';\\n\\nmock('copyFromWindow', key => {\\n  if (key\\\n    \\ === 'fbq') return function() {\\n    if (arguments[0] === 'trackSingle') {\\n\\\n    \\      assertThat(arguments[4], 'eventID not included in hit').isEqualTo({eventID:\\\n    \\ mockData.eventId});\\n    }\\n  };\\n});\\n     \\n// Call runCode to run the template's\\\n    \\ code.\\nrunCode(mockData);\\n\\n// Verify that the tag finished successfully.\\n\\\n    assertApi('gtmOnSuccess').wasCalled();\"\nsetup: \"const mockData = {\\n  pixelId: '12345,23456',\\n  eventName: 'standard',\\n\\\n  \\  standardEventName: 'PageView',\\n  customEventName: 'custom',\\n  variableEventName:\\\n  \\ 'standard',\\n  consent: true,\\n  advancedMatching: false,\\n  advancedMatchingList:\\\n  \\ [{name: 'ct', value: 'Helsinki'},{name: 'cn', value: 'Finland'},{name: 'external_id',\\\n  \\ value: 'UserId'}],\\n  objectPropertiesFromVariable: false,\\n  objectPropertyList:\\\n  \\ [{name: 'prop1', value: 'val1'},{name: 'prop2', value: 'val2'}],\\n  disableAutoConfig:\\\n  \\ false,\\n  disablePushState: false,\\n  enhancedEcommerce: false,\\n  eventId: ''\\n\\\n  };\\n\\nconst mockEec = {\\n  gtm: {  \\n    products: [{\\n      id: 'i1',\\n      name:\\\n  \\ 'n1',\\n      category: 'c1',\\n      price: '1.00',\\n      quantity: 1\\n    },{\\n\\\n  \\      id: 'i2',\\n      name: 'n2',\\n      category: 'c2',\\n      price: '2.00',\\n\\\n  \\      quantity: 2\\n    }]\\n  },\\n  fb: {\\n    content_type: 'product',\\n    contents:\\\n  \\ [{\\n      id: 'i1',\\n      quantity: 1\\n    },{\\n      id: 'i2',\\n      quantity:\\\n  \\ 2\\n    }],\\n    currency: 'EUR',\\n    value: 5.00\\n  }\\n};\\n\\nconst scriptUrl\\\n  \\ = 'https://connect.facebook.net/en_US/fbevents.js';\\n\\n// Create injectScript\\\n  \\ mock\\nlet success, failure;\\nmock('injectScript', (url, onsuccess, onfailure)\\\n  \\ => {\\n  success = onsuccess;\\n  failure = onfailure;\\n  onsuccess();\\n});\\n\\n\\\n  mock('copyFromWindow', key => {\\n  if (key === 'fbq') return () => {};\\n});\"\n\n\n___NOTES___\n\nCreated on 18/05/2019, 21:57:16\n\n\n",
                "galleryReference": {
                    "host": "github.com",
                    "owner": "facebookarchive",
                    "repository": "GoogleTagManager-WebTemplate-For-FacebookPixel",
                    "version": "11c004614f6b8f7cc999caabef521086116ce302",
                    "isModified": true,
                    "signature": "9b5f067bb372c56946c4f85fafa08c3d19e242fe20633c242c36343a930b2177",
                    "galleryTemplateId": "5RM3Q"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "templateId": "65",
                "name": "TikTok Pixel",
                "fingerprint": "1789878462076",
                "templateData": "___TERMS_OF_SERVICE___\n\nBy creating or modifying this file you agree to Google Tag Manager's Community\nTemplate Gallery Developer Terms of Service available at\nhttps://developers.google.com/tag-manager/gallery-tos (or such other URL as\nGoogle may provide), as modified from time to time.\n\n\n___INFO___\n\n{\n  \"type\": \"TAG\",\n  \"id\": \"cvt_MRQN8\",\n  \"version\": 1,\n  \"displayName\": \"TikTok Pixel\",\n  \"categories\": [\n    \"ADVERTISING\",\n    \"ANALYTICS\"\n  ],\n  \"brand\": {\n    \"id\": \"github.com_tiktok\",\n    \"displayName\": \"tiktok\",\n    \"thumbnail\": \"data:image/png;base64,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\\u003d\\u003d\"\n  },\n  \"description\": \"Install TikTok Pixel easily to your site without the need to write a line of code.\",\n  \"containerContexts\": [\n    \"WEB\"\n  ]\n}\n\n\n___TEMPLATE_PARAMETERS___\n\n[\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"Section 1 - TikTok Event Configuration\",\n    \"displayName\": \"TikTok Event Configuration\",\n    \"groupStyle\": \"NO_ZIPPY\",\n    \"subParams\": [\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"pixel_code\",\n        \"displayName\": \"Pixel ID\",\n        \"simpleValueType\": true,\n        \"valueValidators\": [],\n        \"help\": \"You can find your Pixel ID in Events Manager\",\n        \"valueHint\": \"CD9079RC77U0N3GBV16Y\"\n      },\n      {\n        \"type\": \"SELECT\",\n        \"name\": \"event\",\n        \"displayName\": \"Event Name\",\n        \"macrosInSelect\": true,\n        \"selectItems\": [\n          {\n            \"value\": \"CompletePayment\",\n            \"displayValue\": \"CompletePayment\"\n          },\n          {\n            \"value\": \"AddToCart\",\n            \"displayValue\": \"AddToCart\"\n          },\n          {\n            \"value\": \"ViewContent\",\n            \"displayValue\": \"ViewContent\"\n          },\n          {\n            \"value\": \"InitiateCheckout\",\n            \"displayValue\": \"InitiateCheckout\"\n          },\n          {\n            \"value\": \"AddToWishlist\",\n            \"displayValue\": \"AddToWishlist\"\n          },\n          {\n            \"value\": \"AddPaymentInfo\",\n            \"displayValue\": \"AddPaymentInfo\"\n          },\n          {\n            \"value\": \"PlaceAnOrder\",\n            \"displayValue\": \"PlaceAnOrder\"\n          },\n          {\n            \"value\": \"Contact\",\n            \"displayValue\": \"Contact\"\n          },\n          {\n            \"value\": \"Download\",\n            \"displayValue\": \"Download\"\n          },\n          {\n            \"value\": \"SubmitForm\",\n            \"displayValue\": \"SubmitForm\"\n          },\n          {\n            \"value\": \"CompleteRegistration\",\n            \"displayValue\": \"CompleteRegistration\"\n          },\n          {\n            \"value\": \"Subscribe\",\n            \"displayValue\": \"Subscribe\"\n          },\n          {\n            \"value\": \"ClickButton\",\n            \"displayValue\": \"ClickButton\"\n          },\n          {\n            \"value\": \"Search\",\n            \"displayValue\": \"Search\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"help\": \"TikTok supports 18 standard events. You may refer to our \\u003ca href\\u003d\\\"https://ads.tiktok.com/help/article?aid\\u003d10028\\\" target\\u003d\\\"_blank\\\"\\u003edocumentation\\u003c/a\\u003e and choose a suitable event to tag.\",\n        \"defaultValue\": \"{{Event}}\"\n      }\n    ],\n    \"help\": \"\\u003ca href\\u003d\\\"https://business-api.tiktok.com/portal/docs?id\\u003d1799004006287425\\\" target\\u003d\\\"_blank\\\"\\u003eLearn more\\u003c/a\\u003e about using TikTok Pixel with Google Tag Manager.\"\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"Section 3 - Parameter Override\",\n    \"displayName\": \"Parameter Override\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"subParams\": [\n      {\n        \"type\": \"LABEL\",\n        \"name\": \"Parameter Override Description\",\n        \"displayName\": \"\\u003ca target\\u003d\\\"_blank\\\" href\\u003d\\\"https://business-api.tiktok.com/portal/docs?id\\u003d1799004110681154#item-link-How%20to%20set%20up%20deduplication\\\"\\u003eLearn more\\u003c/a\\u003e about how to manually configure event parameters with \\\"Parameter Override\\\".\"\n      },\n      {\n        \"type\": \"GROUP\",\n        \"name\": \"Advanced Matching Configurations\",\n        \"displayName\": \"Advanced Matching Configurations\",\n        \"groupStyle\": \"NO_ZIPPY\",\n        \"subParams\": [\n          {\n            \"type\": \"RADIO\",\n            \"name\": \"hash\",\n            \"displayName\": \"Hashed / Non-Hashed AM Parameters\",\n            \"radioItems\": [\n              {\n                \"value\": \"hashed\",\n                \"displayValue\": \"SHA256 AM Parameters\"\n              },\n              {\n                \"value\": \"non-hashed\",\n                \"displayValue\": \"Plain AM Parameters\",\n                \"help\": \"TikTok Pixel will hash plain email and phone for you\"\n              }\n            ],\n            \"simpleValueType\": true,\n            \"help\": \"Tell us if your AM parameters have been hashed.\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"email\",\n            \"displayName\": \"Email\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"hash\",\n                \"paramValue\": \"non-hashed\",\n                \"type\": \"EQUALS\"\n              }\n            ]\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"phone\",\n            \"displayName\": \"Phone\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"hash\",\n                \"paramValue\": \"non-hashed\",\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"help\": \"If the country code is 86, then do not include country code (example: 13800000000). Otherwise, include country code with + and remove any other characters (spaces, \\u0027-\\u0027) between numbers (example for US: +12133734253).\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"external_id\",\n            \"displayName\": \"External ID\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"hash\",\n                \"paramValue\": \"non-hashed\",\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"help\": \"Any unique identifier on the advertiser\\u0027s side, such as loyalty membership ID, user ID, or external cookie ID.\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"sha256_email\",\n            \"displayName\": \"SHA256 Hashed Email\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"hash\",\n                \"paramValue\": \"hashed\",\n                \"type\": \"EQUALS\"\n              }\n            ]\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"sha256_phone\",\n            \"displayName\": \"SHA256 Hashed Phone\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"hash\",\n                \"paramValue\": \"hashed\",\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"help\": \"If the country code is 86, then do not include country code (example: 13800000000). Otherwise, include country code with + and remove any other characters (spaces, \\u0027-\\u0027) between numbers (example for US: +12133734253).\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"sha256_external_id\",\n            \"displayName\": \"SHA256 Hashed External ID\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"hash\",\n                \"paramValue\": \"hashed\",\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"help\": \"Any unique identifier on the advertiser\\u0027s side, such as loyalty membership ID, user ID, or external cookie ID.\"\n          }\n        ],\n        \"help\": \"Advance matching parameters are hashed and then shared with TikTok to help attribute more conversions to your ads and improve ad retargeting. \\u003cbr\\u003e \\u003ca target\\u003d\\\"_blank\\\" href\\u003d\\\"https://business-api.tiktok.com/portal/docs?id\\u003d1799004110681154#item-link-User%20data\\\"\\u003eLearn more\\u003c/a\\u003e about how to format Advanced Matching parameters.\"\n      },\n      {\n        \"type\": \"GROUP\",\n        \"name\": \"Properties\",\n        \"displayName\": \"Properties (e.g. product data)\",\n        \"groupStyle\": \"NO_ZIPPY\",\n        \"subParams\": [\n          {\n            \"type\": \"CHECKBOX\",\n            \"name\": \"enhance_ecomm\",\n            \"checkboxText\": \"Use Google Analytics E-commerce Data Layers (Recommended)\",\n            \"simpleValueType\": true,\n            \"help\": \"If you have Google\\u0027s \\u003ca href\\u003d\\\"https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type\\u003dgtm#implementation\\\" target\\u003d\\\"_blank\\\"\\u003eEnhanced E-Commerce\\u003c/a\\u003e or \\u003ca href\\u003d\\\"https://support.google.com/tagmanager/answer/6107169?hl\\u003den#standard-ecommerce\\\" target\\u003d\\\"_blank\\\"\\u003e Standard E-Commerce\\u003c/a\\u003e Data Layers set up to collect information about the shopping behavior of your users. TikTok will automatically collect these data as parameters to help you improve your ad performance.\",\n            \"defaultValue\": true\n          },\n          {\n            \"type\": \"RADIO\",\n            \"name\": \"ga_ecomm\",\n            \"displayName\": \"Google Analytics E-commerce Data Layers\",\n            \"radioItems\": [\n              {\n                \"value\": \"ecomm\",\n                \"displayValue\": \"Standard Ecommerce\"\n              },\n              {\n                \"value\": \"enhance_ecomm\",\n                \"displayValue\": \"Enhanced Ecommerce\"\n              }\n            ],\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"enhance_ecomm\",\n                \"paramValue\": true,\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"defaultValue\": \"ecomm\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"ecomm_currency\",\n            \"displayName\": \"Currency\",\n            \"simpleValueType\": true,\n            \"valueHint\": \"USD\",\n            \"help\": \"If you haven\\u0027t added the currency to the e-commerce data layer, add the current code here. Note: Adding the code will replace the \\u0027currency code\\u0027 or \\u0027currency\\u0027 field from your data layer.\",\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"enhance_ecomm\",\n                \"paramValue\": true,\n                \"type\": \"EQUALS\"\n              }\n            ]\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"ecomm_customer_type\",\n            \"displayName\": \"customer_type\",\n            \"simpleValueType\": true,\n            \"help\": \"If you haven\\u0027t added customer_type to your data layer, add it here; leave it empty if you aren\\u0027t sure whether the customer is new or returning. Note: a customer_type found in your data layer, or set under Additional Properties, takes precedence over this field\\n— avoid configuring it in more than one place.\",\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"enhance_ecomm\",\n                \"paramValue\": true,\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"valueHint\": \"new/returning\"\n          },\n          {\n            \"type\": \"RADIO\",\n            \"name\": \"single_multi_product\",\n            \"displayName\": \"Manually Input Single / Multiple Products from Data Layer\",\n            \"radioItems\": [\n              {\n                \"value\": \"single\",\n                \"displayValue\": \"Single Content\"\n              },\n              {\n                \"value\": \"multiple\",\n                \"displayValue\": \"Multiple Contents\",\n                \"help\": \"Send a list of contents as a JSON string. \\u003ca href\\u003d\\\"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON\\\" target\\u003d\\\"_blank\\\"\\u003eLearn more about JSON\\u003c/a\\u003e\"\n              },\n              {\n                \"value\": \"empty\",\n                \"displayValue\": \"No Contents\"\n              }\n            ],\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"enhance_ecomm\",\n                \"paramValue\": false,\n                \"type\": \"EQUALS\"\n              }\n            ]\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"contents\",\n            \"displayName\": \"contents\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"single_multi_product\",\n                \"paramValue\": \"multiple\",\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"help\": \"Please make sure \\\"contents\\\" is \\u003ca href\\u003d\\\"https://business-api.tiktok.com/portal/docs?id\\u003d1799004110681154#item-link-contents%20parameters\\\" target\\u003d\\\"_blank\\\"\\u003ea list of valid content objects\\u003c/a\\u003e or encoded as \\u003ca href\\u003d\\\"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON\\\" target\\u003d\\\"_blank\\\"\\u003ea valid JSON string\\u003c/a\\u003e.\",\n            \"valueHint\": \"[{\\\"content_id\\\": \\\"abc\\\", \\\"price\\\": 10, \\\"quantity\\\": 1}]\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"content_id\",\n            \"displayName\": \"content_id\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"single_multi_product\",\n                \"paramValue\": \"single\",\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"help\": \"Recommended: Unique ID of the item, either SKU ID or item group ID\"\n          },\n          {\n            \"type\": \"SELECT\",\n            \"name\": \"content_type\",\n            \"displayName\": \"content_type\",\n            \"macrosInSelect\": false,\n            \"selectItems\": [\n              {\n                \"value\": \"product\",\n                \"displayValue\": \"product\"\n              },\n              {\n                \"value\": \"product_group\",\n                \"displayValue\": \"product_group\"\n              }\n            ],\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"single_multi_product\",\n                \"paramValue\": \"single\",\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"help\": \"Recommended: Select \\\"product\\\" if your content_id is SKU ID, or select \\\"product_group\\\" if your content_id is item group ID\",\n            \"notSetText\": \"\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"content_name\",\n            \"displayName\": \"content_name\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"single_multi_product\",\n                \"paramValue\": \"single\",\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"help\": \"Recommended: Title of your product or page\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"content_category\",\n            \"displayName\": \"content_category\",\n            \"simpleValueType\": true,\n            \"help\": \"Recommended: Category of the product or page\",\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"single_multi_product\",\n                \"paramValue\": \"single\",\n                \"type\": \"EQUALS\"\n              }\n            ]\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"price\",\n            \"displayName\": \"price\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"single_multi_product\",\n                \"paramValue\": \"single\",\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"help\": \"Recommended: Price of this item\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"quantity\",\n            \"displayName\": \"quantity\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"single_multi_product\",\n                \"paramValue\": \"single\",\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"help\": \"Recommended: Quantity of this item\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"value\",\n            \"displayName\": \"value\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"enhance_ecomm\",\n                \"paramValue\": false,\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"help\": \"Recommended: Total value of the order\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"currency\",\n            \"displayName\": \"currency\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"enhance_ecomm\",\n                \"paramValue\": false,\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"help\": \"Recommended: ISO 4217 code. Examples: \\\"EUR\\\", \\\"USD\\\", \\\"JPY\\\". See \\u003ca href\\u003d\\\"https://ads.tiktok.com/help/article/about-parameters?lang\\u003den\\\" target\\u003d\\\"_blank\\\"\\u003ehere\\u003c/a\\u003e for a list of currencies supported.\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"description\",\n            \"displayName\": \"description\",\n            \"simpleValueType\": true,\n            \"help\": \"Recommended: Description of the product or page\",\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"enhance_ecomm\",\n                \"paramValue\": false,\n                \"type\": \"EQUALS\"\n              }\n            ]\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"brand\",\n            \"displayName\": \"brand\",\n            \"simpleValueType\": true,\n            \"help\": \"Recommended: Brand name of the product\",\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"enhance_ecomm\",\n                \"paramValue\": false,\n                \"type\": \"EQUALS\"\n              }\n            ]\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"query\",\n            \"displayName\": \"query\",\n            \"simpleValueType\": true,\n            \"help\": \"Recommended for Search events: The text string that was searched for. For instance, a person searches for a product on your website, you can forward the keyword being searched here.\",\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"enhance_ecomm\",\n                \"paramValue\": false,\n                \"type\": \"EQUALS\"\n              }\n            ]\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"status\",\n            \"displayName\": \"status\",\n            \"simpleValueType\": true,\n            \"help\": \"Optional: Status of an order, item, or service.\",\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"enhance_ecomm\",\n                \"paramValue\": false,\n                \"type\": \"EQUALS\"\n              }\n            ]\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"order_id\",\n            \"displayName\": \"order_id\",\n            \"simpleValueType\": true,\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"enhance_ecomm\",\n                \"paramValue\": false,\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"help\": \"Recommended: Unique ID of this order\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"customer_type\",\n            \"displayName\": \"customer_type\",\n            \"simpleValueType\": true,\n            \"help\": \"A categorical label indicating the customer segment associated with the conversion event.\",\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"enhance_ecomm\",\n                \"paramValue\": false,\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"valueHint\": \"new/returning\"\n          }\n        ],\n        \"help\": \"Configure and send \\u003ca href\\u003d\\\"https://business-api.tiktok.com/portal/docs?id\\u003d1799004110681154#item-link-Product%20data\\\" target\\u003d\\\"_blank\\\"\\u003eadditional parameters\\u003c/a\\u003e to TikTok for to improve Ad performance and unlock Ad features.\"\n      },\n      {\n        \"type\": \"GROUP\",\n        \"name\": \"De-duplication Configurations\",\n        \"displayName\": \"De-duplication Configurations\",\n        \"groupStyle\": \"NO_ZIPPY\",\n        \"subParams\": [\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"event_id\",\n            \"displayName\": \"Event ID\",\n            \"simpleValueType\": true\n          }\n        ],\n        \"help\": \"If you use both TikTok Pixel template and Events API template to send events, you can set up Event ID to deduplicate the two sources. \\u003ca target\\u003d\\\"_blank\\\" href\\u003d\\\"https://business-api.tiktok.com/portal/docs?id\\u003d1799004097478658#item-link-How%20to%20set%20up%20deduplication\\\"\\u003eLearn more\\u003c/a\\u003e about how to set up deduplication.\"\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"Section 2 - Additional Properties\",\n    \"displayName\": \"Additional Properties\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"subParams\": [\n      {\n        \"type\": \"LABEL\",\n        \"name\": \"Description\",\n        \"displayName\": \"You may configure and send more custom parameters to TikTok to unlock additional Ad features targeted at specific verticals (i.e. Travel)\"\n      },\n      {\n        \"type\": \"PARAM_TABLE\",\n        \"name\": \"custom_properties\",\n        \"displayName\": \"\",\n        \"paramTableColumns\": [\n          {\n            \"param\": {\n              \"type\": \"TEXT\",\n              \"name\": \"key\",\n              \"displayName\": \"Key\",\n              \"simpleValueType\": true,\n              \"canBeEmptyString\": false\n            },\n            \"isUnique\": true\n          },\n          {\n            \"param\": {\n              \"type\": \"TEXT\",\n              \"name\": \"value\",\n              \"displayName\": \"Value\",\n              \"simpleValueType\": true\n            },\n            \"isUnique\": false\n          }\n        ]\n      }\n    ]\n  }\n]\n\n\n___SANDBOXED_JS_FOR_WEB_TEMPLATE___\n\n/*\n * Copyright 2022 ByteDance Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst version = \"0_2_03\";\n\nconst log = require(\"logToConsole\");\nconst copyFromWindow = require(\"copyFromWindow\");\nconst copyFromDataLayer = require(\"copyFromDataLayer\");\nconst makeNumber = require(\"makeNumber\");\nconst makeString = require('makeString');\nconst callInWindow = require(\"callInWindow\");\nconst Object = require(\"Object\");\nconst JSON = require(\"JSON\");\n\nconst ecommerce = copyFromDataLayer(\"ecommerce\");\nconst eventModel = copyFromDataLayer(\"eventModel\");\nconst userDataFromDataLayer = copyFromDataLayer(\"user_data\");\nconst ttContents = copyFromDataLayer('tt_contents') || (eventModel && eventModel.tt_contents);\nconst ttContentType = copyFromDataLayer('tt_content_type') || (eventModel && eventModel.tt_content_type);\nconst ttExternalId = copyFromDataLayer('tt_external_id') || (eventModel && eventModel.tt_external_id);\nconst ttOrderId = copyFromDataLayer('tt_order_id') || (eventModel && eventModel.tt_order_id);\nconst ttCustomerType = copyFromDataLayer('tt_customer_type') || (eventModel && eventModel.tt_customer_type);\n// Added: GA4 native key. The GTM path reads from ecommerce, the gtag path reads from eventModel\nconst ga4CustomerType = (ecommerce && ecommerce.customer_type) ||\n  (eventModel && eventModel.customer_type) ||\n  copyFromDataLayer('customer_type');\n\n\nconst ValidEvents = {\n  ViewContent: 1,\n  ClickButton: 1,\n  Search: 1,\n  AddToWishlist: 1,\n  AddToCart: 1,\n  InitiateCheckout: 1,\n  AddPaymentInfo: 1,\n  CompletePayment: 1,\n  PlaceAnOrder: 1,\n  Contact: 1,\n  Download: 1,\n  SubmitForm: 1,\n  CompleteRegistration: 1,\n  Subscribe: 1,\n  CustomizeProduct: 1,\n  FindLocation: 1,\n  Schedule: 1,\n  ApplicationApproval: 1,\n  StartTrial: 1,\n  SubmitApplication: 1,\n  Purchase: 1,\n};\n\nconst TTEventMap = {\n  'add_payment_info': 'AddPaymentInfo',\n  'add_to_cart': 'AddToCart',\n  'add_to_wishlist': 'AddToWishlist',\n  'begin_checkout': 'InitiateCheckout',\n  'page_view': 'Pageview',\n  'purchase': 'CompletePayment',\n  'search': 'Search',\n  'sign_up': 'CompleteRegistration',\n  'view_item': 'ViewContent',\n};\n\nconst checkExistence = (key) => {\n  return typeof copyFromWindow(key) !== \"undefined\";\n};\n\nconst looksLikeSHA256 = (s) => {\n  return s && s.length == 64;\n};\n\nconst getConfigHash = (data) => {\n  // What API is used. 0: None, 1: Tag Manager, 2: Google Tag, 3: Both\n  var apiVersion = 0;\n  if (ecommerce || userDataFromDataLayer) apiVersion += 1;\n  if (eventModel && (eventModel.items || eventModel.value || eventModel.currency || eventModel.user_data)) apiVersion += 2;\n\n  var contents = 0;\n  if (data.enhance_ecomm == false && data.single_multi_product == \"empty\") contents = 1;\n  else if (data.enhance_ecomm == false && data.single_multi_product == \"single\") contents = 2;\n  else if (data.enhance_ecomm == false && data.single_multi_product == \"multiple\") contents = 3;\n  else if (data.enhance_ecomm == true && data.ga_ecomm == \"enhance_ecomm\") contents = 4;\n  else if (data.enhance_ecomm == true && data.ga_ecomm == \"ecomm\") contents = 5;\n\n  return '' + apiVersion + contents;\n};\n\nconst CUSTOMER_TYPE_ALIASES = {\n  // -> new\n  'new': 'new',\n  'new_customer': 'new',\n  'newcustomer': 'new',\n  'new_user': 'new',\n  'new_visitor': 'new',\n  'first_time': 'new',\n  'firsttime': 'new',\n  'first_time_buyer': 'new',\n  'first_time_customer': 'new',\n  'first_purchase': 'new',\n  'first_order': 'new',\n  // -> returning\n  'returning': 'returning',\n  'return': 'returning',\n  'returning_customer': 'returning',\n  'returning_user': 'returning',\n  'returning_visitor': 'returning',\n  'repeat': 'returning',\n  'repeat_customer': 'returning',\n  'repeated': 'returning',\n  'repeated_customer': 'returning',\n  'existing': 'returning',\n  'existing_customer': 'returning',\n  'existing_user': 'returning',\n  'recurring': 'returning',\n  'recurring_customer': 'returning',\n  'loyal': 'returning',\n  'loyal_customer': 'returning'\n};\n\nconst normalizeCustomerType = (value) => {\n  if (!value) return undefined;\n  let normalized = makeString(value).trim().toLowerCase();\n  // Normalize separators: \"New Customer\" / \"new-customer\" -> \"new_customer\"\n  normalized = normalized.split(' ').join('_').split('-').join('_');\n  const mapped = CUSTOMER_TYPE_ALIASES[normalized];\n  return (mapped === 'new' || mapped === 'returning') ? mapped : undefined;\n};\n\nconst getEnhancedEcommerceData = (data, ecommerce) => {\n  if (!ecommerce) {\n    return null;\n  }\n\n  if (data.event == \"ViewContent\" && ecommerce.detail && ecommerce.detail.products) {\n    return ecommerce.detail.products;\n  } else if (data.event == \"AddToCart\" && ecommerce.add && ecommerce.add.products) {\n    return ecommerce.add.products;\n  } else if ((data.event == \"InitiateCheckout\" || data.event == \"AddPaymentInfo\") && ecommerce.checkout && ecommerce.checkout.products) {\n    return ecommerce.checkout.products;\n  } else if ((data.event == \"CompletePayment\" || data.event == \"PlaceAnOrder\" || data.event == \"Subscribe\") && ecommerce.purchase && ecommerce.purchase.products) {\n    return ecommerce.purchase.products;\n  } else {\n    if (ecommerce.detail && ecommerce.detail.products)\n      return ecommerce.detail.products;\n    if (ecommerce.add && ecommerce.add.products)\n      return ecommerce.add.products;\n    if (ecommerce.checkout && ecommerce.checkout.products)\n      return ecommerce.checkout.products;\n    if (ecommerce.purchase && ecommerce.purchase.products)\n      return ecommerce.purchase.products;\n  }\n  return null;\n};\n\nconst getItemCategories = (item) => {\n  var categories = [];\n  if (item.item_category) categories.push(item.item_category);\n  if (item.item_category2) categories.push(item.item_category2);\n  if (item.item_category3) categories.push(item.item_category3);\n  if (item.item_category4) categories.push(item.item_category4);\n  if (item.item_category5) categories.push(item.item_category5);\n\n  if (categories.length > 0) {\n    return categories.join(',');\n  }\n\n  return null;\n};\n\nconst getEcommerceData = (data, ecommerce) => {\n  var value = 0;\n  var currency = \"USD\"; // default value\n  var contents = [];\n\n  /* \n    Standard Ecommerce Support. For more details on Ecommerce Data Structure\n    https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm\n    We will need to check for standard ecommerce events if Enhanced Ecommerce doesnt work\n  */\n  const secData = (ecommerce && ecommerce.items) || (eventModel && eventModel.items) || ttContents;\n  if (secData) {\n    log(\"1a. Standard Ecommerce - Data layers detected\");\n    secData.map(function (ed) {\n      // Form the TikTok Parameter Object\n      var content = {};\n      if (ed.item_id) content.content_id = ed.item_id;\n      if (!ed.item_id && ed.id) content.content_id = ed.id;\n      if (ed.item_name) content.content_name = ed.item_name;\n      if (ed.item_brand) content.brand = ed.item_brand;\n      var categoryString = getItemCategories(ed);\n      if (categoryString) content.content_category = categoryString;\n      if (ed.price) content.price = makeNumber(ed.price);\n      if (ed.quantity) {\n        content.quantity = makeNumber(ed.quantity);\n      } else {\n        content.quantity = 1;\n      }\n      content.content_type = ttContentType || \"product\";\n      contents.push(content);\n      // Calulate the total value shown\n      if (ed.price) {\n        if (!ed.quantity) ed.quantity = 1;\n        value += ed.price * ed.quantity;\n      }\n    });\n  } else if (data.ga_ecomm == \"ecomm\") {\n    log(\"1a. Standard Ecommerce - Unable to detect any Data Layers\");\n  }\n\n  /* \n    Enhanced Ecommerce Support. Fore more details on Enhanced Ecommerce Data Structure\n    https://developers.google.com/analytics/devguides/collection/ua/gtm/enhanced-ecommerce#details\n    ViewContent = detail\n    AddToCart = add\n    InitiateCheckout, AddPaymentInfo = checkout\n    CompletePayment, PlaceAnOrder, Subscribe = purchase\n  */\n  const eecData = getEnhancedEcommerceData(data, ecommerce);\n  if (eecData !== null && contents.length == 0) {\n    log(\"1b. Enhanced Ecommerce - Data layers detected\");\n    eecData.map(function (ed) {\n      // Form the TikTok Parameter Object\n      var content = {};\n      if (ed.id) content.content_id = ed.id;\n      if (ed.name) content.content_name = ed.name;\n      if (ed.brand) content.brand = ed.brand;\n      if (ed.category) content.content_category = ed.category;\n      if (ed.price) content.price = makeNumber(ed.price);\n      if (ed.quantity) {\n        content.quantity = makeNumber(ed.quantity);\n      } else {\n        content.quantity = 1;\n      }\n      content.content_type = ttContentType || \"product\";\n      contents.push(content);\n      // Calulate the total value shown\n      if (ed.price) {\n        if (!ed.quantity) ed.quantity = 1;\n        value += ed.price * ed.quantity;\n      }\n    });\n  } else if (data.ga_ecomm == \"enhance_ecomm\") {\n    log(\"1b. Enhanced Ecommerce - Unable to detect any ecommerce data layers\");\n  }\n\n  if (data.ecomm_currency)\n    currency = data.ecomm_currency;\n  else if (ecommerce && ecommerce.currencyCode)\n    currency = ecommerce.currencyCode;\n  else if (ecommerce && ecommerce.currency)\n    currency = ecommerce.currency;\n  else if (eventModel && eventModel.currency)\n    currency = eventModel.currency;\n\n  if (ecommerce && ecommerce.value) {\n    value = ecommerce.value;\n  } else if (\n    ecommerce &&\n    ecommerce.purchase &&\n    ecommerce.purchase.actionField &&\n    ecommerce.purchase.actionField.revenue\n  ) {\n    value = ecommerce.purchase.actionField.revenue;\n  } else if (eventModel && eventModel.value) {\n    value = eventModel.value;\n  }\n\n  return {\n    value: value,\n    currency: currency,\n    contents: contents\n  };\n};\n\nconst isHashed = (val) => {\n  return val && val.match(\"^[A-Fa-f0-9]{64}$\") != null;\n};\n\nconst getUserDataFromDataLayer = () => {\n  var userData = {};\n  const email = (userDataFromDataLayer && (userDataFromDataLayer.email_address || userDataFromDataLayer.sha256_email_address)) ||\n    (eventModel && eventModel.user_data && (eventModel.user_data.email_address || eventModel.user_data.sha256_email_address));\n  if (email) {\n    if (isHashed(email)) {\n      userData.sha256_email = email;\n    } else {\n      userData.email = email;\n    }\n  }\n\n  const phone = (userDataFromDataLayer && (userDataFromDataLayer.phone_number || userDataFromDataLayer.sha256_phone_number)) ||\n    (eventModel && eventModel.user_data && (eventModel.user_data.phone_number || eventModel.user_data.sha256_phone_number));\n  if (phone) {\n    if (isHashed(phone)) {\n      userData.sha256_phone_number = phone;\n    } else {\n      userData.phone_number = phone;\n    }\n  }\n\n  if (ttExternalId) {\n    userData.external_id = ttExternalId;\n  }\n\n  return userData;\n};\n\nconst main = () => {\n  // Forming the passed in parameters\n  var parameters = {\n    gtm_version: version + ':' + getConfigHash(data),\n    event_trigger_source: 'GoogleTagManagerClient',\n  };\n  const ttEvent = TTEventMap[data.event] || data.event;\n  // Check if enhance ecomm is enabled.\n  if (data.enhance_ecomm == true) {\n    const ecomData = getEcommerceData(data, ecommerce);\n    parameters.currency = ecomData.currency;\n    parameters.value = ecomData.value;\n    if (ecomData.contents && ecomData.contents.length > 0) {\n      parameters.contents = ecomData.contents;\n    }\n    const order_id = (ecommerce && ecommerce.transaction_id) ||\n      (ecommerce && ecommerce.purchase && ecommerce.purchase.actionField && ecommerce.purchase.actionField.id) ||\n      (eventModel && eventModel.transaction_id) ||\n      ttOrderId ||\n      data.order_id;\n    if (order_id) {\n      parameters.order_id = order_id;\n    }\n  } else {\n    if (data.single_multi_product == \"single\") {\n      // Single Content\n      if (data.content_id) parameters.content_id = data.content_id;\n      if (data.content_type || ttContentType) parameters.content_type = data.content_type || ttContentType;\n      if (data.content_name) parameters.content_name = data.content_name;\n      if (data.price) parameters.price = makeNumber(data.price);\n      if (data.quantity) parameters.quantity = makeNumber(data.quantity);\n      if (data.currency) parameters.currency = data.currency;\n      if (data.value) {\n        parameters.value = makeNumber(data.value);\n      } else {\n        if (data.price && data.quantity) {\n          parameters.value = makeNumber(data.price) * makeNumber(data.quantity);\n        }\n      }\n      if (data.content_category)\n        parameters.content_category = data.content_category;\n      if (data.description) parameters.description = data.description;\n      if (data.query) parameters.query = data.query;\n      if (data.status) parameters.status = data.status;\n      if (data.order_id) parameters.order_id = data.order_id;\n    } else if (data.single_multi_product == \"multiple\") {\n      // Multiple Content\n      if (data.contents) {\n        const parsedContents = JSON.parse(data.contents);\n        if (parsedContents !== undefined) {\n          parameters.contents = parsedContents;\n        } else {\n          parameters.contents = data.contents;\n        }\n      }\n      if (data.currency) parameters.currency = data.currency;\n      if (data.value) parameters.value = makeNumber(data.value);\n      if (data.description) parameters.description = data.description;\n      if (data.query) parameters.query = data.query;\n      if (data.status) parameters.status = data.status;\n      if (data.order_id) parameters.order_id = data.order_id;\n    } else if (data.single_multi_product == \"empty\") {\n      // No Content\n      if (data.currency) parameters.currency = data.currency;\n      if (data.value) parameters.value = makeNumber(data.value);\n      if (data.description) parameters.description = data.description;\n      if (data.query) parameters.query = data.query;\n      if (data.status) parameters.status = data.status;\n      if (data.order_id) parameters.order_id = data.order_id;\n    }\n  }\n  \n\n  const rawCustomerType = ttCustomerType || ga4CustomerType || data.customer_type || data.ecomm_customer_type;\n  if (rawCustomerType) {\n    const customerType = normalizeCustomerType(rawCustomerType);\n    if (customerType) {\n      parameters.customer_type = customerType;\n    } else {\n      log('[WARN] customer_type \"' + makeString(rawCustomerType) +\n          '\" is not a supported value, expected \"new\" or \"returning\". Parameter dropped.');\n    }\n  }\n\n  // Additional Object Properties\n  if (data.custom_properties && data.custom_properties.length > 0) {\n    for (let i = 0; i < data.custom_properties.length; i++) {\n      let objectParam = data.custom_properties[i];\n      if (objectParam.key) {\n        parameters[objectParam.key] = objectParam.value;\n      }\n    }\n  }\n\n  // Advanced Matching and sending TT events\n  var userData = getUserDataFromDataLayer();\n\n  if (data.hash == \"hashed\") {\n    // Send hashed data\n    if (data.sha256_email) userData.sha256_email = data.sha256_email;\n    if (data.sha256_phone)\n      userData.sha256_phone_number = data.sha256_phone;\n    // Note: The key is still \"external_id\"\n    if (data.sha256_external_id)\n      userData.external_id = data.sha256_external_id;\n    log(\"2a. Advanced matching with hashed PII\");\n  } else if (data.hash == \"non-hashed\") {\n    // Send non-hashed data and TikTok Pixel will hash it for you.\n    if (data.email) userData.email = data.email;\n    if (data.phone) userData.phone_number = data.phone;\n    if (data.external_id) userData.external_id = data.external_id;\n    log(\n      \"2b. Advanced matching without hashed data, TikTok Pixel will hash the data for you.\"\n    );\n  }\n\n  if (Object.keys(userData).length > 0) {\n    callInWindow(\"ttq.identify\", userData);\n  }\n\n  log(\n    \"3. Base code found, sending \",\n    ttEvent,\n    \"event with\",\n    parameters,\n    data.event_id\n  );\n\n  if (data.pixel_code) {\n    callInWindow(\"ttq.track\", ttEvent, parameters, {\n      event_id: data.event_id,\n      pixel_code: data.pixel_code\n    });\n  } else {\n    callInWindow(\"ttq.track\", ttEvent, parameters, {\n      event_id: data.event_id\n    });\n  }\n};\n\nconst validate = (data) => {\n  const errors = [];\n  const warnings = [];\n\n  // errors\n  if (!checkExistence(\"ttq\")) {\n    errors.push(\"ttq not found\");\n  }\n\n  // clean up\n  if (data.external_id) {\n    data.external_id = data.external_id.trim();\n  }\n\n  // warnings\n  // 1. Prevent user from passing in SHA256 hash as \"email\" or \"phone\" to avoid double-hashing.\n  // 2. Prevent user from passing in non-hash as \"sha256_email\" or \"sha256_phone\".\n  if (data.email) {\n    if (data.email.indexOf(\"@\") === -1)\n      warnings.push(\"data.email is not an email\");\n    if (looksLikeSHA256(data.email))\n      warnings.push(\"data.email appears to be a SHA256 hash\");\n  }\n  if (data.phone) {\n    if (looksLikeSHA256(data.phone))\n      warnings.push(\"data.phone appears to be a SHA256 hash\");\n  }\n  if (data.sha256_email) {\n    if (!looksLikeSHA256(data.sha256_email))\n      warnings.push(\"data.sha256_email is not a SHA256 hash\");\n  }\n  if (data.sha256_phone) {\n    if (!looksLikeSHA256(data.sha256_phone))\n      warnings.push(\"data.sha256_phone is not a SHA256 hash\");\n  }\n\n  if (TTEventMap[data.event] == undefined && ValidEvents[data.event] === undefined) {\n    warnings.push('data.event \"' + data.event + '\" is not a valid event');\n  }\n\n  if (data.customer_type && normalizeCustomerType(data.customer_type) === undefined) {\n    warnings.push('data.customer_type \"' + makeString(data.customer_type) +\n      '\" is not a supported value, expected \"new\" or \"returning\"; it will not be sent');\n  } \n  \n  if (data.ecomm_customer_type && normalizeCustomerType(data.ecomm_customer_type) === undefined) {\n    warnings.push('data.ecomm_customer_type \"' + makeString(data.ecomm_customer_type) +\n      '\" is not a supported value, expected \"new\" or \"returning\"; it will not be sent');\n  }\n\n  for (const msg of warnings) {\n    log(\"[WARN] \" + msg);\n  }\n  for (const msg of errors) {\n    log(\"[ERROR] \" + msg);\n  }\n  return errors;\n};\n\nconst start = () => {\n  const errors = validate(data);\n  if (errors.length > 0) {\n    data.gtmOnFailure();\n    return;\n  }\n\n  main();\n\n  data.gtmOnSuccess();\n};\n\nstart();\n\n\n___WEB_PERMISSIONS___\n\n[\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"logging\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"environments\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"debug\"\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"access_globals\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"keys\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"ttq\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"ttq.identify\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"ttq.track\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"read_data_layer\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"allowedKeys\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"any\"\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  }\n]\n\n\n___TESTS___\n\nscenarios:\n- name: Basic\n  code: \"const mockData = {\\n  event: 'view_item',\\n  pixel_code: 'my_pixel_code',\\n\\\n    \\  \\n  advance_matching: true,\\n  hash: \\\"non-hashed\\\",\\n  external_id: '   abc\\\n    \\   ',\\n  \\n  single_multi_product: 'single',\\n  content_type: 'product',\\n  content_id:\\\n    \\ 'abc123',\\n};\\nrunCode(mockData);\\n\\nassertThat(Calls['ttq.identify'].length).isStrictlyEqualTo(1);\\n\\\n    assertThat(Calls['ttq.identify'][0].params).isEqualTo({\\n  \\\"external_id\\\": \\\"\\\n    abc\\\"\\n});\\n\\nassertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\\nassertThat(Calls['ttq.track'][0].params.gtm_version).isEqualTo(\\\"\\\n    0_2_03:00\\\");\\nassertThat(Calls['ttq.track'][0].params.content_type).isEqualTo(\\\"\\\n    product\\\");\\nassertThat(Calls['ttq.track'][0].params.content_id).isEqualTo(\\\"\\\n    abc123\\\");\\nassertThat(Calls['ttq.track'][0].params.event_trigger_source).isEqualTo(\\\"\\\n    GoogleTagManagerClient\\\");\\nassertThat(Calls['ttq.track'][0].pixel.pixel_code).isEqualTo(\\\"\\\n    my_pixel_code\\\");\\nassertThat(Calls['ttq.track'][0].eventName).isEqualTo(\\\"ViewContent\\\"\\\n    );\\n\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: MissingPixelCode\n  code: |-\n    const mockData = {\n      event: 'ViewContent',\n    };\n    runCode(mockData);\n\n    assertThat(LogsError.length).isStrictlyEqualTo(0);\n    assertThat(Calls['ttq.track'][0].pixel.pixel_code).isEqualTo(undefined);\n- name: InvalidPII\n  code: \"const mockData = {\\n  event: 'CompletePayment',\\n  pixel_code: 'my_pixel_code',\\n\\\n    \\  \\n  email: 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad',\\n\\\n    \\  phone: 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad',\\n\\\n    \\  sha256_email: 'a@a.com',\\n  sha256_phone: '+11231231234',\\n};\\nrunCode(mockData);\\n\\\n    \\n// Check hashed PII not passed into plain PII fields\\nassertThat(LogsWarn).contains(\\\"\\\n    [WARN] data.email is not an email\\\");\\nassertThat(LogsWarn).contains(\\\"[WARN]\\\n    \\ data.email appears to be a SHA256 hash\\\");\\nassertThat(LogsWarn).contains(\\\"\\\n    [WARN] data.phone appears to be a SHA256 hash\\\");\\n\\n// Check plain PII not passed\\\n    \\ into hashed PII fields\\nassertThat(LogsWarn).contains(\\\"[WARN] data.sha256_email\\\n    \\ is not a SHA256 hash\\\");\\nassertThat(LogsWarn).contains(\\\"[WARN] data.sha256_phone\\\n    \\ is not a SHA256 hash\\\");\\n\\n\"\n- name: InvalidEvent\n  code: |\n    const mockData = {\n      event: 'InvalidEvent',\n      pixel_code: 'my_pixel_code',\n    };\n    runCode(mockData);\n\n    // Check we warn about invalid event name\n    assertThat(LogsWarn).contains('[WARN] data.event \"InvalidEvent\" is not a valid event');\n- name: ValidPIIHashed\n  code: \"const mockData = {\\n  event: 'CompletePayment',\\n  pixel_code: 'my_pixel_code',\\n\\\n    \\  \\n  hash: 'hashed',\\n  sha256_email: 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad',\\n\\\n    \\  sha256_phone: 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad',\\n\\\n    };\\nrunCode(mockData);\\n\\nassertThat(Calls['ttq.identify'].length).isStrictlyEqualTo(1);\\n\\\n    assertThat(Calls['ttq.identify'][0].params).isEqualTo({\\n  \\\"sha256_email\\\": 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad',\\n\\\n    \\  \\\"sha256_phone_number\\\": 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'\\n\\\n    });\\n\"\n- name: ValidPIIPlain\n  code: \"const mockData = {\\n  event: 'CompletePayment',\\n  pixel_code: 'my_pixel_code',\\n\\\n    \\  \\n  hash: 'non-hashed',\\n  email: 'a@a.com',\\n  phone: '+11231231234',\\n};\\n\\\n    runCode(mockData);\\n\\nassertThat(Calls['ttq.identify'].length).isStrictlyEqualTo(1);\\n\\\n    assertThat(Calls['ttq.identify'][0].params).isEqualTo({\\n  \\\"email\\\": 'a@a.com',\\n\\\n    \\  \\\"phone_number\\\": '+11231231234'\\n});\\n\\n\"\n- name: MultipleProducts\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      pixel_code: 'my_pixel_code',\n      single_multi_product: 'multiple',\n      contents: '[{\"content_id\": \"abc123\", \"price\": 1.23}]',\n    };\n    runCode(mockData);\n\n    assertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.contents[0].content_id).isEqualTo(\"abc123\");\n    assertThat(Calls['ttq.track'][0].params.contents[0].price).isEqualTo(1.23);\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: MultipleProductsInvalidContentsJSON\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      event_id: '1234',\n      pixel_code: 'my_pixel_code',\n      single_multi_product: 'multiple',\n      contents: '[{\"content_id\": \"abc123\", \"price\": 1.23}]]]]]',\n    };\n    runCode(mockData);\n\n    assertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\n    // Parsing failure should just forward the event to Pixel.\n    assertThat(Calls['ttq.track'][0].params.contents).isEqualTo('[{\"content_id\": \"abc123\", \"price\": 1.23}]]]]]');\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: SingleProduct\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      pixel_code: 'my_pixel_code',\n      single_multi_product: 'single',\n      content_id: 'abc123',\n      content_type: 'product',\n      content_name: 'tee shirt',\n      price: '12.34',\n      quantity: '2',\n      currency: 'USD',\n      value: '24.68',\n      custom_properties: [\n        {\n          key: 'custom_property_1',\n          value: 1,\n        },\n        {\n          key: 'custom_property_2',\n          value: '2',\n        },\n        {\n          key: '',\n          value: '3',\n        },\n      ],\n    };\n    runCode(mockData);\n\n    assertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.content_id).isEqualTo(\"abc123\");\n    assertThat(Calls['ttq.track'][0].params.content_type).isEqualTo(\"product\");\n    assertThat(Calls['ttq.track'][0].params.content_name).isEqualTo(\"tee shirt\");\n    assertThat(Calls['ttq.track'][0].params.price).isEqualTo(12.34);\n    assertThat(Calls['ttq.track'][0].params.quantity).isEqualTo(2);\n    assertThat(Calls['ttq.track'][0].params.currency).isEqualTo(\"USD\");\n    assertThat(Calls['ttq.track'][0].params.value).isEqualTo(24.68);\n    assertThat(Calls['ttq.track'][0].params.custom_property_1).isEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.custom_property_2).isEqualTo('2');\n    assertThat(Calls['ttq.track'][0].params['']).isUndefined();\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: StandardEcommerce\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      pixel_code: 'my_pixel_code',\n      enhance_ecomm: true,\n      ecommerce: {\n        currency: 'CAD',\n        value: 7.77,\n        items: [\n          {\n              item_id: 'abc123',\n              item_name: 'tee shirt',\n              item_brand: 'mybrand',\n              item_category: \"Apparel\",\n              item_category2: \"Adult\",\n              item_category4: \"Crew\",\n              price: 9.99,\n              discount: 2.22,\n              quantity: 1\n          }\n        ]\n      }\n    };\n\n    runCode(mockData);\n\n    assertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.contents.length).isStrictlyEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.contents[0].content_id).isEqualTo(\"abc123\");\n    assertThat(Calls['ttq.track'][0].params.contents[0].content_type).isEqualTo(\"product\");\n    assertThat(Calls['ttq.track'][0].params.contents[0].content_name).isEqualTo(\"tee shirt\");\n    assertThat(Calls['ttq.track'][0].params.contents[0].content_category).isEqualTo(\"Apparel,Adult,Crew\");\n    assertThat(Calls['ttq.track'][0].params.contents[0].brand).isEqualTo(\"mybrand\");\n    assertThat(Calls['ttq.track'][0].params.contents[0].price).isEqualTo(9.99);\n    assertThat(Calls['ttq.track'][0].params.contents[0].quantity).isEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.currency).isEqualTo(\"CAD\");\n    assertThat(Calls['ttq.track'][0].params.value).isEqualTo(7.77);\n\n    assertApi('gtmOnSuccess').wasCalled();\n- name: EnhancedEcommerce\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      pixel_code: 'my_pixel_code',\n      enhance_ecomm: true,\n      ecomm_currency: 'CNY',\n      ecommerce: {\n        detail: {\n          products: [{\n            name: 'tee shirt',\n            id: 'abc123',\n            price: '9.99',\n            brand: 'mybrand',\n            category: 'apparel',\n            variant: 'blue'\n           }]\n         }\n      }\n    };\n\n    runCode(mockData);\n\n    assertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.contents.length).isStrictlyEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.contents[0].content_id).isEqualTo(\"abc123\");\n    assertThat(Calls['ttq.track'][0].params.contents[0].content_type).isEqualTo(\"product\");\n    assertThat(Calls['ttq.track'][0].params.contents[0].content_name).isEqualTo(\"tee shirt\");\n    assertThat(Calls['ttq.track'][0].params.contents[0].content_category).isEqualTo(\"apparel\");\n    assertThat(Calls['ttq.track'][0].params.contents[0].brand).isEqualTo(\"mybrand\");\n    assertThat(Calls['ttq.track'][0].params.contents[0].price).isEqualTo(9.99);\n    assertThat(Calls['ttq.track'][0].params.contents[0].quantity).isEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.currency).isEqualTo(\"CNY\");\n    assertThat(Calls['ttq.track'][0].params.value).isEqualTo(9.99);\n\n    assertApi('gtmOnSuccess').wasCalled();\n- name: Standard Ecommerce - order_id\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      pixel_code: 'my_pixel_code',\n      enhance_ecomm: true,\n      ecommerce: {\n        transaction_id: 'ORD-GA4-001',\n        currency: 'USD',\n        value: 199.8,\n        items: [\n          {\n            item_id: 'SKU-001',\n            item_name: 'Product A',\n            price: 99.9,\n            quantity: 2,\n          }\n        ]\n      }\n    };\n\n    runCode(mockData);\n\n    assertApi('gtmOnSuccess').wasCalled();\n    assertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.order_id).isEqualTo('ORD-GA4-001');\n    assertThat(Calls['ttq.track'][0].params.value).isEqualTo(199.8);\n    assertThat(Calls['ttq.track'][0].params.currency).isEqualTo('USD');\n    assertThat(Calls['ttq.track'][0].eventName).isEqualTo('CompletePayment');\n- name: Standard Ecommerce - no order_id\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      pixel_code: 'my_pixel_code',\n      enhance_ecomm: true,\n      ecommerce: {\n        currency: 'USD',\n        value: 99.9,\n        items: [\n          {\n            item_id: 'SKU-001',\n            item_name: 'Product A',\n            price: 99.9,\n            quantity: 1,\n          }\n        ]\n      }\n    };\n\n    runCode(mockData);\n\n    assertApi('gtmOnSuccess').wasCalled();\n    assertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.order_id).isUndefined();\n- name: Enhanced Ecommerce - order_id\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      pixel_code: 'my_pixel_code',\n      enhance_ecomm: true,\n      ecommerce: {\n        currencyCode: 'USD',\n        purchase: {\n          actionField: {\n            id: 'ORD-UA-001',\n            revenue: 99.9,\n          },\n          products: [\n            {\n              id: 'SKU-001',\n              name: 'Product A',\n              price: '99.9',\n              quantity: 1,\n            }\n          ]\n        }\n      }\n    };\n\n    runCode(mockData);\n\n    assertApi('gtmOnSuccess').wasCalled();\n    assertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.order_id).isEqualTo('ORD-UA-001');\n- name: SingleProduct - order_id\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      pixel_code: 'my_pixel_code',\n      enhance_ecomm: false,\n      single_multi_product: 'single',\n      content_id: 'SKU-001',\n      content_type: 'product',\n      content_name: 'Product A',\n      price: '99.9',\n      quantity: '1',\n      currency: 'USD',\n      value: '99.9',\n      order_id: 'ORD-CUSTOM-SINGLE',\n    };\n\n    runCode(mockData);\n\n    assertApi('gtmOnSuccess').wasCalled();\n    assertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.order_id).isEqualTo('ORD-CUSTOM-SINGLE');\n    assertThat(Calls['ttq.track'][0].params.content_id).isEqualTo('SKU-001');\n    assertThat(Calls['ttq.track'][0].params.value).isEqualTo(99.9);\n- name: MultipleProducts - order_id\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      pixel_code: 'my_pixel_code',\n      enhance_ecomm: false,\n      single_multi_product: 'multiple',\n      contents: '[{\"content_id\":\"SKU-001\",\"price\":99.9,\"quantity\":1},{\"content_id\":\"SKU-002\",\"price\":49.9,\"quantity\":2}]',\n      currency: 'USD',\n      value: '199.7',\n      order_id: 'ORD-CUSTOM-MULTI',\n    };\n\n    runCode(mockData);\n\n    assertApi('gtmOnSuccess').wasCalled();\n    assertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.order_id).isEqualTo('ORD-CUSTOM-MULTI');\n    assertThat(Calls['ttq.track'][0].params.contents.length).isStrictlyEqualTo(2);\n- name: Template UI - order_id\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      pixel_code: 'my_pixel_code',\n      enhance_ecomm: false,\n      single_multi_product: 'empty',\n      currency: 'USD',\n      value: '99.9',\n      order_id: 'ORD-CUSTOM-EMPTY',\n    };\n\n    runCode(mockData);\n\n    assertApi('gtmOnSuccess').wasCalled();\n    assertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.order_id).isEqualTo('ORD-CUSTOM-EMPTY');\n- name: Standard Ecommerce - customer_type\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      pixel_code: 'my_pixel_code',\n      enhance_ecomm: true,\n      ecommerce: {\n        transaction_id: 'ORD-001',\n        currency: 'USD',\n        value: 99.9,\n        customer_type: 'new',\n        items: [\n          {\n            item_id: 'SKU-001',\n            item_name: 'Product A',\n            price: 99.9,\n            quantity: 1,\n          }\n        ]\n      }\n    };\n\n    runCode(mockData);\n\n    assertApi('gtmOnSuccess').wasCalled();\n    assertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\n    assertThat(Calls['ttq.track'][0].params.customer_type).isEqualTo('new');\n    assertThat(LogsWarn.length).isStrictlyEqualTo(0);\n- name: Enhanced Ecommerce - customer_type\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      pixel_code: 'my_pixel_code',\n      enhance_ecomm: true,\n      ecommerce: {\n        currencyCode: 'USD',\n        customer_type: 'returning',\n        purchase: {\n          actionField: {\n            id: 'ORD-UA-001',\n            revenue: 99.9,\n          },\n          products: [\n            {\n              id: 'SKU-001',\n              price: '99.9',\n              quantity: 1,\n            }\n          ]\n        }\n      }\n    };\n\n    runCode(mockData);\n\n    assertApi('gtmOnSuccess').wasCalled();\n    assertThat(Calls['ttq.track'][0].params.customer_type).isEqualTo('returning');\n    assertThat(Calls['ttq.track'][0].params.order_id).isEqualTo('ORD-UA-001');\n- name: gtag eventModel - customer_type\n  code: |-\n    const mockData = {\n      transaction_id: \"T_12345\",\n        value: 72.05,\n        tax: 3.60,\n        shipping: 5.99,\n        currency: \"USD\",\n        coupon: \"SUMMER_SALE\",\n        customer_type: \"new\",\n        items: [\n         {\n          item_id: \"SKU_12345\",\n          item_name: \"Stan and Friends Tee\"\n         }\n       ]\n    };\n\n    runCode(mockData);\n\n    assertApi('gtmOnSuccess').wasCalled();\n    assertThat(Calls['ttq.track'][0].params.customer_type).isEqualTo('new');\n- name: Top level data layer - customer_type\n  code: |-\n    const mockData = {\n          event: 'CompletePayment',\n          pixel_code: 'my_pixel_code',\n         customer_type: 'new',\n          ecommerce: {\n            currency: 'USD',\n            value: 99.9,\n            items: [\n              {\n                item_id: 'SKU-001',\n                price: 99.9,\n                quantity: 1,\n              }\n            ]\n          }\n        };\n\n        runCode(mockData);\n\n        assertApi('gtmOnSuccess').wasCalled();\n        assertThat(Calls['ttq.track'][0].params.customer_type).isEqualTo('new');\n- name: customer_type is normalized (casing and whitespace)\n  code: |-\n    const mockData = {\n      event: 'CompletePayment',\n      pixel_code: 'my_pixel_code',\n      enhance_ecomm: false,\n      single_multi_product: 'empty',\n      customer_type: '  NEW  ',\n    };\n\n    runCode(mockData);\n\n    assertApi('gtmOnSuccess').wasCalled();\n    assertThat(Calls['ttq.track'][0].params.customer_type).isEqualTo('new');\n    assertThat(LogsWarn.length).isStrictlyEqualTo(0);\n- name: Invalid customer_type from the data layer is dropped\n  code: |-\n    const mockData = {\n          event: 'CompletePayment',\n          pixel_code: 'my_pixel_code',\n          enhance_ecomm: true,\n          ecommerce: {\n            currency: 'USD',\n            value: 99.9,\n            customer_type: 'vip',\n            items: [\n              {\n                item_id: 'SKU-001',\n                price: 99.9,\n                quantity: 1,\n              }\n            ]\n          }\n        };\n\n        runCode(mockData);\n\n        assertApi('gtmOnSuccess').wasCalled();\n        assertThat(Calls['ttq.track'].length).isStrictlyEqualTo(1);\n        assertThat(Calls['ttq.track'][0].params.customer_type).isUndefined();\nsetup: \"const log = require('logToConsole');\\n\\nconst LogsError = [];\\nconst LogsWarn\\\n  \\ = []; \\nconst Calls = {};\\n\\nmock('logToConsole', function() {\\n  if (arguments.length\\\n  \\ > 0 && arguments[0].substring(0, 7) == '[ERROR]') {\\n    LogsError.push(arguments[0]);\\n\\\n  \\  }\\n  if (arguments.length > 0 && arguments[0].substring(0, 6) == '[WARN]') {\\n\\\n  \\    LogsWarn.push(arguments[0]);\\n  }\\n  // Print out logs, as normally as possible\\n\\\n  \\  log(arguments); // Note: bind and call not available\\n});\\n\\nmock('callInWindow',\\\n  \\ function() {\\n  const fnName = arguments[0];\\n  Calls[fnName] = Calls[fnName]\\\n  \\ || [];\\n  const call = {};\\n  call.arguments = arguments;\\n  Calls[fnName].push(call);\\n\\\n  \\  \\n  if (fnName === 'ttq.identify') {\\n    call.params = arguments[1];\\n  } else\\\n  \\ if (fnName === 'ttq.track') {\\n    call.eventName = arguments[1];\\n    call.params\\\n  \\ = arguments[2];\\n    call.pixel = arguments[3];\\n  }\\n});\\n\\nmock('copyFromWindow',\\\n  \\ function(name) {\\n  // Assume base code always exists.\\n  return {};\\n});\\n\\n\\\n  mock('copyFromDataLayer', function(name) {\\n  if (name == \\\"ecommerce\\\") {\\n   \\\n  \\ return mockData.ecommerce;\\n  }\\n  \\n  return undefined;\\n});\"\n\n\n___NOTES___\n\nCreated on 19/08/2022, 17:04:57\n\n\n",
                "galleryReference": {
                    "host": "github.com",
                    "owner": "tiktok",
                    "repository": "gtm-template-pixel",
                    "version": "4ec12fa4f950ef1f829255007287ad26d40132a6",
                    "signature": "50cbfb75f71b7527977e02eff867e564a69edba2db3fe8a9097b1ae252730680",
                    "galleryTemplateId": "MRQN8"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "templateId": "78",
                "name": "Microsoft Clarity - Official",
                "fingerprint": "1788192218089",
                "templateData": "___TERMS_OF_SERVICE___\n\nBy creating or modifying this file you agree to Google Tag Manager's Community\nTemplate Gallery Developer Terms of Service available at\nhttps://developers.google.com/tag-manager/gallery-tos (or such other URL as\nGoogle may provide), as modified from time to time.\n\n\n___INFO___\n\n{\n  \"type\": \"TAG\",\n  \"id\": \"cvt_MQDKZ\",\n  \"version\": 1,\n  \"displayName\": \"Microsoft Clarity - Official\",\n  \"categories\": [\n    \"ANALYTICS\",\n    \"HEAT_MAP\",\n    \"SESSION_RECORDING\"\n  ],\n  \"brand\": {\n    \"id\": \"github.com_microsoft\",\n    \"displayName\": \"microsoft\",\n    \"thumbnail\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACABAMAAAAxEHz4AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAElBMVEUAAADyUCJ/ugAApO//uQD///8951e2AAAAAXRSTlMAQObYZgAAAAFiS0dEBfhv6ccAAAAHdElNRQfkCgUWITsZUDiiAAAAS0lEQVRo3u3MQQ3AIAAEsMuCAGZhCkiwgH9NOLj3Hq2A5q1m8nxVBAKBQCAQCAQCgUAgEPSAP9jVSsapBAKBQCAQCAQCgUAgEPTgAruK0CdlWNSzAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTEwLTA1VDIyOjMzOjU5KzAwOjAwPT1n8QAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0xMC0wNVQyMjozMzo1OSswMDowMExg300AAAAASUVORK5CYII\\u003d\"\n  },\n  \"description\": \"Clarity is a user behavior analytics tool, which helps you understand how users are interacting with your website. Supported features include:\\nSession Recordings\\nHeatmaps\\nML Insights\",\n  \"containerContexts\": [\n    \"WEB\"\n  ]\n}\n\n\n___TEMPLATE_PARAMETERS___\n\n[\n  {\n    \"type\": \"TEXT\",\n    \"name\": \"projectId\",\n    \"displayName\": \"Clarity Project Id\",\n    \"simpleValueType\": true,\n    \"help\": \"Copy your clarity project Id here. You can find it in the project Url from the browser. Example: https://clarity.microsoft.com/projects/view/\\\"projectId\\\"/\",\n    \"valueValidators\": [\n      {\n        \"type\": \"NON_EMPTY\",\n        \"errorMessage\": \"You must provide a clarity project Id\"\n      },\n      {\n        \"type\": \"REGEX\",\n        \"args\": [\n          \"[0-9a-z]+\"\n        ],\n        \"errorMessage\": \"Incorrect project Id. You can find it in the project Url from the browser. Example: https://clarity.microsoft.com/projects/view/\\\"projectId\\\"/\"\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"advanced\",\n    \"displayName\": \"Custom Options\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"subParams\": [\n      {\n        \"type\": \"GROUP\",\n        \"name\": \"custom_id\",\n        \"displayName\": \"Custom Identifiers\",\n        \"groupStyle\": \"NO_ZIPPY\",\n        \"subParams\": [\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"userId\",\n            \"displayName\": \"Custom Id\",\n            \"simpleValueType\": true,\n            \"help\": \"Custom id such as an email, can help you view the user journey across browsers and devices\",\n            \"valueHint\": \"user@domain.com\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"sessionId\",\n            \"displayName\": \"Session Id\",\n            \"simpleValueType\": true,\n            \"help\": \"Custom session id to help you filter for this session later\",\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"userId\",\n                \"paramValue\": \"\",\n                \"type\": \"PRESENT\"\n              }\n            ],\n            \"valueHint\": \"custom-session-id\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"pageId\",\n            \"displayName\": \"Page Id\",\n            \"simpleValueType\": true,\n            \"help\": \"Custom page id to help you filter for this page later\",\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"userId\",\n                \"paramValue\": \"\",\n                \"type\": \"PRESENT\"\n              }\n            ],\n            \"valueHint\": \"custom-page-id\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"friendlyName\",\n            \"displayName\": \"Friendly Name\",\n            \"simpleValueType\": true,\n            \"help\": \"Friendly name for the user\",\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"userId\",\n                \"paramValue\": \"\",\n                \"type\": \"PRESENT\"\n              }\n            ],\n            \"valueHint\": \"Mona\"\n          }\n        ],\n        \"help\": \"Custom Identifiers are informational data values about site visitors\",\n        \"enablingConditions\": []\n      },\n      {\n        \"type\": \"SIMPLE_TABLE\",\n        \"name\": \"custom_tag\",\n        \"displayName\": \"Custom Tag\",\n        \"simpleTableColumns\": [\n          {\n            \"defaultValue\": \"\",\n            \"displayName\": \"Key\",\n            \"name\": \"key\",\n            \"type\": \"TEXT\",\n            \"valueHint\": \"\"\n          },\n          {\n            \"defaultValue\": \"\",\n            \"displayName\": \"Value\",\n            \"name\": \"value\",\n            \"type\": \"TEXT\",\n            \"valueValidators\": [\n              {\n                \"type\": \"STRING_LENGTH\",\n                \"args\": [\n                  1,\n                  255\n                ]\n              }\n            ],\n            \"valueHint\": \"\"\n          }\n        ],\n        \"help\": \"Custom tags are customizable filters that allow you to analyze recordings and heatmaps in different directions\",\n        \"valueValidators\": []\n      }\n    ]\n  }\n]\n\n\n___SANDBOXED_JS_FOR_WEB_TEMPLATE___\n\n// Require the necessary APIs\nconst injectScript = require('injectScript');\nconst queryPermission = require('queryPermission');\nconst createArgumentsQueue = require('createArgumentsQueue');\nconst encodeUri = require('encodeUri');\nconst addEventCallback = require('addEventCallback');\nconst copyFromDataLayer = require('copyFromDataLayer');\n//const log = require('logToConsole');\n\n// Create clarity const\nconst clarity = createArgumentsQueue('clarity', 'clarity.q');\n\nconst customTags = data.custom_tag || [];\n\n// Reconstruct customer clarity script URL\nconst url = \"https://www.clarity.ms/tag/\"+encodeUri(data.projectId)+\"?ref=gtm\";\n\nconst runClarityIdentify = () => {\n  const friendlyName = data.friendlyName || '';\n  const sessionId = data.sessionId || '';\n  const pageId = data.pageId || '';\n  if (data.userId) {\n    clarity(\n      \"identify\",\n      data.userId,\n      sessionId,\n      pageId,\n      friendlyName\n    );\n  }\n};\n\n// Handle Success\nconst onCustomerSuccess = () => {\n  data.gtmOnSuccess();\n};\n\n// Handle Failure\nconst onCustomerFailure = () => {\n  data.gtmOnFailure();\n};\n\n\n// If the URL input by the user matches the permissions set for the template,\n// inject the script with the onSuccess and onFailure methods as callbacks.\nif (queryPermission('inject_script', \"https://www.clarity.ms\")) {\n  for (var i = 0; i < customTags.length; i++) {\n    if (customTags[i].value) {\n      clarity('set', customTags[i].key, customTags[i].value);\n    }\n  }\n\n  if (data.userId) {\n    runClarityIdentify();\n  } else {\n    // Otherwise wait for Window Loaded event\n    addEventCallback(function(containerId, eventData) {\n      const event = copyFromDataLayer('event');\n      if (event === 'gtm.load') {\n        runClarityIdentify();\n      }\n    });\n  }\n \n  injectScript(url, onCustomerSuccess, onCustomerFailure);\n  \n} else {\n  data.gtmOnFailure();\n}\n\n\n___WEB_PERMISSIONS___\n\n[\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"inject_script\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"urls\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 1,\n                \"string\": \"https://www.clarity.ms/*\"\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"access_globals\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"keys\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"clarity\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"clarity.q\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"read_event_metadata\",\n        \"versionId\": \"1\"\n      },\n      \"param\": []\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"read_data_layer\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"allowedKeys\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"specific\"\n          }\n        },\n        {\n          \"key\": \"keyPatterns\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 1,\n                \"string\": \"event\"\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  }\n]\n\n\n___TESTS___\n\nscenarios: []\n\n\n___NOTES___\n\nCreated on 2/2/2021, 12:41:15 PM\n\n\n",
                "galleryReference": {
                    "host": "github.com",
                    "owner": "microsoft",
                    "repository": "clarity-gtm-template",
                    "version": "a4013e4a6b1ae135d6acd80cdb7dd803d849dc54",
                    "signature": "005e0c847e851bd85c268486f2194c0774337b596daeeaae5c10020c059a9472",
                    "galleryTemplateId": "MQDKZ"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "templateId": "95",
                "name": "Event Id",
                "fingerprint": "1788192218098",
                "templateData": "___TERMS_OF_SERVICE___\n\nBy creating or modifying this file you agree to Google Tag Manager's Community\nTemplate Gallery Developer Terms of Service available at\nhttps://developers.google.com/tag-manager/gallery-tos (or such other URL as\nGoogle may provide), as modified from time to time.\n\n\n___INFO___\n\n{\n  \"type\": \"MACRO\",\n  \"id\": \"cvt_K8G73\",\n  \"version\": 1,\n  \"displayName\": \"Event Id\",\n  \"description\": \"generates a unique event id for all gtm / dataLayer events - based on a random id for every page.\",\n  \"containerContexts\": [\n    \"WEB\"\n  ],\n  \"brand\": {\n    \"displayName\": \"mbaersch\",\n    \"id\": \"github.com_mbaersch\"\n  }\n}\n\n\n___TEMPLATE_PARAMETERS___\n\n[\n  {\n    \"type\": \"CHECKBOX\",\n    \"name\": \"useCustomEventCounter\",\n    \"checkboxText\": \"Custom Event Counter\",\n    \"simpleValueType\": true,\n    \"help\": \"The result will use gtm.uniqueEventId from the dataLayer to differentiate separate events on the same page. If that does not fit your triggering plan, you can use different event id variables for every event type and add your own counter. \\n\\nExample: separate event id for a purchase using the transaction id as unique counter.\"\n  },\n  {\n    \"type\": \"TEXT\",\n    \"name\": \"customEventCounter\",\n    \"displayName\": \"\",\n    \"simpleValueType\": true,\n    \"valueValidators\": [\n      {\n        \"type\": \"NON_EMPTY\"\n      }\n    ],\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"useCustomEventCounter\",\n        \"paramValue\": true,\n        \"type\": \"EQUALS\"\n      }\n    ]\n  }\n]\n\n\n___SANDBOXED_JS_FOR_WEB_TEMPLATE___\n\nconst copyFromDataLayer = require('copyFromDataLayer');\nconst setInWindow = require('setInWindow');\nconst copyFromWindow = require('copyFromWindow');\nconst getTimestampMillis = require('getTimestampMillis');\nconst generateRandom = require('generateRandom');\nvar eventId = copyFromWindow('_randomPageId');\nif (!eventId) {\n  eventId = getTimestampMillis() + '.' + generateRandom(100000, 999999);\n  setInWindow('_randomPageId', eventId, false);\n}\n\nvar uniqueEventCounter = (data.useCustomEventCounter === true) ? data.customEventCounter : copyFromDataLayer('gtm.uniqueEventId') || '0';\n\nreturn eventId + \".\" + uniqueEventCounter;\n\n\n___WEB_PERMISSIONS___\n\n[\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"access_globals\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"keys\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"_randomPageId\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"read_data_layer\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"keyPatterns\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 1,\n                \"string\": \"gtm.uniqueEventId\"\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  }\n]\n\n\n___TESTS___\n\nscenarios: []\n\n\n___NOTES___\n\nCreated on 22.4.2022, 10:03:29\n\n\n",
                "galleryReference": {
                    "host": "github.com",
                    "owner": "mbaersch",
                    "repository": "event-id",
                    "version": "1b513f75db715689cc7da724c495c311d29b3354",
                    "signature": "41b8cdb9211ea4de0814d836cd4c13498fced3f14f0e3729595f392fac2ac4f5",
                    "galleryTemplateId": "K8G73"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "templateId": "100",
                "name": "Universal Conversions Variable",
                "fingerprint": "1788192218102",
                "templateData": "___TERMS_OF_SERVICE___\n\nBy creating or modifying this file you agree to Google Tag Manager's Community\nTemplate Gallery Developer Terms of Service available at\nhttps://developers.google.com/tag-manager/gallery-tos (or such other URL as\nGoogle may provide), as modified from time to time.\n\n\n___INFO___\n\n{\n  \"type\": \"MACRO\",\n  \"id\": \"cvt_WF8HR\",\n  \"version\": 1,\n  \"displayName\": \"Universal Conversions Variable\",\n  \"categories\": [\n    \"UTILITY\",\n    \"CONVERSIONS\",\n    \"REMARKETING\"\n  ],\n  \"description\": \"Maps and converts an input array of products to the supported platforms expected schema. By stape.io.\",\n  \"containerContexts\": [\n    \"WEB\"\n  ],\n  \"brand\": {\n    \"displayName\": \"stape-io\",\n    \"id\": \"github.com_stape-io\"\n  }\n}\n\n\n___TEMPLATE_PARAMETERS___\n\n[\n  {\n    \"type\": \"SELECT\",\n    \"name\": \"platform\",\n    \"displayName\": \"Platform\",\n    \"macrosInSelect\": false,\n    \"selectItems\": [\n      {\n        \"value\": \"meta\",\n        \"displayValue\": \"Meta Pixel/CAPI\"\n      },\n      {\n        \"value\": \"ga4\",\n        \"displayValue\": \"Google Analytics 4\"\n      },\n      {\n        \"value\": \"tiktok\",\n        \"displayValue\": \"TikTok CAPI\"\n      },\n      {\n        \"value\": \"twitter\",\n        \"displayValue\": \"Twitter CAPI\"\n      },\n      {\n        \"value\": \"microsoft\",\n        \"displayValue\": \"Microsoft Ads\"\n      },\n      {\n        \"value\": \"klaviyo\",\n        \"displayValue\": \"Klaviyo\"\n      },\n      {\n        \"value\": \"snap\",\n        \"displayValue\": \"Snapchat\"\n      },\n      {\n        \"value\": \"gAdsOff\",\n        \"displayValue\": \"Google Ads Offline\"\n      },\n      {\n        \"value\": \"pinterest\",\n        \"displayValue\": \"Pinterest\"\n      },\n      {\n        \"value\": \"rakuten\",\n        \"displayValue\": \"Rakuten\"\n      },\n      {\n        \"value\": \"criteo\",\n        \"displayValue\": \"Criteo\"\n      },\n      {\n        \"value\": \"reddit\",\n        \"displayValue\": \"Reddit\"\n      },\n      {\n        \"value\": \"openai\",\n        \"displayValue\": \"OpenAI\"\n      }\n    ],\n    \"simpleValueType\": true,\n    \"help\": \"Choose which platform to generate parameter\"\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"returnParametersGroup\",\n    \"displayName\": \"\",\n    \"groupStyle\": \"NO_ZIPPY\",\n    \"subParams\": [\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"meta_task\",\n        \"displayName\": \"What to return\",\n        \"radioItems\": [\n          {\n            \"value\": \"contents\",\n            \"displayValue\": \"contents [ {} ]\"\n          },\n          {\n            \"value\": \"ids\",\n            \"displayValue\": \"content_ids [ ]\"\n          },\n          {\n            \"value\": \"name\",\n            \"displayValue\": \"content_name \\u0027 \\u0027\",\n            \"help\": \"will only return value if there is one object in product array, since content_name parameter is applicable only to single product (type) events\"\n          },\n          {\n            \"value\": \"value\",\n            \"displayValue\": \"value\",\n            \"help\": \"use wisely, value will be calculated based on product prices and will not account for discounts. not recommended for purchase events\"\n          },\n          {\n            \"value\": \"numitems\",\n            \"displayValue\": \"num_items\",\n            \"subParams\": []\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"meta\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"ga4_task\",\n        \"displayName\": \"What to return\",\n        \"radioItems\": [\n          {\n            \"value\": \"value\",\n            \"displayValue\": \"value\",\n            \"help\": \"use wisely, value will be calculated based on product prices and will not account for discounts. not recommended for purchase events\"\n          },\n          {\n            \"value\": \"items\",\n            \"displayValue\": \"items [ { } ]\",\n            \"help\": \"\"\n          },\n          {\n            \"value\": \"ids\",\n            \"displayValue\": \"ecomm_prodid\",\n            \"help\": \"for Ads Remarketing\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"ga4\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"rakuten_task\",\n        \"displayName\": \"What to return\",\n        \"radioItems\": [\n          {\n            \"value\": \"items\",\n            \"displayValue\": \"line_items\",\n            \"help\": \"\",\n            \"subParams\": []\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"rakuten\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"gAdsOff_task\",\n        \"displayName\": \"What to return\",\n        \"radioItems\": [\n          {\n            \"value\": \"value\",\n            \"displayValue\": \"value\",\n            \"help\": \"use wisely, value will be calculated based on product prices and will not account for discounts. not recommended for purchase events\"\n          },\n          {\n            \"value\": \"items\",\n            \"displayValue\": \"items [ { } ]\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"gAdsOff\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"klaviyo_task\",\n        \"displayName\": \"What to return\",\n        \"radioItems\": [\n          {\n            \"value\": \"value\",\n            \"displayValue\": \"value\",\n            \"help\": \"use wisely, value will be calculated based on product prices and will not account for discounts. not recommended for purchase events\"\n          },\n          {\n            \"value\": \"item\",\n            \"displayValue\": \"item\",\n            \"help\": \"for ViewedProduct event\"\n          },\n          {\n            \"value\": \"items\",\n            \"displayValue\": \"items [ { } ]\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"klaviyo\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"microsoft_task\",\n        \"displayName\": \"What to return\",\n        \"radioItems\": [\n          {\n            \"value\": \"value\",\n            \"displayValue\": \"revenue_value\",\n            \"help\": \"use wisely, value will be calculated based on product prices and will not account for discounts. not recommended for purchase events\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"microsoft\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"tiktok_task\",\n        \"displayName\": \"What to return\",\n        \"radioItems\": [\n          {\n            \"value\": \"contents\",\n            \"displayValue\": \"contents [ {} ]\",\n            \"subParams\": [\n              {\n                \"type\": \"SELECT\",\n                \"name\": \"contentType\",\n                \"displayName\": \"content_type parameter\",\n                \"macrosInSelect\": false,\n                \"selectItems\": [\n                  {\n                    \"value\": \"product\",\n                    \"displayValue\": \"product\"\n                  },\n                  {\n                    \"value\": \"product_group\",\n                    \"displayValue\": \"product_group\"\n                  }\n                ],\n                \"simpleValueType\": true,\n                \"help\": \"choose either product or product_group as is required by TikTok events API\",\n                \"defaultValue\": \"product\",\n                \"enablingConditions\": []\n              }\n            ]\n          },\n          {\n            \"value\": \"name\",\n            \"displayValue\": \"content_name \\u0027 \\u0027\",\n            \"help\": \"will only return value if there is one object in product array, since content_name parameter is applicable only to single product (type) events\"\n          },\n          {\n            \"value\": \"value\",\n            \"displayValue\": \"value\",\n            \"help\": \"use wisely, value will be calculated based on product prices and will not account for discounts. not recommended for purchase events\"\n          },\n          {\n            \"value\": \"numitems\",\n            \"displayValue\": \"num_items\",\n            \"subParams\": []\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"tiktok\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"twitter_task\",\n        \"displayName\": \"What to return\",\n        \"radioItems\": [\n          {\n            \"value\": \"contents\",\n            \"displayValue\": \"contents [ { } ]\"\n          },\n          {\n            \"value\": \"value\",\n            \"displayValue\": \"value\",\n            \"subParams\": [],\n            \"help\": \"use wisely, value will be calculated based on product prices and will not account for discounts. not recommended for purchase events\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"twitter\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"criteo_task\",\n        \"displayName\": \"What to return\",\n        \"radioItems\": [\n          {\n            \"value\": \"items\",\n            \"displayValue\": \"items [ { } ]\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"criteo\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"pinterest_task\",\n        \"displayName\": \"What to return\",\n        \"radioItems\": [\n          {\n            \"value\": \"items\",\n            \"displayValue\": \"line_items [ { } ]\"\n          },\n          {\n            \"value\": \"value\",\n            \"displayValue\": \"value\",\n            \"subParams\": [],\n            \"help\": \"use wisely, value will be calculated based on product prices and will not account for discounts. not recommended for purchase events\"\n          },\n          {\n            \"value\": \"ids\",\n            \"displayValue\": \"content_ids [ ]\"\n          },\n          {\n            \"value\": \"contents\",\n            \"displayValue\": \"contents [ { } ]\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"pinterest\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"snap_task\",\n        \"displayName\": \"What to return\",\n        \"radioItems\": [\n          {\n            \"value\": \"value\",\n            \"displayValue\": \"price\",\n            \"help\": \"use wisely, value will be calculated based on product prices and will not account for discounts. not recommended for purchase events\"\n          },\n          {\n            \"value\": \"ids\",\n            \"displayValue\": \"item_ids [ ]\"\n          },\n          {\n            \"value\": \"numitems\",\n            \"displayValue\": \"number_items\",\n            \"subParams\": []\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"snap\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"reddit_task\",\n        \"displayName\": \"What to return\",\n        \"radioItems\": [\n          {\n            \"value\": \"value\",\n            \"displayValue\": \"value\",\n            \"help\": \"use wisely, value will be calculated based on product prices and will not account for discounts. not recommended for purchase events\"\n          },\n          {\n            \"value\": \"numitems\",\n            \"displayValue\": \"itemCount\",\n            \"subParams\": []\n          },\n          {\n            \"value\": \"items\",\n            \"displayValue\": \"products [ { } ]\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"reddit\",\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"help\": \"As described in the \\u003ca href\\u003d\\\"https://business.reddithelp.com/s/article/manual-conversion-events-with-the-reddit-pixel\\\"\\u003eofficial documentation\\u003c/a\\u003e.\"\n      },\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"openai_task\",\n        \"displayName\": \"What to return\",\n        \"radioItems\": [\n          {\n            \"value\": \"contents\",\n            \"displayValue\": \"contents [ { } ]\",\n            \"help\": \"Returns a list of product objects as described in \\u003ca href\\u003d\\\"https://developers.openai.com/ads/supported-events#contents\\\"\\u003e official documentation\\u003c/a\\u003e as of June 2026.\",\n            \"subParams\": [\n              {\n                \"type\": \"SELECT\",\n                \"name\": \"contentTypeOpenAI\",\n                \"displayName\": \"content_type parameter\",\n                \"macrosInSelect\": false,\n                \"selectItems\": [\n                  {\n                    \"value\": \"product\",\n                    \"displayValue\": \"product\"\n                  },\n                  {\n                    \"value\": \"plan\",\n                    \"displayValue\": \"plan\"\n                  },\n                  {\n                    \"value\": \"page\",\n                    \"displayValue\": \"page\"\n                  }\n                ],\n                \"simpleValueType\": true,\n                \"help\": \"Choose either \\u003cb\\u003eproduct\\u003c/b\\u003e, \\u003cb\\u003eplan\\u003c/b\\u003e or \\u003cb\\u003epage\\u003c/b\\u003e  as required.\",\n                \"defaultValue\": \"product\",\n                \"enablingConditions\": [\n                  {\n                    \"paramName\": \"platform\",\n                    \"paramValue\": \"openai\",\n                    \"type\": \"EQUALS\"\n                  }\n                ],\n                \"valueValidators\": [\n                  {\n                    \"type\": \"NON_EMPTY\"\n                  }\n                ]\n              }\n            ]\n          },\n          {\n            \"value\": \"value\",\n            \"displayValue\": \"amount\",\n            \"subParams\": [],\n            \"help\": \"Returns the total value amount as described in \\u003ca href\\u003d\\\"https://developers.openai.com/ads/supported-events#contents\\\"\\u003e official documentation\\u003c/a\\u003e as of June 2026.\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"openai\",\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"help\": \"As described in the \\u003ca href\\u003d\\\"https://developers.openai.com/ads/supported-events\\\"\\u003eofficial documentation\\u003c/a\\u003e.\"\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"arrayGroup\",\n    \"displayName\": \"Input Array\",\n    \"groupStyle\": \"ZIPPY_OPEN\",\n    \"subParams\": [\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"orderItems\",\n        \"displayName\": \"Array of Objects\",\n        \"simpleValueType\": true,\n        \"help\": \"[ {} ] any structured array of item objects\",\n        \"valueValidators\": [\n          {\n            \"type\": \"NON_EMPTY\"\n          }\n        ]\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"keyGroup\",\n    \"displayName\": \"Input Array Keys\",\n    \"groupStyle\": \"ZIPPY_OPEN\",\n    \"subParams\": [\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"keyId\",\n        \"displayName\": \"Product ID/SKU Key\",\n        \"simpleValueType\": true,\n        \"valueValidators\": [\n          {\n            \"type\": \"NON_EMPTY\"\n          }\n        ],\n        \"valueHint\": \"item_id\"\n      },\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"useAdditionalKeyId\",\n        \"checkboxText\": \"Use additional Product ID/SKU Key Source\",\n        \"simpleValueType\": true,\n        \"subParams\": [\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"keyIdAdditional\",\n            \"displayName\": \"Additional Product ID/SKU Key\",\n            \"simpleValueType\": true,\n            \"valueValidators\": [\n              {\n                \"type\": \"NON_EMPTY\"\n              }\n            ],\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"useAdditionalKeyId\",\n                \"paramValue\": true,\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"valueHint\": \"productId\"\n          }\n        ],\n        \"help\": \"When enabled, the variable first checks this value as the source for the Product ID/SKU Key. If not found, it falls back to the main Product ID/SKU Key specified above.\"\n      },\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"formatIdInShopifyFormat\",\n        \"checkboxText\": \"Format Product ID in Shopify Product Feed format\",\n        \"simpleValueType\": true,\n        \"help\": \"When enabled, the Product ID will be formatted as:\\n\\u003cbr/\\u003e\\n\\u003ci\\u003eshopify_{Market Code}_{Product ID/SKU}_{Product Variant}\\u003c/i\\u003e\\n\\u003cbr/\\u003e\\u003cbr/\\u003e\\nIt only formats the value if both Product ID/SKU and Product Variant are found. Otherwise, it defaults to Product ID/SKU.\",\n        \"subParams\": [\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"shopifyKeyVariant\",\n            \"displayName\": \"Product Variant ID Key\",\n            \"simpleValueType\": true,\n            \"valueValidators\": [\n              {\n                \"type\": \"NON_EMPTY\"\n              }\n            ],\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"formatIdInShopifyFormat\",\n                \"paramValue\": true,\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"valueHint\": \"variant_id\"\n          },\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"shopifyMarketCode\",\n            \"displayName\": \"Shopify Market Code\",\n            \"simpleValueType\": true,\n            \"valueHint\": \"US\",\n            \"help\": \"ISO Market Code (for Custom Shopify) e.g., BR, GB, US. Or ZZ if using the new Merchant API.\",\n            \"enablingConditions\": [\n              {\n                \"paramName\": \"formatIdInShopifyFormat\",\n                \"paramValue\": true,\n                \"type\": \"EQUALS\"\n              }\n            ],\n            \"valueValidators\": [\n              {\n                \"type\": \"NON_EMPTY\"\n              }\n            ]\n          }\n        ]\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"keyNm\",\n        \"displayName\": \"Product Name Key\",\n        \"simpleValueType\": true,\n        \"valueValidators\": [\n          {\n            \"type\": \"NON_EMPTY\"\n          }\n        ],\n        \"valueHint\": \"item_name\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"keyPr\",\n        \"displayName\": \"Product Price Key\",\n        \"simpleValueType\": true,\n        \"valueValidators\": [\n          {\n            \"type\": \"NON_EMPTY\"\n          }\n        ],\n        \"valueHint\": \"price\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"keyQt\",\n        \"displayName\": \"Product Quantity Key\",\n        \"simpleValueType\": true,\n        \"valueValidators\": [\n          {\n            \"type\": \"NON_EMPTY\"\n          }\n        ],\n        \"valueHint\": \"quantity\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"keyCat\",\n        \"displayName\": \"Product Category Key\",\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"ga4\",\n            \"type\": \"EQUALS\"\n          },\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"klaviyo\",\n            \"type\": \"EQUALS\"\n          },\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"twitter\",\n            \"type\": \"EQUALS\"\n          },\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"reddit\",\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"valueHint\": \"category\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"keyImg\",\n        \"displayName\": \"Product Image URL Key\",\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"klaviyo\",\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"valueHint\": \"image_url\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"keyCurrency\",\n        \"displayName\": \"Currency\",\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"openai\",\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"help\": \"The key for the product price currency within the product object or within the dataLayer event.\",\n        \"valueValidators\": [\n          {\n            \"type\": \"NON_EMPTY\"\n          }\n        ],\n        \"valueHint\": \"currency\"\n      },\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"buildCatTree\",\n        \"checkboxText\": \"Build Category Tree?\",\n        \"simpleValueType\": true,\n        \"help\": \"If your items have multiple categories, create a tree in \\u0027cat1 \\u003e cat2 \\u003e cat3\\u0027 string format.\",\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"platform\",\n            \"paramValue\": \"rakuten\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"keyCatList\",\n        \"displayName\": \"Category parameter keys\",\n        \"simpleValueType\": true,\n        \"help\": \"Comma-separated in order of appearance in tree, such as: \\u0027cat_key,mykey,custom_var_7\\u0027\",\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"buildCatTree\",\n            \"paramValue\": true,\n            \"type\": \"EQUALS\"\n          }\n        ]\n      }\n    ],\n    \"help\": \"keys for corresponding parameters within input array\"\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"rakDiscountGroup\",\n    \"displayName\": \"Discount Configuration\",\n    \"groupStyle\": \"ZIPPY_OPEN\",\n    \"subParams\": [\n      {\n        \"type\": \"SELECT\",\n        \"name\": \"discConfig\",\n        \"displayName\": \"Choose discount configuration method\",\n        \"macrosInSelect\": false,\n        \"selectItems\": [\n          {\n            \"value\": \"item_level\",\n            \"displayValue\": \"From item-level\"\n          },\n          {\n            \"value\": \"order_level\",\n            \"displayValue\": \"From order-level\"\n          },\n          {\n            \"value\": \"none\",\n            \"displayValue\": \"None\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"defaultValue\": \"none\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"keyDiscItemLevel\",\n        \"displayName\": \"Parameter key for item-level discount\",\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"discConfig\",\n            \"paramValue\": \"item_level\",\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"help\": \"Discount parameter key for input array.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"discOrderLevel\",\n        \"displayName\": \"Order-level discount amount\",\n        \"simpleValueType\": true,\n        \"help\": \"Order-level discount value.\",\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"discConfig\",\n            \"paramValue\": \"order_level\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      }\n    ],\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"platform\",\n        \"paramValue\": \"rakuten\",\n        \"type\": \"EQUALS\"\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"rakTaxGroup\",\n    \"displayName\": \"Tax Configuration\",\n    \"groupStyle\": \"ZIPPY_OPEN\",\n    \"subParams\": [\n      {\n        \"type\": \"SELECT\",\n        \"name\": \"taxPriceConfig\",\n        \"displayName\": \"Item price tax application\",\n        \"macrosInSelect\": false,\n        \"selectItems\": [\n          {\n            \"value\": \"priceTaxless\",\n            \"displayValue\": \"Item price is taxless\"\n          },\n          {\n            \"value\": \"priceDeduct\",\n            \"displayValue\": \"Item price needs tax deduction\"\n          }\n        ],\n        \"simpleValueType\": true\n      },\n      {\n        \"type\": \"SELECT\",\n        \"name\": \"taxDiscountConfig\",\n        \"displayName\": \"Discount tax application\",\n        \"macrosInSelect\": false,\n        \"selectItems\": [\n          {\n            \"value\": \"discTaxless\",\n            \"displayValue\": \"Discount is taxless\"\n          },\n          {\n            \"value\": \"discDeduct\",\n            \"displayValue\": \"Discount needs tax deduction\"\n          }\n        ],\n        \"simpleValueType\": true\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"taxDeductPercent\",\n        \"displayName\": \"Tax %\",\n        \"simpleValueType\": true,\n        \"help\": \"Just number, no % symbol.\",\n        \"valueValidators\": [],\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"taxPriceConfig\",\n            \"paramValue\": \"priceDeduct\",\n            \"type\": \"EQUALS\"\n          },\n          {\n            \"paramName\": \"taxDiscountConfig\",\n            \"paramValue\": \"discDeduct\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      }\n    ],\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"platform\",\n        \"paramValue\": \"rakuten\",\n        \"type\": \"EQUALS\"\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"customParamsGroup\",\n    \"displayName\": \"Additional/Optional Parameters\",\n    \"groupStyle\": \"ZIPPY_OPEN\",\n    \"subParams\": [\n      {\n        \"type\": \"SIMPLE_TABLE\",\n        \"name\": \"customParams\",\n        \"simpleTableColumns\": [\n          {\n            \"defaultValue\": \"\",\n            \"displayName\": \"Custom parameter key in your array\",\n            \"name\": \"cusKey\",\n            \"type\": \"TEXT\"\n          },\n          {\n            \"defaultValue\": \"\",\n            \"displayName\": \"Custom parameter name to return\",\n            \"name\": \"cusName\",\n            \"type\": \"TEXT\"\n          }\n        ],\n        \"newRowButtonText\": \"Add Custom Parameter\",\n        \"alwaysInSummary\": false\n      }\n    ],\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"platform\",\n        \"paramValue\": \"ga4\",\n        \"type\": \"EQUALS\"\n      },\n      {\n        \"paramName\": \"platform\",\n        \"paramValue\": \"klaviyo\",\n        \"type\": \"EQUALS\"\n      },\n      {\n        \"paramName\": \"platform\",\n        \"paramValue\": \"rakuten\",\n        \"type\": \"EQUALS\"\n      }\n    ]\n  }\n]\n\n\n___SANDBOXED_JS_FOR_WEB_TEMPLATE___\n\nconst copyFromDataLayer = require('copyFromDataLayer');\nconst makeInteger = require('makeInteger');\nconst makeNumber = require('makeNumber');\nconst makeString = require('makeString');\nconst makeTableMap = require('makeTableMap');\nconst getType = require('getType');\nconst Math = require('Math');\nconst Object = require('Object');\n\n/*==============================================================================\n==============================================================================*/\n\nconst keyId = data.keyId;\nconst keyPr = data.keyPr;\nconst keyNm = data.keyNm;\nconst keyQt = data.keyQt;\nconst keyCat = data.keyCat;\nconst keyImg = data.keyImg;\nconst taxDeductPercent = toFixed2(makeNumber(data.taxDeductPercent));\nconst keyDisc = data.keyDiscItemLevel;\nconst customParamMap = data.customParams\n  ? makeTableMap(data.customParams, 'cusKey', 'cusName')\n  : {};\nconst keyCatList = data.keyCatList ? data.keyCatList.split(',') : [];\nconst inputArray = data.orderItems;\n\nif (getType(inputArray) === 'array' && inputArray.length) return runTask();\nelse return;\n\n/*==============================================================================\n  Vendor related functions\n==============================================================================*/\n\nfunction runTask() {\n  const platform = data.platform;\n  const dataKeys = Object.keys(data);\n  let task;\n\n  for (const key of dataKeys) {\n    if (endsWith(key, '_task') && data[key]) {\n      task = data[key];\n      break;\n    }\n  }\n\n  switch (task) {\n    case 'contents':\n      return getContents(inputArray, platform);\n    case 'ids':\n      return getContentIds(inputArray);\n    case 'name':\n      return getContentName(inputArray);\n    case 'value':\n      return getValue(inputArray);\n    case 'numitems':\n      return getNumItems(inputArray);\n    case 'items':\n      return getItems(inputArray, platform);\n    case 'item':\n      return getItem(inputArray);\n  }\n}\n\nfunction getId(item) {\n  let id = item[keyId];\n\n  if (data.useAdditionalKeyId && data.keyIdAdditional && item[data.keyIdAdditional]) {\n    id = item[data.keyIdAdditional];\n  }\n\n  if (data.formatIdInShopifyFormat && data.shopifyKeyVariant && item[data.shopifyKeyVariant]) {\n    const marketCode = data.shopifyMarketCode || 'ZZ';\n    if (id) id = 'shopify_' + marketCode + '_' + id + '_' + item[data.shopifyKeyVariant];\n  }\n\n  return id;\n}\n\nfunction getNumItems(arr) {\n  const num_items = arr.reduce((acc, curr) => {\n    const quantity = curr[keyQt] ? makeInteger(curr[keyQt]) : 1;\n    return acc + quantity;\n  }, 0);\n  return num_items;\n}\n\nfunction getContentName(arr) {\n  if (arr.length !== 1) return '';\n  return arr[0][keyNm];\n}\n\nfunction getContentIds(arr) {\n  const content_ids = arr.map((item) => getId(item));\n  return content_ids;\n}\n\nfunction getItem(arr) {\n  let cat = [];\n  cat.push(arr[0][keyCat]);\n\n  let item = {\n    ProductID: getId(arr[0]),\n    ProductName: arr[0][keyNm],\n    Price: arr[0][keyPr],\n    ImageURL: arr[0][keyImg],\n    Categories: cat\n  };\n\n  return item;\n}\n\nfunction getValue(arr) {\n  const value = arr.reduce((acc, curr) => {\n    const itemPrice = curr[keyPr] ? makeNumber(curr[keyPr]) : 0;\n    const itemQuantity = curr[keyQt];\n    return acc + (itemQuantity ? makeInteger(itemQuantity) * itemPrice : itemPrice);\n  }, 0);\n\n  const platform = data.platform;\n  if (platform === 'openai') {\n    const keyCurrency = data.keyCurrency || 'currency';\n    const currency = arr[0][keyCurrency] || copyFromDataLayer(keyCurrency);\n    return convertCurrencyValueToMinorUnit(value, currency);\n  }\n\n  return toFixed2(value);\n}\n\nfunction getContents(arr, platform) {\n  let contents = [];\n\n  for (let i = 0; i < arr.length; i++) {\n    let qt = 1;\n    if (arr[i][keyQt]) qt = makeNumber(arr[i][keyQt]);\n\n    if (platform === 'meta') {\n      contents.push({\n        id: getId(arr[i]),\n        quantity: qt,\n        item_price: arr[i][keyPr]\n      });\n    }\n\n    if (platform === 'tiktok') {\n      const contentType = data.contentType;\n      const id = getId(arr[i]);\n      contents.push({\n        content_id: id ? makeString(id) : undefined,\n        content_type: contentType,\n        content_category: arr[i][keyCat],\n        content_name: arr[i][keyNm],\n        quantity: qt,\n        price: arr[i][keyPr] ? makeNumber(arr[i][keyPr]) : 0\n      });\n    }\n\n    if (platform === 'twitter') {\n      contents.push({\n        content_id: getId(arr[i]),\n        content_name: arr[i][keyNm],\n        content_type: arr[i][keyCat],\n        num_items: qt,\n        content_price: arr[i][keyPr]\n      });\n    }\n\n    if (platform === 'pinterest') {\n      contents.push({\n        quantity: qt,\n        item_price: arr[i][keyPr] ? makeString(arr[i][keyPr]) : '0'\n      });\n    }\n\n    if (platform === 'openai') {\n      const keyCurrency = data.keyCurrency || 'currency';\n      const contentType = data.contentTypeOpenAI;\n      const id = getId(arr[i]);\n      const amount = arr[i][keyPr] ? makeNumber(arr[i][keyPr]) : 0;\n      const currency = arr[i][keyCurrency] || copyFromDataLayer(keyCurrency);\n      contents.push({\n        id: id ? makeString(id) : undefined,\n        name: arr[i][keyNm] ? makeString(arr[i][keyNm]) : undefined,\n        quantity: qt,\n        amount: convertCurrencyValueToMinorUnit(amount, currency),\n        content_type: contentType,\n        currency: currency\n      });\n    }\n  }\n\n  return contents;\n}\n\nfunction getItems(arr, platform) {\n  let items = [];\n  let totalDiscount = 0;\n  if (data.discConfig === 'order_level') {\n    totalDiscount = makeNumber(data.discOrderLevel);\n\n    if (data.taxDiscountConfig == 'discDeduct') {\n      totalDiscount = totalDiscount / (taxDeductPercent / 100 + 1);\n    }\n  }\n\n  for (let i = 0; i < arr.length; i++) {\n    let qt = 1;\n    if (arr[i][keyQt]) qt = makeInteger(arr[i][keyQt]);\n\n    if (platform === 'ga4') {\n      let itemObj = {\n        item_id: getId(arr[i]),\n        item_name: arr[i][keyNm],\n        quantity: qt,\n        price: arr[i][keyPr],\n        item_category: arr[i][keyCat]\n      };\n\n      for (let prop in customParamMap) {\n        if (customParamMap[prop]) {\n          if (prop === 'discountamountqty') itemObj[customParamMap[prop]] = arr[i][prop] * qt;\n          else itemObj[customParamMap[prop]] = arr[i][prop];\n        }\n      }\n\n      items.push(itemObj);\n    }\n\n    if (platform === 'klaviyo') {\n      let cat = [];\n      cat.push(arr[i][keyCat]);\n\n      let itemObj = {\n        ProductID: getId(arr[i]),\n        ProductName: arr[i][keyNm],\n        Quantity: qt,\n        ItemPrice: arr[i][keyPr],\n        ImageURL: arr[i][keyImg],\n        ProductCategories: cat\n      };\n\n      for (let prop in customParamMap) {\n        if (customParamMap[prop]) {\n          itemObj[customParamMap[prop]] = arr[i][prop];\n        }\n      }\n\n      items.push(itemObj);\n    }\n\n    if (platform === 'criteo') {\n      let itemObj = {\n        id: getId(arr[i]),\n        quantity: qt,\n        price: arr[i][keyPr]\n      };\n\n      items.push(itemObj);\n    }\n\n    if (platform === 'gAdsOff') {\n      const id = getId(arr[i]);\n      items.push({\n        productId: id ? makeString(id) : undefined,\n        quantity: qt,\n        unitPrice: makeNumber(arr[i][keyPr])\n      });\n    }\n\n    if (platform === 'pinterest') {\n      items.push({\n        product_id: getId(arr[i]),\n        product_name: arr[i][keyNm],\n        product_quantity: qt,\n        product_price: arr[i][keyPr] ? makeNumber(arr[i][keyPr]) : 0\n      });\n    }\n\n    if (platform === 'reddit') {\n      const id = getId(arr[i]);\n      items.push({\n        id: id ? makeString(id) : undefined,\n        category: arr[i][keyCat],\n        name: arr[i][keyNm]\n      });\n    }\n\n    if (platform === 'rakuten') {\n      //let p = arr[i][keyPr];\n      let p = toFixed2(makeNumber(arr[i][keyPr]));\n      let price;\n\n      if (data.taxPriceConfig === 'priceDeduct' && taxDeductPercent && taxDeductPercent > 0) {\n        let tmp = p / (taxDeductPercent / 100 + 1);\n        price = toFixed2(tmp) * 100 * qt;\n        price = toFixed2(price);\n      }\n\n      if (data.discConfig === 'item_level' && arr[i][keyDisc]) {\n        let tmp;\n        let disc = makeNumber(arr[i][keyDisc]); //.replace(',','')\n        if (data.taxDiscountConfig == 'discDeduct' && taxDeductPercent && taxDeductPercent > 0) {\n          disc = disc / (taxDeductPercent / 100 + 1);\n        }\n\n        totalDiscount = toFixed2(makeNumber(totalDiscount) + toFixed2(disc));\n      }\n\n      let itemObj = {\n        sku: getId(arr[i]),\n        product_name: arr[i][keyNm],\n        quantity: qt,\n        amount: price > 0 ? price : toFixed2(p * 100 * qt),\n        optional_data: {}\n      };\n\n      if (keyCatList.length > 0) {\n        let catArr = [];\n        keyCatList.forEach((element) => catArr.push(arr[i][element]));\n        itemObj.optional_data = { category: catArr.join(' > ') };\n      }\n\n      for (let prop in customParamMap) {\n        if (customParamMap[prop]) {\n          itemObj.optional_data[customParamMap[prop]] = arr[i][prop];\n        }\n      }\n\n      items.push(itemObj);\n    }\n  }\n\n  if (platform === 'rakuten' && totalDiscount > 0) {\n    items.push({\n      sku: 'Discount',\n      quantity: '0',\n      amount: toFixed2((totalDiscount - totalDiscount * 2) * 100),\n      product_name: 'Discount'\n    });\n  }\n\n  return items;\n}\n\n/*==============================================================================\n  Helpers\n==============================================================================*/\n\nfunction toFixed2(value) {\n  if (!value) return value;\n  return Math.round(makeNumber(value) * 100) / 100;\n}\n\nfunction endsWith(str, suffix) {\n  return str.indexOf(suffix, str.length - suffix.length) !== -1;\n}\n\nfunction convertCurrencyValueToMinorUnit(value, currency) {\n  if (!value) return value;\n\n  // prettier-ignore\n  const zeroDecimalCurrencies = [\n    'BIF', 'CLP', 'DJF', 'GNF', 'IDR', 'ISK',\n    'JPY', 'KMF', 'KRW', 'MGA', 'PYG', 'RWF',\n    'UGX', 'VND', 'VUV', 'XAF', 'XOF', 'XPF'\n  ];\n  const threeDecimalCurrencies = ['BHD', 'IQD', 'JOD', 'KWD', 'LYD', 'OMR', 'TND'];\n  const upperCurrency = currency ? makeString(currency).toUpperCase() : '';\n\n  let multiplier = 100; // default: 2 decimal places (BRL, USD, EUR, GBP, etc.)\n  if (zeroDecimalCurrencies.indexOf(upperCurrency) !== -1) multiplier = 1;\n  else if (threeDecimalCurrencies.indexOf(upperCurrency) !== -1) multiplier = 1000;\n\n  return makeInteger(toFixed2(value * multiplier));\n}\n\n\n___WEB_PERMISSIONS___\n\n[\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"read_data_layer\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"allowedKeys\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"any\"\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  }\n]\n\n\n___TESTS___\n\nscenarios: []\n\n\n___NOTES___\n\n2026-15-06 - Change Notes:\n - Add OpenAI Ads parameters.\n - Add additional source for Product ID/SKU.\n - Add Shopify Product ID Feed format support.\n\nCreated on 12/10/2021, 11:11:20\n\n\n",
                "galleryReference": {
                    "host": "github.com",
                    "owner": "stape-io",
                    "repository": "universal-conversions-variable",
                    "version": "fdf1d79cc88c399120cd5f73fadc0bb6077904b8",
                    "signature": "89757f4c75333d8385646dc85253150dd1a6ab9f1ac8c60d6f51ecfda98b990b",
                    "galleryTemplateId": "WF8HR"
                }
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "templateId": "101",
                "name": "PixelFly - Server-Side Event Tracking",
                "fingerprint": "1791001751368",
                "templateData": "___INFO___\n\n{\n  \"type\": \"TAG\",\n  \"id\": \"pixelfly_server_tracking\",\n  \"version\": 1,\n  \"securityGroups\": [],\n  \"displayName\": \"PixelFly - Server-Side Event Tracking\",\n  \"brand\": {\n    \"id\": \"brand_pixelfly\",\n    \"displayName\": \"PixelFly\",\n    \"thumbnail\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAFQUExURfluS/luS/luS/luS/luS/luS/luS/ltSvhtSvlzUfl0U/l0UvluTPl1VPzJvP3f1/3e1v3e1/3Rxvl8XfhtSfl3V/3j3f////7v6/mBY/hsSfmBYvl3VvmAYvhrSPl7W/l6WvmDZf3c1P708f7z8P7z8f3m4PqKbvl4WPl5Wfuum/7q5f7o4v7o4/3j3Pqbg/mEZ/qGafmFaPqSeP3c0/7n4f7m4Py8rPhsSPy6qv729PqLb/hqRvhrR/l/YP7u6vzMv/739fqMcPmAYfzLv/uvnP7r5/7p5P3k3vqagfqRd/7r5vzGufmFZ/mEZvl8XPl7XP3a0f7x7v7y7/3k3funkvuzofl2Vf3i2/7t6fuii/7+/vl2VvuijPlyT/l1U/lyUPutmv3g2fy/sPy/r/7v7PqOc/l+X/y+rv7w7f7x7fuyn/78+/7t6Pl4V//+/rfPao4AAAAGdFJOU/T29/H8+fQOKpMAAAABYktHRBcL1piPAAAACXBIWXMAACxKAAAsSgF3enRNAAAAB3RJTUUH6gEYFA0caUbtKgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyNi0wMS0yNFQyMDoxMzoyOCswMDowMBOfiR4AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjYtMDEtMjRUMjA6MTM6MjgrMDA6MDBiwjGiAAAAKHRFWHRkYXRlOnRpbWVzdGFtcAAyMDI2LTAxLTI0VDIwOjEzOjI4KzAwOjAwNdcQfQAAAXFJREFUSMft1dlTgkAcwHG7YCNJSwpdDaU0U9LoxlKs1LTTIi07DDutrPz/30KMmEYwqF6c+j4y8xmW2d8uFkuXmbp7LL2Iqfr+wTcACuQMAxTpxzBswAqMAoAP2uxDww7CMBgZJUnS6YImgdsYAAQBPTIYo4AaqgcA5vX66PEJf2AyOBVS8uEIqgNgmJmORGfY2bn5hcUlpcgyAnQAF5NWs7Iahwk+SaqtWduC9Q0OgalPwOwb0gBCCDS/IbOZZXJbNEtv25ms0s7u3j7LhoAGALgjf0Af+oWjQtCbV/IVBUEIHUMNIO/DSUlaxSlPEUrxs3PpSYzT2+kLGaTUnU6UOxs0Rs8MAJeiKFaKhgFKXF3bbHbGOIA3H/Px64CnpIGD1K1RcHdf5aWqD4/OZk812BY8J18aJWu8u5nrFbQF9XpzIeE4fE/zPLSCDIW09GMgpnPRaKkUbVQoc18CFME9ahXwJVCue6B763fAL+tvgDdnRI6o69eB+AAAAABJRU5ErkJggg==\"\n  },\n  \"description\": \"Send server-side events to Meta CAPI, GA4, and other platforms through PixelFly. One tag for all platforms with automatic event deduplication.\",\n  \"categories\": [\n    \"ANALYTICS\",\n    \"CONVERSIONS\",\n    \"MARKETING\"\n  ],\n  \"containerContexts\": [\n    \"WEB\"\n  ]\n}\n\n\n___TEMPLATE_PARAMETERS___\n\n[\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"connectionGroup\",\n    \"displayName\": \"Connection Settings\",\n    \"groupStyle\": \"ZIPPY_OPEN\",\n    \"subParams\": [\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"apiKey\",\n        \"displayName\": \"API Key\",\n        \"simpleValueType\": true,\n        \"valueValidators\": [\n          {\n            \"type\": \"NON_EMPTY\"\n          }\n        ],\n        \"help\": \"Your PixelFly container API key. Find it in your PixelFly dashboard under Container Settings.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"endpoint\",\n        \"displayName\": \"Endpoint URL\",\n        \"simpleValueType\": true,\n        \"defaultValue\": \"https://track.pixelfly.io/e\",\n        \"help\": \"PixelFly tracking endpoint. Change this only if using a custom domain.\"\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"eventGroup\",\n    \"displayName\": \"Event Configuration\",\n    \"groupStyle\": \"ZIPPY_OPEN\",\n    \"subParams\": [\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"eventSource\",\n        \"displayName\": \"Event Source\",\n        \"radioItems\": [\n          {\n            \"value\": \"auto\",\n            \"displayValue\": \"Auto-detect from dataLayer (Recommended)\"\n          },\n          {\n            \"value\": \"manual\",\n            \"displayValue\": \"Select event manually\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"defaultValue\": \"auto\",\n        \"help\": \"Auto-detect will use the GTM event name and map it to the correct platform event.\"\n      },\n      {\n        \"type\": \"SELECT\",\n        \"name\": \"eventName\",\n        \"displayName\": \"Event Name\",\n        \"macrosInSelect\": false,\n        \"selectItems\": [\n          {\n            \"value\": \"PageView\",\n            \"displayValue\": \"PageView / page_view\"\n          },\n          {\n            \"value\": \"ViewContent\",\n            \"displayValue\": \"ViewContent / view_item\"\n          },\n          {\n            \"value\": \"AddToCart\",\n            \"displayValue\": \"AddToCart / add_to_cart\"\n          },\n          {\n            \"value\": \"RemoveFromCart\",\n            \"displayValue\": \"RemoveFromCart / remove_from_cart\"\n          },\n          {\n            \"value\": \"ViewCart\",\n            \"displayValue\": \"ViewCart / view_cart\"\n          },\n          {\n            \"value\": \"InitiateCheckout\",\n            \"displayValue\": \"InitiateCheckout / begin_checkout\"\n          },\n          {\n            \"value\": \"AddPaymentInfo\",\n            \"displayValue\": \"AddPaymentInfo / add_payment_info\"\n          },\n          {\n            \"value\": \"AddShippingInfo\",\n            \"displayValue\": \"AddShippingInfo / add_shipping_info\"\n          },\n          {\n            \"value\": \"Purchase\",\n            \"displayValue\": \"Purchase / purchase\"\n          },\n          {\n            \"value\": \"Lead\",\n            \"displayValue\": \"Lead / generate_lead\"\n          },\n          {\n            \"value\": \"CompleteRegistration\",\n            \"displayValue\": \"CompleteRegistration / sign_up\"\n          },\n          {\n            \"value\": \"Search\",\n            \"displayValue\": \"Search / search\"\n          },\n          {\n            \"value\": \"Subscribe\",\n            \"displayValue\": \"Subscribe\"\n          },\n          {\n            \"value\": \"Contact\",\n            \"displayValue\": \"Contact\"\n          },\n          {\n            \"value\": \"CustomEvent\",\n            \"displayValue\": \"Custom Event\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"eventSource\",\n            \"paramValue\": \"manual\",\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"help\": \"Select the event type to send to PixelFly.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"customEventName\",\n        \"displayName\": \"Custom Event Name\",\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"eventName\",\n            \"paramValue\": \"CustomEvent\",\n            \"type\": \"EQUALS\"\n          },\n          {\n            \"paramName\": \"eventSource\",\n            \"paramValue\": \"manual\",\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"help\": \"Enter your custom event name.\"\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"eventDataGroup\",\n    \"displayName\": \"Event Data\",\n    \"groupStyle\": \"ZIPPY_OPEN\",\n    \"subParams\": [\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"eventValue\",\n        \"displayName\": \"Value\",\n        \"simpleValueType\": true,\n        \"help\": \"The monetary value of the event (e.g., purchase amount). Use a variable like {{DLV - GA4 - value}}.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"eventCurrency\",\n        \"displayName\": \"Currency\",\n        \"simpleValueType\": true,\n        \"defaultValue\": \"BDT\",\n        \"help\": \"Currency code (e.g., BDT, USD, EUR). Use a variable like {{DLV - GA4 - currency}}.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"eventItems\",\n        \"displayName\": \"Items / Products\",\n        \"simpleValueType\": true,\n        \"help\": \"Ecommerce items array. Use a variable like {{DLV - GA4 - ecommerce item}}.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"transactionId\",\n        \"displayName\": \"Transaction ID / Order ID\",\n        \"simpleValueType\": true,\n        \"help\": \"Unique transaction identifier for purchases. Use a variable like {{DLV - GA4 - transaction_id}}.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"contentName\",\n        \"displayName\": \"Content Name\",\n        \"simpleValueType\": true,\n        \"help\": \"Name of the product or content being viewed/purchased.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"contentCategory\",\n        \"displayName\": \"Content Category\",\n        \"simpleValueType\": true,\n        \"help\": \"Category of the product or content.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"searchQuery\",\n        \"displayName\": \"Search Query\",\n        \"simpleValueType\": true,\n        \"help\": \"Search term (for Search events).\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"eventTax\",\n        \"displayName\": \"Tax\",\n        \"simpleValueType\": true,\n        \"help\": \"Tax amount for the transaction. Use a variable like {{DLV - GA4 - tax}}.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"eventShipping\",\n        \"displayName\": \"Shipping\",\n        \"simpleValueType\": true,\n        \"help\": \"Shipping cost for the transaction. Use a variable like {{DLV - GA4 - shipping}}.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"eventCoupon\",\n        \"displayName\": \"Coupon Code\",\n        \"simpleValueType\": true,\n        \"help\": \"Coupon or discount code applied to the order.\"\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"userDataGroup\",\n    \"displayName\": \"User Data (Advanced Matching)\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"subParams\": [\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"userEmail\",\n        \"displayName\": \"Email\",\n        \"simpleValueType\": true,\n        \"help\": \"Customer email address. Will be hashed before sending.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"userPhone\",\n        \"displayName\": \"Phone\",\n        \"simpleValueType\": true,\n        \"help\": \"Customer phone number. Will be hashed before sending.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"userFirstName\",\n        \"displayName\": \"First Name\",\n        \"simpleValueType\": true,\n        \"help\": \"Customer first name. Will be hashed before sending.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"userLastName\",\n        \"displayName\": \"Last Name\",\n        \"simpleValueType\": true,\n        \"help\": \"Customer last name. Will be hashed before sending.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"userCity\",\n        \"displayName\": \"City\",\n        \"simpleValueType\": true,\n        \"help\": \"Customer city.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"userCountry\",\n        \"displayName\": \"Country\",\n        \"simpleValueType\": true,\n        \"help\": \"Customer country code (e.g., BD, US).\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"userZip\",\n        \"displayName\": \"Zip / Postal Code\",\n        \"simpleValueType\": true,\n        \"help\": \"Customer postal code.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"externalId\",\n        \"displayName\": \"External ID / Customer ID\",\n        \"simpleValueType\": true,\n        \"help\": \"Your internal customer/user ID for cross-platform matching.\"\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"advancedGroup\",\n    \"displayName\": \"Advanced Options\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"subParams\": [\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"autoCaptureFbCookies\",\n        \"checkboxText\": \"Auto-capture Facebook cookies (fbp, fbc)\",\n        \"simpleValueType\": true,\n        \"defaultValue\": true,\n        \"help\": \"Automatically read and send _fbp and _fbc cookies for better Meta matching.\"\n      },\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"autoGenerateEventId\",\n        \"checkboxText\": \"Auto-generate event_id if not provided\",\n        \"simpleValueType\": true,\n        \"defaultValue\": true,\n        \"help\": \"Generate a unique event ID for deduplication if no event_id variable is provided.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"eventIdVariable\",\n        \"displayName\": \"Event ID Variable (Optional)\",\n        \"simpleValueType\": true,\n        \"help\": \"Override with your own event_id variable for deduplication with client-side pixels.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"fbpVariable\",\n        \"displayName\": \"FBP Cookie Variable (Optional)\",\n        \"simpleValueType\": true,\n        \"help\": \"Override fbp value with a custom variable.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"fbcVariable\",\n        \"displayName\": \"FBC Cookie Variable (Optional)\",\n        \"simpleValueType\": true,\n        \"help\": \"Override fbc value with a custom variable.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"clientIdVariable\",\n        \"displayName\": \"Client ID Variable (Optional)\",\n        \"simpleValueType\": true,\n        \"help\": \"Persistent client identifier (e.g., from GA4 client_id or your own system).\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"sessionIdVariable\",\n        \"displayName\": \"Session ID Variable (Optional)\",\n        \"simpleValueType\": true,\n        \"help\": \"Current session identifier for session-based analytics.\"\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"consentGroup\",\n    \"displayName\": \"Consent Mode V2 (GDPR)\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"subParams\": [\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"sendConsentSignals\",\n        \"checkboxText\": \"Send consent signals to PixelFly\",\n        \"simpleValueType\": true,\n        \"defaultValue\": true,\n        \"help\": \"When enabled, consent state from Google Consent Mode will be included in the request. PixelFly auto-enforces consent for EU/UK visitors.\"\n      },\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"consentSource\",\n        \"displayName\": \"Consent Source\",\n        \"radioItems\": [\n          {\n            \"value\": \"auto\",\n            \"displayValue\": \"Auto-detect from Google Consent Mode (Recommended)\"\n          },\n          {\n            \"value\": \"manual\",\n            \"displayValue\": \"Use manual consent variables\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"defaultValue\": \"auto\",\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"sendConsentSignals\",\n            \"paramValue\": true,\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"help\": \"Auto-detect reads consent state from Google Consent Mode. Manual allows you to provide your own consent variables.\"\n      },\n      {\n        \"type\": \"SELECT\",\n        \"name\": \"manualAdStorage\",\n        \"displayName\": \"ad_storage\",\n        \"selectItems\": [\n          {\n            \"value\": \"granted\",\n            \"displayValue\": \"Granted\"\n          },\n          {\n            \"value\": \"denied\",\n            \"displayValue\": \"Denied\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"defaultValue\": \"denied\",\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"consentSource\",\n            \"paramValue\": \"manual\",\n            \"type\": \"EQUALS\"\n          },\n          {\n            \"paramName\": \"sendConsentSignals\",\n            \"paramValue\": true,\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"help\": \"Controls whether advertising cookies/storage can be used.\"\n      },\n      {\n        \"type\": \"SELECT\",\n        \"name\": \"manualAnalyticsStorage\",\n        \"displayName\": \"analytics_storage\",\n        \"selectItems\": [\n          {\n            \"value\": \"granted\",\n            \"displayValue\": \"Granted\"\n          },\n          {\n            \"value\": \"denied\",\n            \"displayValue\": \"Denied\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"defaultValue\": \"denied\",\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"consentSource\",\n            \"paramValue\": \"manual\",\n            \"type\": \"EQUALS\"\n          },\n          {\n            \"paramName\": \"sendConsentSignals\",\n            \"paramValue\": true,\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"help\": \"Controls whether analytics cookies/storage can be used.\"\n      },\n      {\n        \"type\": \"SELECT\",\n        \"name\": \"manualAdUserData\",\n        \"displayName\": \"ad_user_data\",\n        \"selectItems\": [\n          {\n            \"value\": \"granted\",\n            \"displayValue\": \"Granted\"\n          },\n          {\n            \"value\": \"denied\",\n            \"displayValue\": \"Denied\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"defaultValue\": \"denied\",\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"consentSource\",\n            \"paramValue\": \"manual\",\n            \"type\": \"EQUALS\"\n          },\n          {\n            \"paramName\": \"sendConsentSignals\",\n            \"paramValue\": true,\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"help\": \"Controls whether user data can be sent to advertising platforms.\"\n      },\n      {\n        \"type\": \"SELECT\",\n        \"name\": \"manualAdPersonalization\",\n        \"displayName\": \"ad_personalization\",\n        \"selectItems\": [\n          {\n            \"value\": \"granted\",\n            \"displayValue\": \"Granted\"\n          },\n          {\n            \"value\": \"denied\",\n            \"displayValue\": \"Denied\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"defaultValue\": \"denied\",\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"consentSource\",\n            \"paramValue\": \"manual\",\n            \"type\": \"EQUALS\"\n          },\n          {\n            \"paramName\": \"sendConsentSignals\",\n            \"paramValue\": true,\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"help\": \"Controls whether personalized advertising is allowed.\"\n      }\n    ]\n  }\n]\n\n\n___SANDBOXED_JS_FOR_WEB_TEMPLATE___\n\nconst log = require('logToConsole');\nconst sendPixel = require('sendPixel');\nconst getCookieValues = require('getCookieValues');\nconst getUrl = require('getUrl');\nconst getReferrerUrl = require('getReferrerUrl');\nconst getTimestampMillis = require('getTimestampMillis');\nconst generateRandom = require('generateRandom');\nconst JSON = require('JSON');\nconst encodeUriComponent = require('encodeUriComponent');\nconst copyFromDataLayer = require('copyFromDataLayer');\nconst isConsentGranted = require('isConsentGranted');\n\n// Event mapping from GA4 to Meta format\nconst eventMap = {\n  'page_view': 'PageView',\n  'view_item': 'ViewContent',\n  'add_to_cart': 'AddToCart',\n  'remove_from_cart': 'RemoveFromCart',\n  'view_cart': 'ViewCart',\n  'begin_checkout': 'InitiateCheckout',\n  'add_payment_info': 'AddPaymentInfo',\n  'add_shipping_info': 'AddShippingInfo',\n  'purchase': 'Purchase',\n  'generate_lead': 'Lead',\n  'sign_up': 'CompleteRegistration',\n  'search': 'Search',\n  'submit_purchase': 'Purchase'\n};\n\n// Helper function to check valid values\nfunction isValidValue(value) {\n  if (value === null || value === undefined) return false;\n  if (typeof value === 'string') {\n    if (value === '' || value === 'undefined' || value === 'null') return false;\n  }\n  return true;\n}\n\n// GTM internal events that should be ignored\nconst gtmInternalEvents = [\n  'gtm.js',\n  'gtm.dom',\n  'gtm.load',\n  'gtm.click',\n  'gtm.linkClick',\n  'gtm.formSubmit',\n  'gtm.historyChange',\n  'gtm.scrollDepth',\n  'gtm.timer',\n  'gtm.video',\n  'gtm.init',\n  'gtm.init_consent'\n];\n\n// Check if event is a GTM internal event\nfunction isGtmInternalEvent(eventName) {\n  if (!eventName) return false;\n  for (var i = 0; i < gtmInternalEvents.length; i++) {\n    if (eventName === gtmInternalEvents[i]) {\n      return true;\n    }\n  }\n  return false;\n}\n\n// GTM page-load events: these are fired by the built-in \"All Pages\" (Page View)\n// trigger and represent an actual page view. Map them to page_view instead of\n// skipping them as internal events, otherwise an \"All Pages\" trigger can never\n// produce a PageView server-side.\nconst gtmPageLoadEvents = ['gtm.js', 'gtm.dom', 'gtm.load'];\n\nfunction isGtmPageLoadEvent(eventName) {\n  if (!eventName) return false;\n  for (var j = 0; j < gtmPageLoadEvents.length; j++) {\n    if (eventName === gtmPageLoadEvents[j]) {\n      return true;\n    }\n  }\n  return false;\n}\n\n// Get event name\nfunction getEventName() {\n  if (data.eventSource === 'manual') {\n    if (data.eventName === 'CustomEvent') {\n      return data.customEventName || 'CustomEvent';\n    }\n    return data.eventName;\n  }\n\n  // Auto-detect from dataLayer\n  const dlEvent = copyFromDataLayer('event');\n\n  // Treat GTM page-load events (fired by the \"All Pages\" trigger) as a page view\n  if (isGtmPageLoadEvent(dlEvent)) {\n    return 'PageView';\n  }\n\n  // Skip other GTM internal events (clicks, scrolls, timers, etc.)\n  if (isGtmInternalEvent(dlEvent)) {\n    return null; // Signal to skip this event\n  }\n\n  if (dlEvent && eventMap[dlEvent]) {\n    return eventMap[dlEvent];\n  }\n  return dlEvent || 'PageView';\n}\n\n// Get Facebook cookies\nfunction getFbCookies() {\n  let fbp = null;\n  let fbc = null;\n\n  if (data.autoCaptureFbCookies) {\n    const fbpCookies = getCookieValues('_fbp');\n    const fbcCookies = getCookieValues('_fbc');\n\n    if (fbpCookies && fbpCookies.length > 0) {\n      fbp = fbpCookies[0];\n    }\n    if (fbcCookies && fbcCookies.length > 0) {\n      fbc = fbcCookies[0];\n    }\n  }\n\n  // Override with variables if provided\n  if (isValidValue(data.fbpVariable)) {\n    fbp = data.fbpVariable;\n  }\n  if (isValidValue(data.fbcVariable)) {\n    fbc = data.fbcVariable;\n  }\n\n  return { fbp: fbp, fbc: fbc };\n}\n\n// Generate event ID\nfunction getEventId() {\n  if (isValidValue(data.eventIdVariable)) {\n    return data.eventIdVariable;\n  }\n\n  // PixelFly's own dataLayer output already pushes a deterministic eventId\n  // (e.g. purchase_{order_id}) for every event. Prefer it over auto-generating\n  // one, so a browser Pixel tag and a server-side send for the same order/event\n  // land on the same ID and dedupe, without requiring manual variable setup.\n  const dlEventId = copyFromDataLayer('eventId');\n  if (isValidValue(dlEventId)) {\n    return dlEventId;\n  }\n\n  if (data.autoGenerateEventId) {\n    const timestamp = getTimestampMillis();\n    const random = generateRandom(100000000, 999999999);\n    return timestamp + '_' + random;\n  }\n\n  return null;\n}\n\n// Build user data object\nfunction buildUserData() {\n  const userData = {};\n  const fbCookies = getFbCookies();\n\n  if (isValidValue(data.userEmail)) userData.em = data.userEmail;\n  if (isValidValue(data.userPhone)) userData.ph = data.userPhone;\n  if (isValidValue(data.userFirstName)) userData.fn = data.userFirstName;\n  if (isValidValue(data.userLastName)) userData.ln = data.userLastName;\n  if (isValidValue(data.userCity)) userData.ct = data.userCity;\n  if (isValidValue(data.userCountry)) userData.country = data.userCountry;\n  if (isValidValue(data.userZip)) userData.zp = data.userZip;\n  if (isValidValue(data.externalId)) userData.external_id = data.externalId;\n  if (isValidValue(fbCookies.fbp)) userData.fbp = fbCookies.fbp;\n  if (isValidValue(fbCookies.fbc)) userData.fbc = fbCookies.fbc;\n  if (isValidValue(data.clientIdVariable)) userData.client_id = data.clientIdVariable;\n  if (isValidValue(data.sessionIdVariable)) userData.session_id = data.sessionIdVariable;\n\n  return userData;\n}\n\n// Build custom data object\nfunction buildCustomData() {\n  const customData = {\n    url: getUrl(),\n    referrer: getReferrerUrl()\n  };\n\n  if (isValidValue(data.contentName)) {\n    customData.content_name = data.contentName;\n  }\n  if (isValidValue(data.contentCategory)) {\n    customData.content_category = data.contentCategory;\n  }\n  if (isValidValue(data.transactionId)) {\n    customData.order_id = data.transactionId;\n  }\n  if (isValidValue(data.searchQuery)) {\n    customData.search_string = data.searchQuery;\n  }\n\n  // Handle items array — template param takes priority, fallback to dataLayer ecommerce.items\n  const resolvedItems = isValidValue(data.eventItems) ? data.eventItems : copyFromDataLayer('ecommerce.items');\n  if (isValidValue(resolvedItems)) {\n    const items = resolvedItems;\n\n    if (typeof items === 'object') {\n      const itemsArray = items.length ? items : [items];\n\n      if (itemsArray.length > 0) {\n        customData.content_ids = [];\n        customData.contents = [];\n        customData.num_items = 0;\n        customData.content_type = 'product';\n\n        for (let i = 0; i < itemsArray.length; i++) {\n          const item = itemsArray[i];\n          const itemId = item.item_id || item.id || '';\n\n          if (itemId) {\n            customData.content_ids.push(itemId + '');\n            customData.contents.push({\n              id: itemId + '',\n              quantity: item.quantity || 1,\n              item_price: item.price || 0\n            });\n            customData.num_items += (item.quantity || 1);\n          }\n        }\n      }\n    }\n  }\n\n  return customData;\n}\n\n// Get consent state for Consent Mode V2\nfunction getConsentState() {\n  if (!data.sendConsentSignals) {\n    return null; // Don't send consent signals\n  }\n\n  if (data.consentSource === 'manual') {\n    // Use manual consent values\n    return {\n      ad_storage: data.manualAdStorage || 'denied',\n      analytics_storage: data.manualAnalyticsStorage || 'denied',\n      ad_user_data: data.manualAdUserData || 'denied',\n      ad_personalization: data.manualAdPersonalization || 'denied'\n    };\n  }\n\n  // Auto-detect from Google Consent Mode\n  // isConsentGranted returns true if consent is granted for the specified type\n  return {\n    ad_storage: isConsentGranted('ad_storage') ? 'granted' : 'denied',\n    analytics_storage: isConsentGranted('analytics_storage') ? 'granted' : 'denied',\n    ad_user_data: isConsentGranted('ad_user_data') ? 'granted' : 'denied',\n    ad_personalization: isConsentGranted('ad_personalization') ? 'granted' : 'denied'\n  };\n}\n\n// Build the payload\nconst eventName = getEventName();\n\n// Skip GTM internal events (null event name)\nif (eventName === null) {\n  log('PixelFly: Skipping GTM internal event');\n  data.gtmOnSuccess();\n  return;\n}\n\nconst eventId = getEventId();\n\n// Auto-read ecommerce fields from dataLayer as fallback\n// Handles WooCommerce / GA4 standard ecommerce dataLayer structure\nconst dlValue = copyFromDataLayer('ecommerce.value');\nconst dlCurrency = copyFromDataLayer('ecommerce.currency');\nconst dlTransactionId = copyFromDataLayer('ecommerce.transaction_id');\nconst dlTax = copyFromDataLayer('ecommerce.tax');\nconst dlShipping = copyFromDataLayer('ecommerce.shipping');\nconst dlCoupon = copyFromDataLayer('ecommerce.coupon');\n\nconst payload = {\n  event: eventName,\n  value: isValidValue(data.eventValue) ? data.eventValue * 1 :\n         (isValidValue(dlValue) ? dlValue * 1 : 0),\n  currency: isValidValue(data.eventCurrency) ? data.eventCurrency :\n            (isValidValue(dlCurrency) ? dlCurrency : ''),\n  user_data: buildUserData(),\n  custom_data: buildCustomData()\n};\n\nif (eventId) {\n  payload.event_id = eventId;\n}\n\n// Add Consent Mode V2 signals\nconst consentState = getConsentState();\nif (consentState) {\n  payload.consent = consentState;\n}\n\n// Add transaction details — template param takes priority, fallback to dataLayer\nif (isValidValue(data.transactionId)) {\n  payload.transaction_id = data.transactionId;\n} else if (isValidValue(dlTransactionId)) {\n  payload.transaction_id = dlTransactionId;\n}\nif (isValidValue(data.eventTax)) {\n  payload.tax = data.eventTax * 1;\n} else if (isValidValue(dlTax)) {\n  payload.tax = dlTax * 1;\n}\nif (isValidValue(data.eventShipping)) {\n  payload.shipping = data.eventShipping * 1;\n} else if (isValidValue(dlShipping)) {\n  payload.shipping = dlShipping * 1;\n}\nif (isValidValue(data.eventCoupon)) {\n  payload.coupon = data.eventCoupon;\n} else if (isValidValue(dlCoupon)) {\n  payload.coupon = dlCoupon;\n}\n\n// Encode payload as base64-like URL-safe string\nconst payloadJson = JSON.stringify(payload);\nconst encodedPayload = encodeUriComponent(payloadJson);\n\n// Build the tracking URL with payload as query parameter\n// The endpoint will accept both GET (with ?d=payload) and POST\nconst trackingUrl = data.endpoint + '?k=' + encodeUriComponent(data.apiKey) + '&d=' + encodedPayload;\n\n// Send the pixel request\nsendPixel(trackingUrl, data.gtmOnSuccess, data.gtmOnFailure);\n\n\n___WEB_PERMISSIONS___\n\n[\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"logging\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"environments\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"debug\"\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"get_cookies\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"cookieAccess\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"specific\"\n          }\n        },\n        {\n          \"key\": \"cookieNames\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 1,\n                \"string\": \"_fbp\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"_fbc\"\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"get_url\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"urlParts\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"any\"\n          }\n        },\n        {\n          \"key\": \"queriesAllowed\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"any\"\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"get_referrer\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"urlParts\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"any\"\n          }\n        },\n        {\n          \"key\": \"queriesAllowed\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"any\"\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"read_data_layer\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"allowedKeys\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"any\"\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"send_pixel\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"allowedUrls\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"any\"\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"access_consent\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"consentTypes\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"consentType\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"ad_storage\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"consentType\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"analytics_storage\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"consentType\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"ad_user_data\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"consentType\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"ad_personalization\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  }\n]\n\n\n___TESTS___\n\nscenarios: []\n\n\n___NOTES___\n\nCreated on 12/31/2024\nPixelFly Server-Side Event Tracking Template\nVersion 1.0.7\n\nThis template sends events to PixelFly's server-side tracking endpoint,\nwhich then forwards to Meta CAPI, GA4 Measurement Protocol, and other platforms.\n\nChanges in 1.0.7:\n- Fixed: page-load events (gtm.js, gtm.dom, gtm.load) fired by the built-in\n  \"All Pages\" trigger now map to PageView instead of being skipped, so a single\n  auto-detect tag on \"All Pages\" produces a server-side PageView. Other GTM\n  internal events (clicks, scrolls, timers) are still filtered out.\n\nChanges in 1.0.6:\n- Added: Google Consent Mode V2 support\n- Added: Auto-detect consent state from Google Consent Mode\n- Added: Manual consent configuration options\n- Added: Sends consent signals (ad_storage, analytics_storage, ad_user_data, ad_personalization)\n- PixelFly server auto-enforces GDPR compliance for EU/UK/CH visitors\n\nChanges in 1.0.5:\n- Fixed: send_pixel permission now allows any URL for custom domain support\n- Users can now use custom tracking domains (e.g., pixels.yourdomain.com)\n\nChanges in 1.0.4:\n- Added: Tax, Shipping, and Coupon Code fields in Event Data section\n- These fields are sent to both Meta CAPI and GA4 for purchase events\n\nChanges in 1.0.3:\n- Added: Client ID and Session ID variable fields in Advanced Options\n- These allow session tracking when used with GTM variables\n\nChanges in 1.0.2:\n- Fixed: GTM internal events (gtm.js, gtm.dom, gtm.load, etc.) are now filtered out\n- These events were being sent unnecessarily and cluttering analytics\n\nChanges in 1.0.1:\n- Fixed permission errors for inject_script and access_globals\n- Switched to sendPixel with GET request approach\n- Added proper URL patterns for send_pixel permission\n\nFor support, visit: https://pixelfly.io/docs\n"
            },
            {
                "accountId": "6374306328",
                "containerId": "262776217",
                "templateId": "102",
                "name": "PixelFly COD Protection (Web)",
                "fingerprint": "1791001751368",
                "templateData": "___TERMS_OF_SERVICE___\n\nBy creating or modifying this file you agree to Google Tag Manager's Community\nTemplate Gallery Developer Terms of Service available at\nhttps://developers.google.com/tag-manager/gallery-tos (or such other URL as\nGoogle may provide), as modified from time to time.\n\n\n___INFO___\n\n{\n  \"type\": \"TAG\",\n  \"id\": \"pixelfly_cod_protection_web\",\n  \"version\": 1,\n  \"securityGroups\": [],\n  \"displayName\": \"PixelFly COD Protection (Web)\",\n  \"brand\": {\n    \"id\": \"brand_pixelfly\",\n    \"displayName\": \"PixelFly\",\n    \"thumbnail\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAFQUExURfluS/luS/luS/luS/luS/luS/luS/ltSvhtSvlzUfl0U/l0UvluTPl1VPzJvP3f1/3e1v3e1/3Rxvl8XfhtSfl3V/3j3f////7v6/mBY/hsSfmBYvl3VvmAYvhrSPl7W/l6WvmDZf3c1P708f7z8P7z8f3m4PqKbvl4WPl5Wfuum/7q5f7o4v7o4/3j3Pqbg/mEZ/qGafmFaPqSeP3c0/7n4f7m4Py8rPhsSPy6qv729PqLb/hqRvhrR/l/YP7u6vzMv/739fqMcPmAYfzLv/uvnP7r5/7p5P3k3vqagfqRd/7r5vzGufmFZ/mEZvl8XPl7XP3a0f7x7v7y7/3k3funkvuzofl2Vf3i2/7t6fuii/7+/vl2VvuijPlyT/l1U/lyUPutmv3g2fy/sPy/r/7v7PqOc/l+X/y+rv7w7f7x7fuyn/78+/7t6Pl4V//+/rfPao4AAAAGdFJOU/T29/H8+fQOKpMAAAABYktHRBcL1piPAAAACXBIWXMAACxKAAAsSgF3enRNAAAAB3RJTUUH6gEYFA0caUbtKgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyNi0wMS0yNFQyMDoxMzoyOCswMDowMBOfiR4AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjYtMDEtMjRUMjA6MTM6MjgrMDA6MDBiwjGiAAAAKHRFWHRkYXRlOnRpbWVzdGFtcAAyMDI2LTAxLTI0VDIwOjEzOjI4KzAwOjAwNdcQfQAAAXFJREFUSMft1dlTgkAcwHG7YCNJSwpdDaU0U9LoxlKs1LTTIi07DDutrPz/30KMmEYwqF6c+j4y8xmW2d8uFkuXmbp7LL2Iqfr+wTcACuQMAxTpxzBswAqMAoAP2uxDww7CMBgZJUnS6YImgdsYAAQBPTIYo4AaqgcA5vX66PEJf2AyOBVS8uEIqgNgmJmORGfY2bn5hcUlpcgyAnQAF5NWs7Iahwk+SaqtWduC9Q0OgalPwOwb0gBCCDS/IbOZZXJbNEtv25ms0s7u3j7LhoAGALgjf0Af+oWjQtCbV/IVBUEIHUMNIO/DSUlaxSlPEUrxs3PpSYzT2+kLGaTUnU6UOxs0Rs8MAJeiKFaKhgFKXF3bbHbGOIA3H/Px64CnpIGD1K1RcHdf5aWqD4/OZk812BY8J18aJWu8u5nrFbQF9XpzIeE4fE/zPLSCDIW09GMgpnPRaKkUbVQoc18CFME9ahXwJVCue6B763fAL+tvgDdnRI6o69eB+AAAAABJRU5ErkJggg==\"\n  },\n  \"description\": \"Hold COD purchases in PixelFly from the web container. Sends order + user data to your first-party /cod/hold endpoint. Prefer the sGTM COD tag when you have a server container — do not fire both.\",\n  \"categories\": [\n    \"ANALYTICS\",\n    \"CONVERSIONS\",\n    \"MARKETING\"\n  ],\n  \"containerContexts\": [\n    \"WEB\"\n  ]\n}\n\n\n___TEMPLATE_PARAMETERS___\n\n[\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"connectionGroup\",\n    \"displayName\": \"Connection\",\n    \"groupStyle\": \"ZIPPY_OPEN\",\n    \"subParams\": [\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"serverHost\",\n        \"displayName\": \"Server hostname / base URL\",\n        \"simpleValueType\": true,\n        \"valueValidators\": [\n          {\n            \"type\": \"NON_EMPTY\"\n          }\n        ],\n        \"help\": \"First-party host from PixelFly COD Power-up. Example: https://server.bazarei.com (or paste full …/cod/hold URL).\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"apiKey\",\n        \"displayName\": \"API Key\",\n        \"simpleValueType\": true,\n        \"valueValidators\": [\n          {\n            \"type\": \"NON_EMPTY\"\n          }\n        ],\n        \"help\": \"Container API key (pf_live_…).\"\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"dataGroup\",\n    \"displayName\": \"Order data\",\n    \"groupStyle\": \"ZIPPY_OPEN\",\n    \"subParams\": [\n      {\n        \"type\": \"RADIO\",\n        \"name\": \"dataMode\",\n        \"displayName\": \"How to read order fields\",\n        \"radioItems\": [\n          {\n            \"value\": \"auto\",\n            \"displayValue\": \"Auto from dataLayer (Recommended)\"\n          },\n          {\n            \"value\": \"manual\",\n            \"displayValue\": \"Map fields manually\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"defaultValue\": \"auto\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"orderId\",\n        \"displayName\": \"Order ID\",\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"dataMode\",\n            \"paramValue\": \"manual\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"value\",\n        \"displayName\": \"Value\",\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"dataMode\",\n            \"paramValue\": \"manual\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"currency\",\n        \"displayName\": \"Currency\",\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"dataMode\",\n            \"paramValue\": \"manual\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"email\",\n        \"displayName\": \"Email\",\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"dataMode\",\n            \"paramValue\": \"manual\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"phone\",\n        \"displayName\": \"Phone\",\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"dataMode\",\n            \"paramValue\": \"manual\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"items\",\n        \"displayName\": \"Items\",\n        \"simpleValueType\": true,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"dataMode\",\n            \"paramValue\": \"manual\",\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"paymentMethod\",\n        \"displayName\": \"Payment method\",\n        \"simpleValueType\": true,\n        \"defaultValue\": \"cod\",\n        \"help\": \"Default cod. Use a DLV if you need dynamic values; pair with a COD-only trigger.\"\n      },\n      {\n        \"type\": \"SIMPLE_TABLE\",\n        \"name\": \"additionalFields\",\n        \"displayName\": \"Additional fields to store\",\n        \"newRowButtonText\": \"Add field\",\n        \"simpleTableColumns\": [\n          {\n            \"defaultValue\": \"\",\n            \"displayName\": \"Field name\",\n            \"name\": \"name\",\n            \"type\": \"TEXT\"\n          },\n          {\n            \"defaultValue\": \"\",\n            \"displayName\": \"Value\",\n            \"name\": \"value\",\n            \"type\": \"TEXT\"\n          }\n        ],\n        \"help\": \"Extra keys merged into the hold payload (name, city, …).\"\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"optionsGroup\",\n    \"displayName\": \"Options\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"subParams\": [\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"skipIfNotCod\",\n        \"checkboxText\": \"Skip if payment_method is not COD\",\n        \"simpleValueType\": true,\n        \"defaultValue\": true\n      },\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"logToConsole\",\n        \"checkboxText\": \"Log in Preview (debug)\",\n        \"simpleValueType\": true,\n        \"defaultValue\": false\n      }\n    ]\n  }\n]\n\n\n___SANDBOXED_JS_FOR_WEB_TEMPLATE___\n\nconst sendPixel = require('sendPixel');\nconst encodeUriComponent = require('encodeUriComponent');\nconst decodeUriComponent = require('decodeUriComponent');\nconst getCookieValues = require('getCookieValues');\nconst getUrl = require('getUrl');\nconst copyFromDataLayer = require('copyFromDataLayer');\nconst getType = require('getType');\nconst JSON = require('JSON');\nconst logToConsole = require('logToConsole');\nconst getTimestampMillis = require('getTimestampMillis');\nconst makeNumber = require('makeNumber');\nconst makeString = require('makeString');\n\nconst TAG = 'PixelFly COD Protection (Web)';\n\nfunction isEmpty(v) {\n  return v === undefined || v === null || v === '';\n}\n\nfunction firstNonEmpty() {\n  for (let i = 0; i < arguments.length; i++) {\n    if (!isEmpty(arguments[i])) return arguments[i];\n  }\n  return undefined;\n}\n\nfunction normalizeHost(host) {\n  let h = makeString(host || '').trim();\n  if (!h) return '';\n  if (h.indexOf('http://') !== 0 && h.indexOf('https://') !== 0) {\n    h = 'https://' + h;\n  }\n  while (h.length > 0 && h.charAt(h.length - 1) === '/') {\n    h = h.substring(0, h.length - 1);\n  }\n  if (h.indexOf('/cod/hold') !== -1) return h;\n  return h + '/cod/hold';\n}\n\nfunction isCodMethod(method) {\n  if (isEmpty(method)) return true;\n  const m = makeString(method).toLowerCase();\n  return m === 'cod' || m.indexOf('cash_on_delivery') !== -1 || m.indexOf('cash on delivery') !== -1;\n}\n\nfunction cookieFirst(name) {\n  const vals = getCookieValues(name);\n  if (vals && vals.length) return vals[0];\n  return undefined;\n}\n\nfunction gclidFromGoogleCookie() {\n  const aw = cookieFirst('_gcl_aw');\n  const dc = cookieFirst('_gcl_dc');\n  const raw = aw || dc;\n  if (!raw) return undefined;\n  const parts = makeString(raw).split('.');\n  if (parts.length >= 3) return parts.slice(2).join('.');\n  return undefined;\n}\n\nfunction gclidFromUrl() {\n  const url = makeString(getUrl() || '');\n  let start = url.indexOf('?gclid=');\n  if (start === -1) start = url.indexOf('&gclid=');\n  if (start === -1) return undefined;\n  start += 7;\n  let end = url.indexOf('&', start);\n  if (end === -1) end = url.indexOf('#', start);\n  if (end === -1) end = url.length;\n  const raw = url.substring(start, end);\n  if (!raw) return undefined;\n  return decodeUriComponent(raw) || raw;\n}\n\nconst holdUrl = normalizeHost(data.serverHost);\nconst apiKey = makeString(data.apiKey || '').trim();\n\nif (!holdUrl || !apiKey) {\n  if (data.logToConsole) logToConsole(TAG + ': missing serverHost or apiKey');\n  data.gtmOnFailure();\n  return;\n}\n\nlet orderId;\nlet value;\nlet currency;\nlet email;\nlet phone;\nlet items;\n\nif (data.dataMode === 'manual') {\n  orderId = firstNonEmpty(data.orderId, copyFromDataLayer('ecommerce.transaction_id'), copyFromDataLayer('transaction_id'));\n  value = firstNonEmpty(data.value, copyFromDataLayer('ecommerce.value'));\n  currency = firstNonEmpty(data.currency, copyFromDataLayer('ecommerce.currency'));\n  email = firstNonEmpty(data.email, copyFromDataLayer('email'), copyFromDataLayer('user_data.email'));\n  phone = firstNonEmpty(data.phone, copyFromDataLayer('phone'), copyFromDataLayer('user_data.phone'));\n  items = firstNonEmpty(data.items, copyFromDataLayer('ecommerce.items'));\n} else {\n  orderId = firstNonEmpty(\n    copyFromDataLayer('ecommerce.transaction_id'),\n    copyFromDataLayer('transaction_id'),\n    copyFromDataLayer('order_id')\n  );\n  value = firstNonEmpty(copyFromDataLayer('ecommerce.value'), copyFromDataLayer('value'));\n  currency = firstNonEmpty(copyFromDataLayer('ecommerce.currency'), copyFromDataLayer('currency'));\n  email = firstNonEmpty(\n    copyFromDataLayer('email'),\n    copyFromDataLayer('user_data.email'),\n    copyFromDataLayer('user_data.email_address'),\n    copyFromDataLayer('user_data.billing_email'),\n    copyFromDataLayer('user_data.em')\n  );\n  phone = firstNonEmpty(\n    copyFromDataLayer('phone'),\n    copyFromDataLayer('user_data.phone'),\n    copyFromDataLayer('user_data.phone_number'),\n    copyFromDataLayer('user_data.ph')\n  );\n  items = firstNonEmpty(copyFromDataLayer('ecommerce.items'), copyFromDataLayer('items'));\n}\n\nconst paymentMethod = firstNonEmpty(\n  data.paymentMethod,\n  copyFromDataLayer('payment_method'),\n  copyFromDataLayer('ecommerce.payment_method'),\n  copyFromDataLayer('ecommerce.payment_type'),\n  'cod'\n);\n\nif (data.skipIfNotCod && !isCodMethod(paymentMethod)) {\n  if (data.logToConsole) logToConsole(TAG + ': skipped non-COD');\n  data.gtmOnSuccess();\n  return;\n}\n\n// No order ID: still held. PixelFly names it after the shopper and the moment\n// (NOID-...), and it's approved from the dashboard.\nif (isEmpty(orderId)) logToConsole(TAG + ': no order_id, holding it without one');\n\nconst fbp = cookieFirst('_fbp');\nconst fbc = cookieFirst('_fbc');\nconst gclid = firstNonEmpty(\n  copyFromDataLayer('gclid'),\n  copyFromDataLayer('user_data.gclid'),\n  gclidFromUrl(),\n  gclidFromGoogleCookie()\n);\nconst fbclid = firstNonEmpty(copyFromDataLayer('fbclid'), copyFromDataLayer('user_data.fbclid'));\nconst eventTime = makeNumber(getTimestampMillis() / 1000);\n\nconst payload = {\n  event_name: 'Purchase',\n  payment_method: makeString(paymentMethod || 'cod'),\n  source: 'web_container',\n  event_time: eventTime,\n  event_source_url: getUrl()\n};\n\nif (!isEmpty(orderId)) {\n  payload.order_id = makeString(orderId);\n  payload.event_id = makeString(orderId);\n}\nif (!isEmpty(value)) payload.value = makeNumber(value);\nif (!isEmpty(currency)) payload.currency = makeString(currency);\nif (!isEmpty(email)) payload.email = makeString(email);\nif (!isEmpty(phone)) payload.phone = makeString(phone);\nif (!isEmpty(fbp)) payload.fbp = makeString(fbp);\nif (!isEmpty(fbc)) payload.fbc = makeString(fbc);\nif (!isEmpty(gclid)) payload.gclid = makeString(gclid);\nif (!isEmpty(fbclid)) payload.fbclid = makeString(fbclid);\n// Only the product fields PixelFly keeps, so the hold fits in a URL.\nfunction compactItems(list, nameLength) {\n  if (getType(list) !== 'array') return undefined;\n  const out = [];\n  for (let i = 0; i < list.length; i++) {\n    const it = list[i];\n    if (getType(it) !== 'object') continue;\n    const row = {};\n    const id = firstNonEmpty(it.item_id, it.id, it.content_id);\n    const name = firstNonEmpty(it.item_name, it.name, it.content_name);\n    if (!isEmpty(id)) row.item_id = makeString(id);\n    if (!isEmpty(name) && nameLength > 0) row.item_name = makeString(name).substring(0, nameLength);\n    if (!isEmpty(it.price)) row.price = makeNumber(it.price);\n    row.quantity = isEmpty(it.quantity) ? 1 : makeNumber(it.quantity);\n    out.push(row);\n  }\n  return out.length ? out : undefined;\n}\nif (!isEmpty(items)) payload.contents = compactItems(items, 80);\n// The shopper's GA client ID (from _ga: GA1.1.<id>.<time>), so GA4 links the confirmed\n// purchase to their visits.\nconst gaParts = makeString(cookieFirst('_ga') || '').split('.');\nif (gaParts.length >= 4) payload.ga_client_id = gaParts[2] + '.' + gaParts[3];\nconst firstName = firstNonEmpty(copyFromDataLayer('user_data.first_name'), copyFromDataLayer('user_data.address.first_name'), copyFromDataLayer('user_data.fn'));\nconst lastName = firstNonEmpty(copyFromDataLayer('user_data.last_name'), copyFromDataLayer('user_data.address.last_name'), copyFromDataLayer('user_data.ln'));\nconst fullName = makeString([firstName, lastName].filter(function (part) { return !isEmpty(part); }).join(' ')).trim();\nif (fullName) payload.name = fullName;\n// The shopper's IP and user agent are added by the PixelFly Worker from this request.\n\nconst extraRows = data.additionalFields;\nif (getType(extraRows) === 'array') {\n  for (let i = 0; i < extraRows.length; i++) {\n    const row = extraRows[i];\n    if (!row) continue;\n    const key = makeString(row.name || '').trim();\n    if (!key || isEmpty(row.value)) continue;\n    payload[key] = row.value;\n  }\n}\n\n// Cloudflare refuses URLs over about 16 KB, and a refused hold is a lost order. Keep it\n// under 12 KB: shorter product names, then no names, then fewer products.\nconst MAX_URL = 12000;\nfunction holdRequest() {\n  return holdUrl + '?k=' + encodeUriComponent(apiKey) + '&d=' + encodeUriComponent(JSON.stringify(payload));\n}\nlet trackingUrl = holdRequest();\nif (trackingUrl.length > MAX_URL && !isEmpty(items)) {\n  payload.contents = compactItems(items, 24);\n  trackingUrl = holdRequest();\n}\nif (trackingUrl.length > MAX_URL && !isEmpty(items)) {\n  payload.contents = compactItems(items, 0);\n  trackingUrl = holdRequest();\n}\nwhile (trackingUrl.length > MAX_URL && payload.contents && payload.contents.length > 1) {\n  payload.contents = payload.contents.slice(0, payload.contents.length - 1);\n  trackingUrl = holdRequest();\n}\nif (trackingUrl.length > MAX_URL) {\n  payload.contents = undefined;\n  trackingUrl = holdRequest();\n}\nconst body = JSON.stringify(payload);\n\nif (data.logToConsole) {\n  logToConsole(TAG + ' GET ' + holdUrl);\n  logToConsole(TAG + ' payload ' + body);\n}\n\nsendPixel(trackingUrl, data.gtmOnSuccess, data.gtmOnFailure);\n\n\n___WEB_PERMISSIONS___\n\n[\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"logging\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"environments\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"debug\"\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"get_cookies\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"cookieAccess\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"specific\"\n          }\n        },\n        {\n          \"key\": \"cookieNames\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 1,\n                \"string\": \"_ga\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"_fbp\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"_fbc\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"_gcl_aw\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"_gcl_dc\"\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"get_url\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"urlParts\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"any\"\n          }\n        },\n        {\n          \"key\": \"queriesAllowed\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"any\"\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"read_data_layer\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"keyPatterns\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 1,\n                \"string\": \"ecommerce.*\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"transaction_id\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"order_id\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"value\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"currency\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"email\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"phone\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"payment_method\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"items\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"user_data.*\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"gclid\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"fbclid\"\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"send_pixel\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"allowedUrls\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"any\"\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  }\n]\n\n\n___TESTS___\n\nscenarios: []\n\n\n___NOTES___\n\nPixelFly COD Protection (Web) — GTM web container tag\nVersion 1.0.0\n\nSends COD purchase to {host}/cod/hold via sendPixel GET (?k=&d=), same transport pattern as PixelFly /e.\n\nIMPORTANT:\n- If you already use sGTM \"PixelFly COD Protection\" tag → do NOT also fire this web tag (duplicate holds).\n- Recommended with sGTM: web only forwards purchase → sGTM; hold happens in sGTM.\n- Use this web tag for proxy-only setups, or when you intentionally hold from the browser.\n\nTrigger: purchase + payment_method equals cod (or rely on skipIfNotCod).\nPause browser Meta/Google/TikTok Purchase tags for COD.\n"
            }
        ]
    }
}