Compare values from 'custom activity' to 'visits web page filter / trigger' in a smart campaign | Community
Skip to main content
Level 3
December 4, 2019
Question

Compare values from 'custom activity' to 'visits web page filter / trigger' in a smart campaign

  • December 4, 2019
  • 1 reply
  • 4717 views

Scenario:

We are developing a system in Marketo that checks website product pages that our customers visit (Can Marketo identify specific information (i.e. product sku) on a webpage ) to products that our customers have ordered, or been quoted, in a certain timeframe (Whats the best way to store order, quote and product information in Marketo . We actually went with custom activities in the end).

So now we have quotes/orders coming in as custom activities, with the product SKU as a field. We will soon be able to use the 'visits webpage' filter/trigger with the 'QueryString' constraint so we know what customers have looked at on the website.

I had thought (vaguely, I admit) that I could use a SMART campaign to compare products looked at on the website against products quoted/ordered, and if there was no match, then perform flow action (increase score, add to program, add to list etc). Maybe using tokens, because I don't want to set up a smart campaign for every product SKU (around 2500). However, when it actually came to, I can't see a way of doing it using standard smart campaign functionality.

I would appreciate any ideas on how to make 'compare' bit of this system work, or other approaches to achieve the end goal: "If a customer is looking at a product on our website that they haven't ordered or been quoted, then perform a flow action in Marketo"

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

1 reply

Level 3
December 11, 2019

@Sanford Whiteman‌ @Jay Jiang‌ you have both been very helpful on my questions in the past - do you have any suggestions here? Or is the question not clear enough?

SanfordWhiteman
Level 10
December 11, 2019

I wouldn't have used Custom Activities, they are almost never the right fit and people tend not to think about wider needs such as this.

If you'd used JSON (Textarea) fields instead, you could do the comparison in a webhook.

If you'd used Custom Objects instead, you'd be in a slightly better situation because you could use an email processing endpoint, together with Velocity, to do the comparison. Still not a particularly comfortable place, but at least you'd have something to draw on.

With CAs there's no way can think of to make this comparison logic happen within (or originating from) Marketo.

Jay_Jiang
Level 10
December 12, 2019

Having custom activities set up isn't so bad. if you have a spare data scientist lying around, I'm sure they'd appreciate the amount of data you're collecting and might give you a nice model in return.

@Barry Dupont To the problem at hand, regardless how you identify the the SKUs that a person hasn't purchased, what makes this a hard problem is the amount of SKUs you have. At every step of the way you need to be thinking about scale. So one thing you haven't mentioned, if you have data of a person who e.g. has visited pages but has not purchased products 123,546,2398... What do you plan to do specifically?

Without knowing what you plan to do with the data, the first question that comes to mind is, can you not use something a few levels up like a product family instead of individual SKUs?

Other than creating smart lists (e.g. visited webpage for product 123 AND NOT Purchased product 123), Marketo is horrible at comparisons between fields - and I get it you don't want to be creating 2500 smart lists. Basically, I agree with Sanford that you need to use webhooks, i.e. send fields to be compared, via webhook, to a service that can. In fact for most things that need scale, webhooks is the way to go (typing some lines of code beats creating multiple assets in Marketo)

So, to even get to the point where you can identify a set of products that individuals have not purchased but have viewed, I would set up 2 custom fields. One for storing the visited/quoted/purchased data, one purely for marketable SKUs. Because dates matter, the data in these should be json format. To actually populate these fields and keep them updated, use webhooks OR if you have a custom CRM integration, your middleware might be able to.

e.g. sku raw data

{
"visited":
[
{"sku":123,"date":"2019-04-23"},
{"sku":345,"date":"2019-05-28"},
{"sku":666,"date":"2019-09-11"},
{"sku":9001,"date":"2019-11-12"}
],
"quoted":
[
{"sku":345,"date":"2019-06-13"},
{"sku":666,"date":"2019-11-19"}
],
"purchased":
[
{"sku":666,"date":"2019-12-01"}
]
}‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

business rules: marketable within 6 months of visited or quoted (whichever latest)

marketable SKUs = [345,9001]

when an input changes, i,.e. however you're collecting visited, quoted, puchased sku data, you'd need to call a webhook to update the json data and spit out the marketable SKUs based on what ever date range business rules you've decided