I want an Engagement Program, but I want the time between sends – the “Cadence” in Marketo language – to be variable. 1 day between Email 1 and 2, and 3 days between Email 2 and 3 – how do I do that?

If you look at an Engagement Program you’ll see that the streams are supposed to send on specific days of the week. Can be one day of the week – every Tuesday – or more days – every Tuesday and Thursday – but two potential settings don’t work with this setup:
- You can’t define relative times, such as “three days after entering the program”
- You can’t vary your cadence within one stream, such as: Awareness Stream has three emails, and I want two days between the first two emails, but three days between the next two.
How do we create custom flows? With Smart Campaigns. So let’s bring Engagement Programs and Smart Campaigns together.
The “Asset Program”
If you add content to an Engagement Program’s Stream, you’ll see that there are two options:

You can add an email or a program. This decisions has various consequences, but for our use case we’ll use programs (it’s the superior choice anyway).
So what’s does “Asset Program” mean? These programs are also often referred to as “Nested” Programs, as they can be nested = placed underneath the EP, but they certainly don’t need to be, therefore I don’t really like the term. Functionally, they carry the content of the email, therefore I like to call them “Asset” Program.
The Asset Program is your – say – standard Whitepaper Download program. Ideally you follow best practices and create this content via program cloning and program tokens, and this program has an email, a landing page and a thank-you-page and at least one Smart Campaign that sends the email through the Engagement Program.
In its minimal form it looks like this:

Now what’s in this Smart Campaign exactly? Let’s take a look.
Smart List

The Smart List section only specifies that the Engagement Program “Customer Lifecycle” calls this Smart Campaign. You can add “Stream” as an additional constraint, but you don’t need to. In fact: If you want to use this Smart Campaign in more than one stream of your EP, you shouldn’t use a constraint.
Flow

This is the minimal setup for the Flow. It sends the email – no surprise here, right? – and it changes the program status in the Asset Program. This is an important step, as it’s necessary that the recipient of the email becomes a member of that program. Program Membership in Asset Programs is relevant for the EP’s inherent feature of content skipping. To be precise: A person who is already a member of this Asset Program will not receive any emails through the Engagement Program that uses this program.
Schedule
No need to touch Schedule. Schedule is controlled by the Stream Cadence.
Add to Stream
Now let’s add this Asset Program – actually its Smart Campaign – to the EP. Hit “Add Content” or the plus sign in your Stream:

Select the program and then the Smart Campaign:

Your Stream Content is now a Program. It will send the email every Tuesday as that’s what the Stream cadence dictates. But now we have a Smart Campaign we can do vicious things with!
The Variable Cadence
First thing to do is set the Stream Cadence to fire every day of the week:

Because we want to control the cadence from now on through the Asset Program’s Smart Campaign.
And now we add flow steps to the Smart Campaign:

So it sends the email (Flow Step 1), changes the Program Status (Flow Step 2), changes the Engagement Program Cadence to “Paused” (Flow Step 3), waits for two days (Flow Step 4), and changes the Engagement Program Cadence back to “Normal”.
As long as the Cadence is “Paused” for a person, they can’t receive any emails. And even though the Stream demands that the next email is being sent the next day, the person is paused and will receive the next email only after their pause ends.