Expand my Community achievements bar.

SOLVED

Using "event.identifier" in data element results in undefined return value

Avatar

Level 4

I have this bizarre behaviour when using event.identifier in a data element.

Background: I have several Direct Calls that actually perform the same action, but set a different s.events. So instead of creating one rule per Direct Call, I created one single rule and put all my Direct Calls in the rule’s Events

Then I created a data element (storage duration = None) to use a switch-case to map the Direct Calls’ event.identifier to the appropriate s.event

switch (event.identifier) {
  case 'foo':
    return 'event100';
  case 'bar':
    return 'event200':
  // etc
}

Now, this is where the strangeness comes in:

In my rule’s Adobe Analytics action:

  • If I use my data element with an eVar, i.e. as %data element name%, then my s.event gets set properly. (I know I’m not supposed to set an s.event in an eVar, but this is for troubleshooting.)
  • BUT if I use my data element in the AA’s custom code, i.e. s.events = _satellite.getVar('data element name'), then I get the data element’s default value! This is because event is apparently undefined inside my data element. that’s what the Adobe debugger’s log shows me: “Failed to execute data element module core/src/lib/dataElements/customCode.js for data element data element name. Cannot read property ‘identifier’ of undefined”
  • In fact, if I use _satellite.getVar('data element name') anywhere, e.g. even with _satellite.logger.log(_satellite.getVar('data element name')), I get the undefined error.

I realise that event.identifier is undocumented, but I learned about it in the Launch community forum, and have got it working for other use cases. So I can’t figure out this particular problem for the life of me.

I also realise that I could move my data element’s switch-case into the AA custom code itself, but I wanted to separate this logic out in case I need to use the s.event somewhere else (for whatever reason).

So does anyone know why my data element would work when got with %…%, but fail when got with _satellite.getVar()?

1 Accepted Solution

Avatar

Correct answer by
Level 4

Solved.

I should use _satellite.getVar('data element name', event).

View solution in original post

1 Reply

Avatar

Correct answer by
Level 4

Solved.

I should use _satellite.getVar('data element name', event).