Expand my Community achievements bar.

Join us at Adobe Summit 2024 for the Coffee Break Q&A Live series, a unique opportunity to network with and learn from expert users, the Adobe product team, and Adobe partners in a small group, 30 minute AMA conversations.
SOLVED

Can processing rules be applied to concatenate merchandising evar to context data?

Avatar

Level 3

Hi everyone, 

Could you please help me debug the following issue with using merchandising and context vars in the processing rule? 

We are passing one conversion variable (evar63) as a merchandising var in the s.products:

s.products = “Category; SKU;;;event85=1;evar63=’id_1’"

ON the same s.t() call, we are passing the current date via context variable ('currdate'):

s.contextData["currdate"] = new Date().toMMDDYYYYString();

Then, we would like to overwrite the original value of evar63 with the concatenated values of evar63 and context data (currdate). The processing rule is:

- If evar63 is Set, then  Overwrite value of evar63 To Concatenated Value of evar63, currdate(Context Data) using a pipe (|) delimiter.

Unfortunately, this setup didn't work and we are still getting the original, not concatenated values in the evar63 report.

I was confused because the Help section mentioned, 'The product string, referrer, and user agent cannot be changed' (http://microsite.omniture.com/t2/help/en_US/reference/processing_rules_about.html). 

Is merchandising evar should be considered a part of product string and can NOT be altered? The Customer Care rep assured it can be since it is available in the drop-down menu of the processing rule. 

Did anyone tried to use merchandising var and context data in the same processing rule?

Thank you!

irina

1 Accepted Solution

Avatar

Correct answer by
Level 3

Harry, do you remember if your Merchandising evar used Product Syntax or Conversion variable syntax?

I've got Client Care confirmation that merchandising evar set up with Product Syntax can not be used in the processing rules to overwrite another variable.

thanks!

irina

View solution in original post

14 Replies

Avatar

Employee

Hi Irina,

Processing rules cannot alter any part of the product string. The outlined approach will not work at this time through processing rules. The below statement is correct form the Help site:

http://microsite.omniture.com/t2/help/en_US/reference/processing_rules_about.html

The product string, referrer, and user agent cannot be changed.

Referrer and user agent are read-only. The product string is not available.

Best,

Brian

Avatar

Level 3

Brian, thank you

I wish merchandising evars could me manipulated via processing rules.

Well, i'm testing the workaround with an additional variable. I assumed that the value of a merchandising evar can still be copied to another evar via processing rules. Is my assumption correct? 

So, we are passing the merchandising evar in the s.products on s.t() call together with a context data variable:

s.products="Category;SKU;;;event85=1;evar63=id_1"

s.contextData["currdate"]=new Date();

Then, i copy the value of evar63 to a new evar64 concatenated with context 'currdate' via processing rule:

- If evar63 is set, then Overwrite value of evar64 to Concatenated Value of evar63, currdate(Context Data) using a pipe (|) delimiter.

I'm concerned about the events allocation though.... Will the incrementing events (event85 in the s.products string) allocate to evar63 be still allocated to the new evar64?

Thanks!

irina

Avatar

Employee

Hi Irina,

It is less an issue with merchandising eVars and more the current limitation with processing rules to alter the product string. You are right to be concerned with the workaround as it will not work in the manner you intend since eVar64 will be outside the product string and the event allocation will be off. The only course I see forward is setting the eVar63 value to the exact value you want it to be within the product string from the start.

Best,

Brian

Avatar

Level 3

Hmmm, that's quite unfortunate :-(. I can't really set the concatenated value of evar63 and the current date into s.products. It will break all s.products & image request character limits. And i absolutely need these ids be processed with the dates because it will be used for the date-specific classifications.

OK, one more workaround theory (and a question). If i pass the incrementor event to s.events, set merchandising evar63 into s.products, pass another empty evar64 on the same call and then - copy the merchandising evar's value to the new evar64 concatenated with the current date - will the event allocation be saved?

Something like this:

s.events="prodView, event85=1"

s.products="Category;SKU;;;;evar63=id_1"

s.evar64="[null or dummy value]"

 

Also - if i set event85=1 in s.events, it will be applied to all products in the s.products string. And i'd like to avoid it. What would be the best way to have event85 in s.events and not applicable to all products?

s.events="prodView, event85=1"

s.products="Category;SKU;;;;evar63=id_1,

                   Category;SKU_2;;;event85=0"

or

s.events="prodView, event85=1"

s.products="Category;SKU;;;;evar63=id_1,

                   Category;SKU_2;;;event85=-1"

Does event85=0 passed in s.products overwrite event85=1 passed in s.events? 

Or - can negative numbers be passed as numeric events? Will event85=-1 (passed into s.products) zero out event85=1 (passed in s.events)? 

What is the best way to zero out the total value of a numeric event per certain evar?

Thanks!

irina

Avatar

Employee

Hi Irina,

Neither of the two workarounds will produce the desired reporting impact. If the event allocation needs to tie at a distinct product level then it needs to be included as such in the products string. Also the merchandising Custom Conversion variable must be set on a per product level to function correctly with the right event attribution as I understand the intent. I would recommend reviewing the merchandising custom conversion variable documentation in terms of the product string to spur further implementation approach ideas:

http://microsite.omniture.com/t2/help/en_US/sc/implement/var_merchandising.html

http://microsite.omniture.com/t2/help/en_US/sc/implement/var_merchandising_impl.html

Best,

Brian

Avatar

Level 2

Hi Irina,

Maybe I'm overlooking something, but If you need the Merch eVar and current date together for future classification, wouldn't a simple Data Warehouse request do the job?

Best,

Harry

Avatar

Level 3

Hi Harry, 

Thanks for your reply. I'm not sure if i know how to implement your suggestion. I need to capture the merchandising evar, concatenate it to the current date, and then classify the combined value. Are you saying that i can create a classification based on 2 variables at the same time (merchandising evar and date fired separately)? I haven't heard of that....

In my project, i need to classify the evar+date combination to preserve the historical changes made to some classification attributes. I can classify the merchandising evar alone, but any future classification uploads will wipe the historical data away. Which is a bad solution to my problem. Is there a way to either concatenate the merchandising evar to the current date context variable (preserving all the event allocations to this evar) and upload the classification based on this combined variable OR upload the classification to the merchandising variable but keep the historical values untouched with every future classification upload?

 

Thanks!

 

irina

Avatar

Level 3

Hi Harry, 

Thanks for your reply. I'm not sure if i know how to implement your suggestion. I need to capture the merchandising evar, concatenate it to the current date, and then classify the combined value. Are you saying that i can create a classification based on 2 variables at the same time (merchandising evar and date fired separately)? I haven't heard of that....

In my project, i need to classify the evar+date combination to preserve the historical changes made to some classification attributes. I can classify the merchandising evar alone, but any future classification uploads will wipe the historical data away. Which is a bad solution to my problem. Is there a way to either concatenate the merchandising evar to the current date context variable (preserving all the event allocations to this evar) and upload the classification based on this combined variable OR upload the classification to the merchandising variable but keep the historical values untouched with every future classification upload?

 

Thanks!

 

irina

Avatar

Level 2

It was more meant as: a Data Warehouse request can get you all the data you want related to the Merchandising eVar, including the date stamp, to create all the reporting needed. On overwriting a Merch eVar: I've tried this out (overwritten it, with some conditions set, to the value of referring url) and it worked perfect. Used rule builder to break the 'URL value'  in pieces and classify them. It stayed tied to the product string.

Avatar

Level 3

HI Harry, 

Using Data Warehouse is possible, but quite challenging for a regular business user. This is an option, but i'm still looking for a way to implement the classification of a concatenated merchandising evar + currdate.

RE: Overwrite merchandising evar to another variable - that sounds promising! I'm not sure why, but it doesn't work for me. Did the new variable (URL) inherit the events allocated to the merchandising evar?

I'm using:

s.events = “prodView,event85=1”

s.products="Modules; Mod001;;;;evar64=’CMS_ID1’,

                    Modules; Mod001;;;;evar64=’CMS _ID2"

s.evar63="0"

 

Then, i applied a simple processing rule (with no conditions for simplicity):

'Overwrite evar63 to concatenated value of evar64, context data (currdate) delimited by a pipe (|).'

Unfortunately, this approach pulls the date, but not the merchandising value and results in something like:

|07/14/2014

instead of 

556755|07/14/2014

So, i'm still puzzled what is it happening  and what can be done.

I've asked Customer Care  - they've been investigating it for about a week now :-)

 

thx!

 

irina

Avatar

Level 2

It used the Product Syntax. I sure believe you can't overwrite another variable with it. You just would pass on the naming, 33302, or Sweatshirt 22440. Not the product syntax incl events that are attached.

But in my experience you can rename it (overwrite with other value) and the product syntax will stay tied to it. Same for productviews, add to basket, etc. Worked out pretty good for me. I still don't understand why your rule doesn't work. Stupid question, but have to ask: your context variable. Do you assign it's value with a processing rule? This isn't setup after your processing rule for the eVar63 is it?






, and the Product Syntax and events will stay tied to it. At least... worked pretty good for me.

Avatar

Correct answer by
Level 3

Harry, do you remember if your Merchandising evar used Product Syntax or Conversion variable syntax?

I've got Client Care confirmation that merchandising evar set up with Product Syntax can not be used in the processing rules to overwrite another variable.

thanks!

irina

Avatar

Level 3

Harry, thank for your input. Indeed, it should be something really simple.

Are you saying you were able to overwrite the merchandising evar with other value and the product syntax stayed intact? Doesn't it contradict to Adobe Help section  where 'The product string, referrer, and user agent cannot be changed' (http://microsite.omniture.com/t2/help/en_US/reference/processing_rules_about.html). ?

It was my very first attempt to concatenate the values and it didn't work.

We are passing one conversion variable (evar63) as a merchandising var in the s.products:

s.products = “Category; SKU;;;event85=1;evar63=’id_1’"

ON the same s.t() call, we are passing the current date via context variable ('currdate'):

s.contextData["currdate"] = new Date().toMMDDYYYYString();

Then, we would like to overwrite the original value of evar63 with the concatenated values of evar63 and context data (currdate). The processing rule is:

- If evar63 is Set, then  Overwrite value of evar63 To Concatenated Value of evar63, currdate(Context Data) using a pipe (|) delimiter.

 

Then i tried to write merchandising evar into another one concatenated to the current date. Didn't work either.

s.products="Modules; Mod001;;;;evar64=’CMS_ID1’,

Then, i applied a simple processing rule (with no conditions for simplicity):

'Overwrite evar63 to concatenated value of evar64, context data (currdate) delimited by a pipe (|).'

 

I even looked at the datafeeds and found out that the merchandising evar64 isn't getting written to either evar64, post_evar64, or product_merchandising fields. I think - this is the root of the problem since Processing rule has nothing to pick up from evar64. Client Care confirmed that this works as designed and can't be implemented to accomplish my goal..... Sigh...

                           
date_timeevar63post_evar63evar64post_evar64post_product_listproduct_listproduct_merchandising
9:34:39 AM0|07/15/2014  Modules;Mod100;;;,Modules;Mod100Modules;Mod100;;;;eVar64=554672,Modules;Mod100;;;;eVar64=550683 

Re :Context data  - it is set on the same call with s.products / evar63 / evar64 / etc. It is written in the s_code and seems to fire just fine. I assume it isn't the cause of the problem since this is the only part of the concatenation rule that actually works. 

thx

Avatar

Level 2

The Mer eVar is using the Product Syntax. I sure believe you can't overwrite another variable without losing the product syntax. But  I'm confident that you can rename it, an the product syntax incl events will stay tied to it.

I still don't understand why you don't succeed in your goal. I feel sure it can be done and we're overlooking something simple. Stupid question, but I have to ask: the context variable for the actual date, does it assign it's value through a processing rule? This rule isn't setup after the eVar63 rule is it?

I wonder btw what would happen if you would, before the eVar63 processing rule, setup a processing rule which catches the value of eVar63 in a new prop. And in the rule you've setup  concatenate the value of this prop and the value of the context variable curr. date. I come up with this cause I don't know what happens when you ask the system basically to delete a value, and overwrite it with itself. It can be done in programming, Python for example would accept it. But I don't know how Omniture handles this.