Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

Don't send event if the eVarX value is the same as last time

Swanan_
Level 3
Level 3

Hey Community.
I'm currently looking for a look alike of getValOnce functionality.

Context: 
When my users are processing an internal search, an event1 is being triggered once he land on search page results. If the user click on a product page, and then go back to the search page results the event1 will be trigger again.


My question is the following:
Is there any way to not send an event (here the event1) a second time if the keyword (eVarX) value hasn't changed since last time?

 

Thanks a lot for your help here.

1 Accepted Solution
yuhuisg
Correct answer by
Community Advisor
Community Advisor

You could set a flag in sessionStorage or localStorage when event1 occurs. Then, you can read that back with a data element as a condition for whether you want to track event1 again.

View solution in original post

0 Replies
yuhuisg
Correct answer by
Community Advisor
Community Advisor

You could set a flag in sessionStorage or localStorage when event1 occurs. Then, you can read that back with a data element as a condition for whether you want to track event1 again.

View solution in original post

Swanan_
Level 3
Level 3
Hey Yushuisg, thanks for your advice here. I'll try to do that and update that comment if it's working well. Thanks a lot !
Swanan_
Level 3
Level 3

Hello Yuhuisg,

 

I have another question regarding the tip you gave me.

 

So I tried to create a data element using sessionStorage with some custom code like this :

 

sessionStorage.setItem('searchTerm', digitalData.page.pageInfo.onsiteSearchTerm);

 

 

Then I added the following condition(also in custom code) to my rule which is sending the event1: The goal is to compare the eVar10 value with the new Data element I just created. If both value doesn't match, then event1 is being fired.

 

 

if(_satellite.getVar('Adobe Analytics - Search - Term') !== _satellite.getVar('Adode Analytics - Search - Term SessionStorage'));

 

 

So now I just have a last question because I'm not sure how to proceed. Once the event1 has been fired, I need to update the value of the 'Adode Analytics - Search - Term SessionStorage' but I'm not sure how to proceed here.

 

Do you have any advice here ?

Thanks a lot.

yuhuisg
Community Advisor
Community Advisor

@Swanan_that's actually the wrong approach. Your data element should use "sessionStorage.getItem()", not "sessionStorage.setItem()", since you're reading the sessionStorage's value. Tip: instead of using custom code to read the sessionStorage's value, you should use the Core > Session Storage data element type.

Then in your rule to send event1, you can have 2 actions: one does the comparison, and that should be inside an Adobe Analytics > Set Variables action's Custom Code. The other rule action is to run "sessionStorage.setItem()" to set the sessionStorage with your search term. Tip: you can use the 3rd party "SDI Toolkit" extension, which has a "Web Storage Setter" action type, to set your sessionStorage.

So, putting it all together, you have:

1. A data element of type Core > Session Storage, and the Session Storage Item Name is "searchTerm".

2. The rule that sends event1 has 2 actions:

2.1. Adobe Analytics > Set Variables: inside the Custom Code, use your "if" statement:

 

if(_satellite.getVar('Adobe Analytics - Search - Term') !== _satellite.getVar('Adode Analytics - Search - Term SessionStorage')) {
  s.events = "event1";
  // do other things
}

2.2 SDI Toolkit > Web Storage Setter: set the Item Key to "searchTerm" and Item Value to the data element for "digitalData.page.pageInfo.onsiteSearchTerm".

 

Swanan_
Level 3
Level 3

Hello @yuhuisg, thanks again for your help on the subject. Everything is very clear.

 

I have one last question.

 

My rule which is sending event1 is sending another event at the same time (this one we need it every time).

 

Until now, the setup of this rule is the following :

Actions (only one action at the moment) > Adobe Analytics > Set Variables > Events > Event1 & Event36.

 

So I will delete the event1 from this action and create a new specific action with the custom code you mentioned.

As we specify in the custom code "s.events = event1", will it still count the first action and send the event36 then check if it needs to add event1? Or this will delete Event36 and send only event1?

 

The rest is super clear and again, thanks for your time and your help on this subject.

yuhuisg
Community Advisor
Community Advisor

@Swanan_it will delete event36 and keep event1. You should append event1 to the s.events string instead.

The safest way is to install the "Common Analytics Plugins", then enable the "apl" plugin. Then in your action's custom code, instead of using "s.events = 'event1'", you'd use

s.events = s.apl(s.events, 'event1');
Swanan_
Level 3
Level 3

Hello @yuhuisg,

I finally solved my issue thanks to your advices. Thanks a lot.