I'm automating our direct mail in the US via Marketo and webhooks. I first started out doing this via an engagement program but found, annoyingly, that if a person is marked as "unsubscribed" in Marketo then an engagement email cast OR program cast won't work. Despite the fact I'm trying to send direct mail, not emails, and the check for opt-out is on a different field. Sigh.
So now I'm trying to replicate the "queue" of an engagement program with Marketo smart campaigns. Here's what I have so far:
1 master smart campaign which will run weekly.
n (currently 3) sub programs, one for each direct mail piece, which contain a smart list named "targets", and a smart campaign with "campaign is requested" to fire a webhook.
So the master smart campaign has a bunch of criteria for entry (ensure they have a valid address, haven't received anything recently, etc etc) but only one flow step: Request Campaign. Within this, I have choice steps. It looks like this....
1a. If Member of Smart List is Direct Mail 1.Targets, then Request Campaign Direct Mail 1 (to fire the appropriate webhook).
1b. If Member of Smart List is Direct Mail 2.Targets, then Request Campaign Direct Mail 2 (to fire the appropriate webhook).
The idea is that I set my priority by putting choice steps either higher or lower. And once it finds a match, it stops going down the list on a lead-by-lead basis.
I haven't run this yet. But I have a concern in that since each "Targets" smart list has about ten criteria and takes a few minutes to run. So if I'm pushing 20,000 people through this campaign, it's likely going to take a long time, right? Any risk this will error out? It's no issue if it takes 5 hours, just that it works!
All this to replicate what an Engagement Program should do....be multi-channel aware when it comes to unsubscribe
I absolutely share your concern about performance and the individual lookups in a bulky Smart List (you might want to change the thread title btw).
Recommend using a Segmentation instead.
Unfortunately I can't use Segmentations since there could be potentially twenty of these....and as you know you hit a cap on those at 20. Damn.
I might just have to try it with a small subset of the list, see how many go through, then expand from there.
You might consider pre-computing your target lists well ahead of time, using scheduled batch smart campaigns within the child programs that adds people to a static list representing the targets for that program. This allows you to run those more complex queries at a time that will minimize disruption and load on the campaign queue.
Then when you run your master campaign, refer to the static list memberships in the choices of the request campaign flow step instead of the smart lists.
This assumes that the targeting criteria is based on relatively static properties and that any dimensions that need to be "up to the minute" (such as subscription status) are considered in the smart list of the master campaign.
Yeah I did consider this, but then we get a bit more complexity. I'd love for people to be able to understand it when looking at it.
I think I'll keep the smart list structure - it took about 24 hours to run (ouch) but since it's direct mail and not responding to a customer interaction....waiting a day or so isn't really a problem. Thanks for your thoughts team!