Expand my Community achievements bar.

Webinar: Adobe Customer Journey Analytics Product Innovations: A Quarterly Overview. Come learn for the Adobe Analytics Product team who will be covering AJO reporting, Graph-based Stitching, guided analysis for CJA, and more!

Tuesday Tech Bytes - Customer Journey Analytics - Week 6 - Tips & Tricks II

Avatar

Community Advisor

8/13/24

Over the last six weeks, we’ve covered a wide variety of topics surrounding CJA.  We’ve covered Golden Nuggets, Tips & Tricks, Best PracticesIntegrations, and Use Cases.  This week we’ll wrap up with a second helping of Tips & Tricks.

Marketing channel categories

I recently published a blog post giving an overview of CJA marketing channels and walking through the process of setting them up.  One note to callout, however, is that derived fields are limited in their complexity.  Depending upon your marketing channel rules, you might find that you’re not able to add more to the mix.  It’d be nice if derived fields could have increased complexity.  It’d be even better if you could use a derived field in another derived field.  Now if you try to do so, a copy of the derived field logic is made in the new field, so the same complexity limitations apply.

In that post, I walk through setting up channels and details in the same derived field, a tip shared at Summit this year.  (This session is a filled with great tips and a fun listen, especially for those who love Dungeons & Dragons!)  Doing this reduces the maintenance of needing to ensure two separate derived fields are in sync.

To extend this a bit, today we’ll look at adding a marketing channel category to the mix.

If you haven’t already read the initial blog post, I’d recommend doing that first.  Then return to this thread for another cool tip.

Now that you’ve set up and tested your marketing channels, here’s an easy way to categorize the channels.  One of my clients wanted to see paid vs. non-paid channels.  This is a prime example of leveraging another step in the derived fields.

Before our final concatenation, I’ll add another Case When function.  I’ll use this to categorize each channel.  First, I’ll list the paid channels and give them an appropriate category name. 

Josh__Stephens_19-1723489513173.png

 

Then click add condition and list the unpaid channels in an Else If statement.

Josh__Stephens_20-1723489513174.png

 

Next, I’d recommend setting up a catch all rule for marketing channels that you haven’t yet categorized.  If channel isn’t set, set the category to No value.

Josh__Stephens_21-1723489513177.png

 

Now you’ll update your concatenation to add in the newly created category.  In the preview in my screenshot, you’ll see the results.

Josh__Stephens_22-1723489513180.png

 

After saving your derived field, you’ll need to add a new dimension.  Based upon your concatenation, you may also need to update the channel & channel details dimensions.  Be sure  persistence is set consistently on each dimension.

You’ll end up with the ability to easily categorize the channels and break them out cleanly.  In the future when the logic changes, only one derived field will need to be updated.

Josh__Stephens_23-1723489513184.png

 

Converting a dimension to a metric

CJA allows great flexibility in using components in new ways.  One new feature is the ability to create a metric from a dimension.  There are many use cases. 

For example, let’s say you have a dimension that captures when modules are loaded on a webpage, but there’s no related impressions metric that was implemented.  If a stakeholder wants to see when new product carousels load, you can build a metric specifically for that use case. 

You’ll start by duplicating the appropriate dimension in the data view components screen.  If you’re not familiar with that process, you’ll highlight the dimension and click duplicate. 

Josh__Stephens_24-1723489513187.png

 

Then be sure to select the new dimension before making any changes.  The new dimension will be identified with a number in parathesis following the dimension name.

Josh__Stephens_25-1723489513189.png

 

Now, you’ll click on the component type dropdown and change the component to a dimension.  Initially, the metric will increment each time the dimension is set. 

Josh__Stephens_26-1723489513190.png

 

If you want to only increment in certain conditions, you’ll adjust the include/exclude values section.  In our example, we’ll filter to only increment when the modulesLoaded field contains the phrase “new product”. 

Josh__Stephens_27-1723489513192.png

 

To finish the process, give the metric a clear name (a below), description (b), and component ID (c).  After saving your changes to the data view, validate the metric reports values as expected.

Josh__Stephens_28-1723489513194.png

 

Creating a new metric at the data view level allows users to easily and clearly report on a metric that didn’t exist before.

There are ways to create similar calculated metrics or use filters and events metrics in freeform tables.  Creating a new metric in CJA overcomes some of the limitations of other approaches.  Calculated metrics cannot be used in certain visualizations such as fallout, flow, cohort, and histogram. 

Converting a metric to a dimension

Similarly, CJA allows you to create a dimension from a metric.  A classic example here is bucketed revenue.  The process is similar however revenue bucketing happens on a product level.  Thus, your buckets would be based on each product in the order.  We’ll solve for that by using a new derived field function – summarize.  This function will sum the total of all items in the order using an event scope.  (You could also do this on a session or person scope to create buckets for total revenue per session or customer.)

Josh__Stephens_29-1723489513195.png

 

Next, you’ll add the derived field to the data view as a dimension.    Now you’ll select the value bucketing option and set up your buckets.  Here are my buckets for example.  I did not set persistence in this instance since it will only be captured on the hit where the order is placed.

Josh__Stephens_30-1723489513196.png

 

Now at a quick glance we can see order count, total revenue, and revenue per order for each of our order bins.

Josh__Stephens_31-1723489513199.png

 

Component substring settings

Finally, we’ll look at some of the ways component substring settings can be used.

These settings can be used to perform a variety of manipulations on strings. 

Delimiter

You can split a string based on a certain character.  You could use this to capture individual elements in a CID or other similar string.  You can also split into an array at each delimiter.  This can be used similarly to list vars in traditional Analytics.  For example, this can track an individual instance of each filter applied, when more than one are applied simultaneously.

The example below, will capture values before the first | delimiter in a string, starting from the left.  If the value doesn’t contain the delimiter, it will report No value.

Josh__Stephens_32-1723489513200.png

 

From left/right

You can capture certain portions of a string from the beginning or end, based on position or a specific string to match.

This example would capture the value following landingPage: in a value.  If the value doesn’t include landingPage, the dimension would return No value

Josh__Stephens_33-1723489513201.png

 

URL parse

Allows you to capture certain portions of a URL such as the host, path, or certain query string parameters.

These settings would report the CID from the URL.  If there’s no CID present, No value would be returned.

Josh__Stephens_34-1723489513201.png

 

Trim

Allows you to remove whitespaces and/or special characters.

Here we’d remove all whitespace from the beginning and ending of the string.  We’d also remove any of the special characters entered if they exist.  The trimmed string, without the whitespace and special characters, would be reported.

Josh__Stephens_35-1723489513202.png

 

RegEx

This very powerful feature allows a wide variety of ways to parse, manipulate, and match certain portions of strings.  There are many functions that can be used.  I’ve found RegEx useful to clean up index values parsed from a string (capture a certain element from a string, but only if it’s digit(s).  Using the output format to prepend or append.  For example, perhaps the SKU captured in clickstream doesn’t include a common prefix.  You can easily add that using RegEx.  There are a wide variety of RegEx tools available online.  One of my favorites is regex101.com where you can test your regular expressions to ensure they capture what’s desired.

This example would return any all-digits values after the last | delimiter in a string.  Any values that don’t meet the regular expression, would return No value.

Josh__Stephens_36-1723489513202.png

 

This example would return the same index value as above, with the word index prepended.

Josh__Stephens_37-1723489513203.png

 

While the derived field builder shows a real-time preview of recent data, that same preview isn’t available for component settings.  Wouldn’t it be nice if Adobe added that soon?  It’s so much easier to look over and see if the results are what you expect.  While it’s not too difficult to save the component and go to a Workspace project and refresh, it’d be nice to have a preview for components as well! 

Full details are available in Adobe’s documentation.

Conclusion

Over the last six weeks, we’ve covered a wide range of topics.  I hope these have been helpful and you learned at least a couple of things you didn’t previously know.  For me, one of the most exciting parts of CJA is seeing what’s coming next.  The team frequently releases enhancements and new features.  You can find these in the release notes.

If there’s been something in particular you’ve found helpful, or if you’d like to share some of your top use cases and best practices, I’d love to hear them!  Add a message in this thread or send me a message!

 

2 Comments