Expand my Community achievements bar.

Help shape the future of AI assistance by participating in this quick card sorting activity. Your input will help create a more effective system that better serves your needs and those of your colleagues.

Adobe Client Data Layer triggered Rules overlaps their Variables

Avatar

Level 2

Hi everyone! can anybody educate me or if ever this has happened to anyone wherein two Adobe Client Data Layer fired s.tl() rules are sharing their variables even when both of these rules have their own Send Beacon and Clear Variables action? This is intermittently happening and cannot be replicated in manual but in the reports, we are getting hits on this scenario. 

 

Your comments will be much appreciated.

2 Replies

Avatar

Community Advisor

Yes, that can happen when there are two concurrent pushes into ACDL at very, very, very, very close intervals.

When you push into the ACDL, this happens:

push object into ACDL --> ACDL script re-evaluates its internal computed state --> ACDL variables are now available from the computed state for use as data elements

But when there are multiple, concurrent pushes that occur one after the other immediately, then it is possible that ACDL is still re-evaluating its computed state for an earlier push when a later push occurs. By the time ACDL's computed state is ready to be used in data elements, it would have all of the pushed data at the same time.

One workaround that I've tried is to push "eventInfo" objects and use the data there in my Rules. "eventInfo" objects are reserved in ACDL and don't get evaluated into the computed state.

adobeDataLayer.push({
  'event': 'first push',
  'eventInfo': {
    'variable': 'foo',
  },
});
adobeDataLayer.push({
  'event': 'second push',
  'eventInfo': {
    'variable': 'bar',
    'anotherVariable': 'baz',
  },
});

The drawback with this method is that you have to use custom code to get the "eventInfo" data, because the ACDL extension doesn't have any data element to get it. So, in your Rule where you have a ACDL "Pushed Event" event, you can use this custom code to get the data:

// `event` is the event object returned by the ACDL Pushed Event
s.eVar7 = event.message.eventInfo.variable;

See if that works for your situation.

Avatar

Level 2

Thanks for your input but the problem here is not on the ACDL but in the reports. 

ACDL 1 - fires Rule 1 (with custom event 1, prop1)
ACDL 2 - fires Rule 2 (with custom event 2, eVar1)

 

The thing is, the variables that Rule 1 is firing gets attributed with the event from Rule 2 and vice versa. 

In the reports:

prop1 - 1 hit of event1 and 1 hit of event2
evar1 - 1 hit of event1 and 1 hit of event2

Even though Rule 1 and Rule 2 both have their own Send Beacon and Clear Variables Actions.

 

How is this possible?