Discussions

Faster Segment Re-evaluation on Program Canvas

AJ Sedlak
AJ Sedlak Posts: 2 Bronze Medal
edited May 5, 2017 1:44PM in Dream It

Program builder can evaluate feeders as often as every hour, but Program Canvas can't re-check a segment more frequently than once per day. This capability should be brought up to speed with Program Builder or even faster.

101 votes

Active · Last Updated

Comments

  • That's true! There are some workarounds though but it would be much easier and become more user-friendly.

  • That's true! There are some workarounds though but it would be much easier and become more user-friendly.

    Hi Alexandros,

    what workarounds have you found? We are trying to evaluate about 7 filters in program canvas (to avoid adding these 7 filter steps into program builder), but the delay of one day for the segment to re-evaluate is going to be an issue. Thanks!

  • claudiazoglmann
    claudiazoglmann Posts: 60 Gold Medal

    Considering the Contact Re-entry limitation on Campaign Canvas ( ) and missing Move from Program Builder capability ( ), faster re-evaluation of Program Canvas is a necessity.

  • kamato
    kamato Posts: 7 Blue Ribbon

    I agree there needs to be a faster evaluation period on the Segment in Program Canvas or allow the Push function from the Segment to actually be a continual Listener function instead of a one time push.

  • michael.roberts
    michael.roberts Posts: 9 Blue Ribbon

    That's true! There are some workarounds though but it would be much easier and become more user-friendly.

    I'd love to know what workarounds you've found as well.

  • michael.roberts
    michael.roberts Posts: 9 Blue Ribbon

    This is absolutely necessary! There are certain update rules we want to run immediately but once a day doesn't get close enough at all. I'd love to be able to get as fast as every 5 minutes.

  • I'd love to know what workarounds you've found as well.

    The only workaround I found: I ended up building the whole program out in campaign canvas so we can evaluate our segments hourly. They run through about 15 shared filters, are added to a shared list, then either go to program builder to be pushed to Salesforce, or go to another campaign that sends a follow up email from a sales rep.

  • michael.roberts
    michael.roberts Posts: 9 Blue Ribbon

    The only workaround I found: I ended up building the whole program out in campaign canvas so we can evaluate our segments hourly. They run through about 15 shared filters, are added to a shared list, then either go to program builder to be pushed to Salesforce, or go to another campaign that sends a follow up email from a sales rep.

    Makes sense. So in my case where I'm interested in update rules I'll have to run it in the campaign canvas and use a "add to program" step that goes straight into the Update Rule step in the program.

  • AJ Sedlak
    AJ Sedlak Posts: 2 Bronze Medal

    Makes sense. So in my case where I'm interested in update rules I'll have to run it in the campaign canvas and use a "add to program" step that goes straight into the Update Rule step in the program.

    You could also use campaign canvas solely as a feeder and just send contacts over to the program canvas immediately for all other steps. Additional upside to that is that once we're able to re-evaluate more frequently, you only have to add the segment feeder to your existing program.

  • You could also use campaign canvas solely as a feeder and just send contacts over to the program canvas immediately for all other steps. Additional upside to that is that once we're able to re-evaluate more frequently, you only have to add the segment feeder to your existing program.

    That is a valid work-around if you do not expect or intend to process the same contact more than one time. Because if you use a dynamic segment that will regularly re-evaluated, then your campaign won't allow you to have contacts re-enter the same campaign more than once.

    Hence, if you really need a work-around to feed contacts in program canvas on an hourly basis (or even faster), you will have to use Program Builder as your feeder, then route the contacts into a campaign in Campaign Canvas, then route again from Campaign Canvas to Program Canvas.

    canvas-hack.jpg

  • Matthew Phillip
    Matthew Phillip Posts: 19 Blue Ribbon

    I've run into the same problem. I've got leads coming in that need to go into two separate campaigns and with a re-eval time of 1x/day, that's not a great CX at all. Wouldn't a workaround be as simple as creating two separate segments and just feeding those directly into the campaign? Bypass a program all together? All the data I need to correctly segment is already provided, so there really isn't any need to use the program canvas.

    This seems to be a simple/obvious solution but it's entirely possible I'm missing something.

  • 3633250
    3633250 Posts: 4 Green Ribbon

    Glaring holes like this is why I regret moving my org from Marketo to Eloqua.

  • Agree wholeheartedly. I'm running a double opt-in program on a database of 1 million+ contacts, with a high likelihood of input data changing multiple times per day, even if only because of human error. Our program only evaluating once a day causes a risk of data pollution.

  • Alexander Huzar
    Alexander Huzar Posts: 38 Red Ribbon

    Considering the Contact Re-entry limitation on Campaign Canvas ( ) and missing Move from Program Builder capability ( ), faster re-evaluation of Program Canvas is a necessity.

    For campaigns, there are two run modes - add one time upon activation and allow re-entry. You must choose the latter option, however this will limit what you can do with segments, but you're not using those when using a campaign as a proxy between program builder and canvas.

  • We have a very neat workaround that uses the Security Labeling canvas. Because the security labelling canvas has a 1hr feed time, we setup any segments that require 1hr execution in that canvas and then immediately route those contacts into the other program.

  • aappll
    aappll Posts: 38 Blue Ribbon

    We have a very neat workaround that uses the Security Labeling canvas. Because the security labelling canvas has a 1hr feed time, we setup any segments that require 1hr execution in that canvas and then immediately route those contacts into the other program.

    For sure this is neat, great workarung @vince , just a question what are the selectable step you use when you move into the program?

    Thanks!

  • sponthie
    sponthie Posts: 1 Red Ribbon

    Has anyone tested to enter as a re-evaluation frequency value, something like 0.5 or 0.1, rather than a full day (1 day)?

    I am going to test this but wonder if someone tested already

  • It is not very efficient but what you can do is make a contact program that contains the whole database.

    Add a segment with criteria email is not blank and add it, add a listener for new contacts and add it. After first activation the listener adds all new contacts so it can be deleted (or kept, contacts will be stuck in the program anyway so it won't be able to add new ones).

    Now you simply route the contacts to a decision step and set the re-evaluation time to 999months. Connect the ends of the step to whatever you want to do and just loop them back to a previous step where needed.


    The contacts will enter instantly through the feeder and the decision step will check every hour (might be 15 min but I think it will run hourly) and move contacts along once they match your criteria. If you have multiple just use a shared filter.

  • Tom.Niedoba
    Tom.Niedoba Posts: 6 Green Ribbon

    Sebastian, that is an interesting idea, thought it requires every program that runs regularly to be added to this. I wonder if it could get messy. At this time we use Program Builder "feeder programs" to fill the gap, obviously those shouldn't be necessary.

  • The workaround with everyone in the program canvas only works for 1 process since contacts will be stuck in the decision step.

    Imagine a scenario where you want to run an update rule on a contact record if something changes.

    'If contact has field a=1, b=2, c=3 and field z = false' then run update rule 'field z = True'.

    Imagine you want to keep field z updated and set it back to false if the criteria don't match etc.

    Our program looks like this:

    • listener with 'new contacts'
    • (activate once and then delete it) a segment where email is not blank (everyone)
    • Connect both listener and segment to decision step 'shared filter member?'. The shared filter filters on field a=1,b=2,c=3 and z = false. Set evaluation time to 999months. Connect the no path back to the decision step just in case. Connect the Yes path to update rule z=True.
    • Behind the update rule point the customer to a second decision step 'shared filter member'. The shared filter filters on 'a<>1 OR b<>1 OR c<>1' and has a 999 month evaluation period. Connect the no step back to the same decision step and connect the yes side to an update rule to set z=False.
    • Connect the final update rule back to the original shared filter that started the program.

    The program will contain all contacts and the shared filters will counter each other. If you match the rules you get True/False within the hour. Everything is looped together so contacts will always be re-evaluated.

    Important to note that the feasibility of this program is very dependent on your contact/record count as it will bog down the instance if you have multiple and a big contact count.

    The alternative to having everyone in the flow is to not use a listener but to use a campaign with the segment and feed the program hourly from there. You lose the benefit of new contacts entering instantly but you gain the benefit to make the segment 'a=1,b=2, c=3 AND z = False. This means that only the contacts who match the criteria enter your looped program and thus bogs down the system much less.

  • It does not work, 1 day is the minimum

  • Iczek
    Iczek Posts: 24 Green Ribbon

    And do you know what time the evaluation is done by Eloqua?