digital-masters
1/26/2026 - 3:45 PM

lock Event Enricher Tag by Stape – multiply by DM

___INFO___

{
  "type": "TAG",
  "id": "cvt_PHRV8",
  "version": 1,
  "displayName": "Event Enricher Tag by Stape – multiply by DM",
  "categories": [
    "UTILITY"
  ],
  "brand": {
    "id": "github.com_stape-io",
    "displayName": "stape-io \u0026 Digital Masters",
    "thumbnail": "data:image/png;base64,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\u003d\u003d"
  },
  "description": "This tag re-runs the container during an event, changes the event name, and enriches the Event Data, useful for using transformed data in triggers and variables.",
  "containerContexts": [
    "SERVER"
  ],
  "securityGroups": []
}


___TEMPLATE_PARAMETERS___

[
  {
    "type": "SIMPLE_TABLE",
    "name": "EventNameTable",
    "displayName": "Add Your Event Duplications",
    "simpleTableColumns": [
      {
        "defaultValue": "",
        "displayName": "",
        "name": "EventName",
        "type": "TEXT"
      }
    ],
    "help": "Event Name Table Each row triggers one new duplicated event with the specified EventName. \n\nAll resulting event names must be different from the incoming event name to avoid loops.  \n\nExample Incoming event: purchase Rows: purchase_copy1, purchase_copy2 → two new events are sent."
  },
  {
    "type": "CHECKBOX",
    "name": "copyCurrentEventData",
    "checkboxText": "Copy Event Data",
    "simpleValueType": true,
    "help": "Enable this option to copy the current Event Data parameters to the new event."
  },
  {
    "type": "GROUP",
    "name": "additionalEventDataParametersGroup",
    "displayName": "Additional Event Data Parameters",
    "groupStyle": "ZIPPY_OPEN_ON_PARAM",
    "subParams": [
      {
        "type": "LABEL",
        "name": "additionalEventDataParametersHelpText",
        "displayName": "Define additional Event Data parameters for the new event. If a parameter already exists in the current Event Data, its value will be replaced."
      },
      {
        "type": "SIMPLE_TABLE",
        "name": "additionalEventDataParameters",
        "simpleTableColumns": [
          {
            "defaultValue": "",
            "displayName": "Parameter name",
            "name": "name",
            "type": "TEXT"
          },
          {
            "defaultValue": "",
            "displayName": "Parameter value",
            "name": "value",
            "type": "TEXT"
          }
        ]
      }
    ]
  }
]


___SANDBOXED_JS_FOR_SERVER___

/// <reference path="./server-gtm-sandboxed-apis.d.ts" />

const getAllEventData = require('getAllEventData');
const makeString = require('makeString');
const runContainer = require('runContainer');
const logToConsole = require('logToConsole');

/*==============================================================================
==============================================================================*/

// Simple table: data.EventNameTable = [ { EventName: 'event_1' }, { EventName: 'event_2' }, ... ]
const eventNameRows = data.EventNameTable && data.EventNameTable.length
  ? data.EventNameTable
  : [];

if (!eventNameRows.length) {
  data.gtmOnSuccess();
  return;
}

// Loop protection: do not execute if any resulting event_name equals the incoming event_name
const incomingEventData = getAllEventData();
const incomingEventName = incomingEventData && incomingEventData.event_name
  ? makeString(incomingEventData.event_name)
  : '';

for (let i = 0; i < eventNameRows.length; i++) {
  if (makeString(eventNameRows[i].EventName) === incomingEventName) {
    logToConsole(
      'Event duplication aborted: resulting event_name matches incoming event_name:',
      incomingEventName
    );
    data.gtmOnSuccess();
    return;
  }
}

const additionalEventDataParameters = data.additionalEventDataParameters;

// Start with a copy of the incoming event data (if enabled), then apply overrides.
const baseEventData = data.copyCurrentEventData
  ? mergeObjects({}, incomingEventData)
  : {};

if (additionalEventDataParameters) {
  additionalEventDataParameters.forEach((d) => {
    // event_name is set per row from the table
    if (d && d.name && d.name !== 'event_name') baseEventData[d.name] = d.value;
  });
}

const eventsToSend = eventNameRows.map((row) => {
  const ev = mergeObjects({}, baseEventData);
  ev.event_name = makeString(row.EventName);
  return ev;
});

runCopiesSequentially(eventsToSend, 0, () => {
  data.gtmOnSuccess();
});

/*==============================================================================
  Helpers
==============================================================================*/

function runCopiesSequentially(events, index, done) {
  if (!events || index >= events.length) return done();
  runContainer(events[index], () => runCopiesSequentially(events, index + 1, done));
}

function mergeObjects(target, source) {
  for (const key in source) {
    if (source.hasOwnProperty(key)) target[key] = source[key];
  }
  return target;
}


___SERVER_PERMISSIONS___

[
  {
    "instance": {
      "key": {
        "publicId": "read_event_data",
        "versionId": "1"
      },
      "param": [
        {
          "key": "eventDataAccess",
          "value": {
            "type": 1,
            "string": "any"
          }
        }
      ]
    },
    "clientAnnotations": {
      "isEditedByUser": true
    },
    "isRequired": true
  },
  {
    "instance": {
      "key": {
        "publicId": "run_container",
        "versionId": "1"
      },
      "param": []
    },
    "isRequired": true
  },
  {
    "instance": {
      "key": {
        "publicId": "logging",
        "versionId": "1"
      },
      "param": [
        {
          "key": "environments",
          "value": {
            "type": 1,
            "string": "debug"
          }
        }
      ]
    },
    "isRequired": true
  }
]


___TESTS___

scenarios:
- name: New event name is passed to runContainer
  code: |-
    mock('runContainer', (eventData, onComplete, onStart) => {
      assertThat(eventData).isEqualTo({ event_name: expectedValue });
      assertThat(onComplete).isFunction();
      onComplete();
    });

    runCode(mockData);

    assertApi('gtmOnSuccess').wasCalled();
- name: Copied Event Data is passed to runContainer
  code: |-
    mockData.copyCurrentEventData = true;

    const expectedEventData = mergeObjects(expectedGetAllEventData, {
      event_name: expectedValue
    });

    mock('runContainer', (eventData, onComplete, onStart) => {
      assertThat(eventData).isEqualTo(expectedEventData);
      assertThat(onComplete).isFunction();
      onComplete();
    });

    runCode(mockData);

    assertApi('gtmOnSuccess').wasCalled();
- name: Additional Event Data Parameters are passed to runContainer
  code: |-
    // Must be set in the Event Data.
    mockData.additionalEventDataParameters = additionalEventDataParameters;

    // Expected that 'event_name' from expectedAdditionalEventDataParameters doesn't overwrite the event_name from input field.
    const expectedEventData = mergeObjects(
      { event_name: expectedValue },
      expectedAdditionalEventDataParameters
    );

    mock('runContainer', (eventData, onComplete, onStart) => {
      assertThat(eventData).isEqualTo(expectedEventData);
      assertThat(onComplete).isFunction();
      onComplete();
    });

    runCode(mockData);

    assertApi('gtmOnSuccess').wasCalled();
- name: Additional Event Data Parameters overwrite Copied Event Data and are passed
    to runContainer
  code: |-
    mockData.copyCurrentEventData = true;

    // Must be set in the Event Data and overwrite the Copied Event Data.
    mockData.additionalEventDataParameters = additionalEventDataParameters;

    const expectedEventData = mergeObjects(
      expectedGetAllEventData,
      mergeObjects(
        { event_name: expectedValue },
        expectedAdditionalEventDataParameters
      )
    );

    mock('runContainer', (eventData, onComplete, onStart) => {
      assertThat(eventData).isEqualTo(expectedEventData);
      assertThat(onComplete).isFunction();
      onComplete();
    });

    runCode(mockData);

    assertApi('gtmOnSuccess').wasCalled();
setup: |-
  function mergeObjects(target, source) {
    for (const key in source) {
      if (source.hasOwnProperty(key)) target[key] = source[key];
    }
    return target;
  }

  const expectedValue = 'test';
  const expectedClientHints = {
    architecture: 'arm',
    bitness: '64',
    full_version_list: [
      { brand: 'Chromium', version: '134.0.6998.89' },
      { brand: 'Not:A-Brand', version: '24.0.0.0' },
      { brand: 'Google Chrome', version: '134.0.6998.89' }
    ],
    mobile: false,
    model: '',
    platform: 'macOS',
    platform_version: '15.2.0',
    wow64: false,
    brands: [
      { brand: 'Chromium', version: '134' },
      { brand: 'Not:A-Brand', version: '24' },
      { brand: 'Google Chrome', version: '134' }
    ]
  };

  const expectedGetAllEventData = {
    page_location: expectedValue,
    page_referrer: expectedValue,
    client_hints: expectedClientHints
  };
  mock('getAllEventData', expectedGetAllEventData);

  const additionalEventDataParameters = [
    { name: 'event_name', value: 'must_not_be_set_as_event_name' },
    { name: 'page_location', value: expectedValue },
    { name: 'foo', value: expectedValue },
    { name: 'another_obj', value: { foo: expectedValue } }
  ];
  const expectedAdditionalEventDataParameters = {
    page_location: expectedValue,
    foo: expectedValue,
    another_obj: { foo: expectedValue }
  };

  const mockData = {
    newEventName: expectedValue
  };


___NOTES___

Created on 3/21/2025, 10:18:42 AM