I’ve been wrestling for some time now with a feature in my app, which allows user to create their own automation - such as “when X happens, do Y”, effectively allowing them to create their own workflows.
The solution that I’ve come up with, is to create these myself and then allow the user to “activate” them.
Unfortunately this isn’t going to work long term and it’s forcing me to consider whether Bubble is the right tool for the job.
Does anybody know if there are other tools like Bubble, where this type of functionality exists?
I am not aware of any other NoCode tool that would be better to do this kind of stuff.
However just out of curiosity would you mind elaborate on the limitations you are facing doing this? And maybe provite a scenario which leads to the limitation ?
I’ve posted several times before about this, but here is a simple example - database things denoted by “thing”.
A “user” wants to create a “task” every time a new “customer” is created. They want this “task” to trigger after a specific number of days (that they can specify).
They want to set the title, description and due dates of the “task” as a template, so that every time this automation fires, it creates the “task” and populates it with the right information. They want the “task” to be assigned to the “user”, that is stored against the “customer”.
There are other examples like this, some more complex than others, but the crux of it is that users need to be able to decide what data type to create and when.
You’ll indeed need to create every trigger by hand as a backend workflow and can not leave that task to the end user. (and BTW, it is a best practice to do so)
What can be done natively in Bubble would look something like :
database trigger into every relevant object.
condition on the trigger (see below)
different workflow are triggered depending on the intended action
Sidenote : there is a cost factor here as this can trigger a lot of workflows which translated into lots of Bubble’s WU
If this is the solution you already ended up with :
You do not have to create every task on the back end nor do you have to worry about a cost factor from the DB trigger. That’s simply not the case.
Creating a list of automations for users with the customization you specified can be set up (name, assigned to, due date days, description, etc). Prob shouldnt trigger on a DB change as the triggers are likely more milesone based so having WFs around those milestones would be easier to update and troubleshoot.
Not sure I’m following, or maybe it’s just that I don’t know how to execute this.
There could be lots of different triggers, but as far as I understand from a data structure point of view, they would all be “database changes” - how else would this work?
To give another example, my customers might want to connect via API to something like Segment, and set up a rule that does something like:
When “event name from segment” occurs against “customer” do “action”.
In that case, it would surely be a database trigger.
The more I think about it, the more I think that I just need to create template “actions” (create task, send email, create thing) - although again, I’m not sure how to actually do this.
Yes yes yes, you definitely need to create beforehand each possible action for your user.
Zapier, IFTTT, Hubspot… those are the few I know that allow this, the actions doable by the end-customer are all pre-defined. You, as a user, never have full creativity with the data.
And that’s normal @jamie.robson.89 - every app with automations is really just a bunch of predefined ones with variables. If it’s truly custom, you’ve actually just built Zapier.
On that note, why not just launch a Zapier/IFTTT integration that your users can explore?
It doesn’t have to be a DB trigger. For example, in your example, there’s a incoming webhook from Segment (presumably) with the event for the customer. So whenever an incoming event comes in, along with all the other actions associated with it (storing it, updating the related user) do a search for automations where customer = current customer, category = segment, active = yes, and event name= {current event name}. IF the count>0 → execute the automation.
Thanks everyone for the input, I feel like I’m maybe getting there now.
Although still feel like I’m only understanding half of the problem/solution.
I understand that I need to create an “automation” data type, that has “action” as one of the fields. I would need to define these actions and create template backend workflows for each of them (create task, send email, create thing … )
In these backend workflows, I would need variables (that the user would define).
– Here’s where I get stuck.
In the case of the segment example, I understand I think - the segment webhook is the trigger.
But what if the trigger is a variable - for example, the customer chooses to create a task whenever a “contract end date” is less than 52 days away.
I feel like this is probably straightforward and I’m missing something - appreciate your patience in trying to help me!
Yeah for those more amorphous triggers you’d have to have specific WFs run
E.g.,maybe once a day IF customer has an active contract end date automation → see how many days the automation calls for → a search customer’s contracts for contracts that have a end date matching the automation → perform automation on those contracts.
Maybe it would be somehow possible if you integrate all the apis by yourself and change the json of every response you get to save everything in one datatype. Then it could be easier to work with all the data. Combined with a lot of conditionals you can then make outgoing api calls.
Haven’t thought of it that much, but these would be my first thoughts to this topic.
Seems like something you could do with an Embedded iPaaS but you’ll need to integrate into bubble (probably with a plugin) and it’s an additional service you would pay for
Totally understand—building a plugin or custom solution can definitely be a lift. Quick question: are most of the triggers and actions your users need internal to the app (like triggering actions based on specific field values in Bubble) or external (like integrating with other SaaS tools or services) or a mix?
A good example might be “Customer journey stage unchanged”.
The object “Customer” has a type “stage” and when it changes, the date is captured, for example, a customer moves from pre-sales to onboarding, the “onboarding phase start” date is captured.
In this case, I want to allow the user to decide how many days should pass before that gets triggered, then choose what to do with it. If we take it as a “task”, they would have already created a template task that they can just select, so that thing also already exists.