Much more generic automation subsystem

I feel the automation (Campaign) part of the Mautic is much of it’s power.

Still I feel there’s a huge space for improvement to make it a super-powerful general-purpose state machine.

I feel we should move towards the Workflow Theory of Tobias Nyholm which is explained here DPC2018: Knowing your state machines - Tobias Nyholm - YouTube and who is one of the main contributors to the Workflow component in symonfy as you can see here Commits · symfony/workflow · GitHub

Please visit the video and fast forward to minute 5’15" and watch until 7’38" (a couple of minutes).

With this “dual representation” with squares and circles I feel much more clear how to represent Mautic workflows: Squares are the current “actions” in the campaign diagrams.

Circles, instead, would be like “waiting-rooms” where leads “are” until a condition is met to go “outside” that condition.

This may be either the current “programming” for an action (the current “Execute this event…” part) or it could also be a “decission” (where the user is waiting until some action is taken by the user or times out).

Waiting rooms could have one or more “exit doors”: In an “action delay” there’s only one exit door that leads to the action itself, and in the “decission” for example it could be “multiple exit doors”: If the user clicks X then exit by door A. If not, he is still “inside” the waiting room. Then if a timer says “this lead has been here for more than X days” it raises the condition to exit by door B.

This new model would just make everything to lay into 2 categories:

  • Waiting rooms (where leads can be found).
  • Actions (where leads do not stop, just they get executed and leads passed thru).

A marketer could choose to set a “final waiting room with no doors” that “collect all leads that exit via certain branch” and the leads get “captured there” so when we do nurturing funnels, it will be super-easy to continue them on just by “placing new emails” after the last waiting room and then “open the doors”, avoiding the cumbersome solutions that Joey kindly shared with us as “workarounds” because mautic do not support “continuing on” an ended campaign (see here: Progressive funnel, what happens at the end? - #2 by robm and here )

I see this new approach as an attraction park. Edges in the graph would be the roads. Circles in the graph (according to Tobias’ notation) would be the queues in the attractions. Squares in the graph would be the ride of the attraction, and then you go out by an exit door that sends you again to a road then you line up in the next queue.

Some side-benefits of this approach are:

  1. States in the campaigns are that: states, so they could be “consumed” by any other part of mautic where a value can be tested, as it’s the email address or if a user visited X URL.
  2. This allows very easily to expand campaigns with the plugin system: Anyone could implement a “new type of waiting room” or a “new type of action” implementing the interface.
  3. Particularly, “a waiting room has an input and zero to infinite outputs” so an automation itself COULD be a “waiting room” so this would enable an easy drag-n-drop visual concept of campaing nesting.
  4. The same way roads in the attraction park may carry other things than people (for example dogs), the automation system could then carry anything (not only leads), so we may use that engine to automate things other than leads, for example “deals” in a CRM.
  5. This allows to have multiple “input doors” to the same automation the same way in an attraction park you may have the “normal line” + “the fast-lane”.

Simple basic idea:

We could easily see “who” is INSIDE any of the four red circles, and take decissions in function of that.

I’ve a lot more development on this idea, but I feel it enough for throwing the idea into the forum.

Any core-developers intereseted in discussing it further?

Hi @xmontero, without having thought this through in full, I already love the approach - it’s really aiming for the next level!
To be more specific: It sounds like a perfect part of our “NextGen” Mautic - however my gut feeling is that it might easily fall through the cracks unless a team of people with some passion and domain knowledge who champion and drive this topic. Which in the Mautic community, we call a Tiger Team

It’s high time to get the Tiger Team “Campaigns” startet! (Obviously, with a larger focus, and ongoing.)
→ Wouldn’t you consider driving that launch, with enough help from the Community team?

The other option would be to turn this approach into an Intiative, more single-focussed, and to be ended once the goal has been reached.
→ You have the choice :wink:

Anyway, I’d love to bring this up in the next Mautic podcast ( to make wore people aware, so do let me know!


1 Like

Hi, @ekke!

First of all thanks for your nice words and for liking the approach! I’ve thinking about it a lot and I’ve very clear what shoud be the model to be super-solid.

I’m ready to help in mulitple ways, provided I’m not alone. I want Mautic to become superb.

I’d consider also leading a tiger team if needed/suitable. As I’m pretty new to the community I’m not really still super super about not getting ahead of anybody else that deserves that position.

The major concern is to ensure the effort does not fall into broken bag… I feel there are many open-source projects backed by tens-of-thousands of active coders, and I’m still feeling we should market this much more to ensure we get not 5 more but 50 more coders to contribute.

There are other major architecture things that I feel should go into mautic, like:

  • CQRS+EventSourcing approach (not for automation, but in general).
  • Separating many of the features into separate standalone microservices and make mautic connect to them.
  • Consider all the crons be replaced by an AMQP architecture.

I am not very sure if I should push for the next-gen automation unless we have a full coordination of bringing all Mautic in it’s whole to the next level with all those improvements alltogether.

I tried to sense a little bit about the EventSourcing and I did not feel a superb feedback :no_mouth:

I’m ready to help. In fact from the next 1/jan and during all 2023 I’m planning to assign a certain number of hours all my weeks, systematically, devoted to Open Source (Mautic and/or others).

1 Like

Hello @xmontero if you have ideas on marketing that will be helpful to get more developers or users to know about Mautic and participate, I’ll be glad if you can share or I can connect with you to discuss further.

Thank you.