Campaign Is Completed Trigger

Campaign Is Completed Trigger

My business could really benefit from a trigger to know when a lead has finished running through a campaign so that the next campaign can kick off. We have a Request Campaign feature to send the lead to another campaign but no way of notifying another campaign that it needs to run for a lead.

Example:

Lead fills out a form. Upon filling out the form, a workflow updates the lead record with some tokened information.

A Scoring program starts to run triggered from the form fill.

After the lead is scored, a program-specific SC runs based on the outcome of scoring.

Right now, the only way to do this is to put in wait steps. After the lead fills out the form we update the information then factor in a long wait. In my example, the scoring program goes through many IFs and adds or subtracts from the LEAD SCORE.  I can't put a Data Value Changed on LEAD SCORE because I don't know when the scoring program is completed. So we put in a 20 minute wait.

Now, we're experiencing data processing delays when the campaign queue is full. This causes the 20 minute wait to end prior to the scoring completing. As a result, choices are being made based on a score that's not what it will be when the scoring finishes.

What I would like is a "Campaign Is Completed" or a "Return to Campaign" feature. I would like to be able to take a lead through a program specific campaign, send it to an operational campaign, and then (upon completion) finish running the program specific campaign.

Or, have a "Campaign is Completed" trigger. I could add a filter of "Campaign ID Is" so that I know the specific program I want to run.

12 Comments
Kenny_Elkington
Marketo Employee

Is there a reason that you can't use Request Campaign for this case?

Robb_Barrett
Level 10

Yes.

This is a case of a Many-to-One-to-Many relationship. Many program based SC feed into a centralized operational SC and then need to go back to many Program based SCs.

Robb_Barrett
Level 10

Better example:

Lead fills out a form. I use centralized forms.

Workflow sees that form is filled out on this program's LP. 

Workflow starts to populate parts of the lead record with program specific information.

....Now, we request a campaign to handle other data changes that need to occur....

Wait step to allow time for other workflows to happen

Problem 1: Request campaign doesn't pause the parent campaign until the requested camp is completed.

...Now we request a campaign that handles scoring, once the proper fields are populated....

...If the score is high enough, we request a campaign to sync the lead to SFDC...

...Back to original campaign...

Wait step is finished, now we make more changes, ending with writing an activity to the SFDC record if one is created.

Then we request a campaign that will flush the lead out of the program at the end of the year, since there's no way to run a time-specific program performance report.

So, as you can see, we go Program Specific > Operational (product specific) > Operational (scoring) > Operational (sync to CRM) > Program Specific (write task if CRM sync)

Because of this, we can't put requests at the end of the operational programs. We want to keep the minimum amount of workflows because maintenance needs to be centrally managed and we have hundreds of programs. This is the same reason we centralize forms.

So....

Nice to Have 1: Request Campaign pauses until the requested campaign finishes

Nice to Have 2: Pause Campaign / Unpause When Campaign X Is Finished

We share an instance globally, so there is never a good time for a resource hogging workflow like a large import. Not only do the leads get imported but numerous workflows kick off for every lead, including scoring and synching. My midnight is someone else's noon.

As a result, if the campaign queue is large, jobs that normally take 20 minutes can take hours. This results in wait steps ending before the next step should actually kick off. We have several programs daisy-chained together via wait steps instead of triggers to indicate something is completed.

Kenny_Elkington
Marketo Employee

Gotcha.  Makes sense now.

Grégoire_Miche2
Level 10

Hi Robb,

As a partial workaround, you can use a field for that purpose. At the end of the flow, you add a "change data value" with a new value specific to the campaign which ending you want to detect.

Then you use a "data value changed" trigger to detect the end of the SC. If this triggered campaign, just start by resetting the field to NULL if you want to be able to do it multiple times.

-Greg

Grégoire_Miche2
Level 10

A "flow is completed" filter would also be useful.

-Greg

Robb_Barrett
Level 10

If we were a small company, that would probably be easier. As we're not, we have a lot of governance around creating new fields. Our instance is set up to be regional and each region has their own flavor of a lead lifecycle.

Also, let's assume someone is looking at multiple pieces. You download one asset and I write the campaign ID for that asset. While scoring / lead lifecycle is running, you download another asset which now changes your campaign ID. So the first workflow will never complete because the data is now out of sync.

Robb_Barrett
Level 10

Other Marketing Automation platforms I've worked with had workflows where you'd link things together sequentially. Marketo is unique in that, unlike Adobe, Unica, etc, it doesn't have workflows.

Robb_Barrett
Level 10

What could make this easy is to have an option on Request Campaign for "Pause Until Completed".

Grégoire_Miche2
Level 10

Well, the alternative in this case is to use "add to list" flow steps and combine with "is added to list" triggers. it much more scalable than adding fields.

-Greg