Workflows
A workflow turns a lifecycle brief into a sequence that responds to customer context. Welcome a new customer, check whether they took the next step, and send a relevant follow-up. maxinja can build the journey and its emails from your direction; the canvas makes the trigger, timing and branches visible.
You draw it on a canvas: a trigger at the top, then the steps that follow it. Once you publish, it runs on its own, one run per contact, order or event that sets it off.
Define the journey before the steps
Use a brief that names the starting event, customer, timing, decision and message. For example: "After a signup event, wait two days. Check whether that person has created a project. If they have none, prepare an email helping them start their first. Keep the workflow unpublished for review."
Before publishing, inspect the event-to-customer relationship, the condition after the delay, the recipient data and a sample email. A teammate's activity should not qualify as this person's activity unless that is the behavior you intend.
Build one
Open Workflows in the top navigation, then New workflow. An empty canvas opens.
Add a trigger
Every workflow starts with one. It decides what sets a run going: a record created, an event fired, an email opened, a date and time, or a call from your own code.
Add the steps that follow
Connect a step under the trigger, then another under that. Steps look things up, wait, branch, write records, and send email.
Tell each step what to do
Select a step and describe what you want in plain language. maxinja turns it into the logic and shows you a readable summary to confirm.
Publish
The Publish button appears once you have unpublished changes. Publishing checks the whole workflow, then makes it live.
Step-by-step guidance for the canvas itself is in Create a workflow.
Steps
There are 21 step types, in five categories. Each one reads the values earlier steps collected and adds its own.
| Step | Group | What it does |
|---|---|---|
| Scheduled Timestamp | trigger | Runs once at a date and time you set, or right after publishing when you set none. |
| Record Created or Updated | trigger | A contact or object record is created or updated. Pick the schema, and optionally a segment or a condition. |
| Record Deleted | trigger | A contact or object record is deleted. |
| Event Fired | trigger | A workspace event schema fires, or a selected collected-event definition matches; collected definitions are pinned at publication. |
| Email Event | trigger | Email activity anywhere in your space: sent, delivered, opened, clicked, bounced, complained, unsubscribed, delayed, and more. |
| Trait Threshold | trigger | Starts when a stored computed attribute crosses the comparison you choose; publication establishes a baseline. |
| Incoming Webhook | trigger | An outside system posts JSON to this step's own URL. |
| Find Records | enhancer | Pulls contact or object records into the run: all of them, a segment, or a filter you describe. |
| Set Value | enhancer | Works out a value from what the run already carries, with no database lookup. |
| Query | enhancer | Runs a database lookup, from a simple fetch to a count or a sum, and adds the answer. |
| AI | enhancer | Runs your prompt over the run on a model you pick, and adds its answer. |
| For Each | enhancer | Splits the run over a list, carrying on with one run per item. |
| If/Else | controller | Sends the run down the If true or the If false path. |
| Switch | controller | Sends the run down one of several named case paths. |
| Delay | controller | Holds the run for a duration, or until a moment. |
| Create or Update Records | action | Builds contact or object records from the run and writes them, merging into existing records or creating new ones. |
| Delete Records | action | Deletes contact or object records. |
| Fire Event | action | Fires an event, which other workflows and webhooks can trigger on. |
| HTTP Request | action | Calls an outside URL and adds the response to the run. |
| Send Email | action | Sends this step's own email, and can carry on when that email is opened, clicked, and so on. |
| Note | decorator | A note on the canvas for whoever opens this workflow next. It takes no part in a run. |
One more card appears on the canvas that is not in the list: None, an empty step maxclicks creates when you add a step from an outgoing connection point. You never pick it from the step type list, and a workflow still holding one will not publish.
Workflow blocks covers every type in full, with what you configure on each.
You describe the logic, maxinja writes it
You never hand-write a condition, a filter, a value or a query. You type what you want, maxinja compiles it, and the step shows you a plain-English summary of what it will do. If the summary is not right, refine it and compile again.
On an If/Else, Switch or Delay you can leave the description uncompiled. maxinja then works it out on every single run, which is slower, costs credits every time, and makes you pin an AI model on the step before the workflow can publish. Every other step type refuses to publish until its description is compiled.
One run per record, or one run for the whole list
Find Records, Create or Update Records and Delete Records each have a Process each record separately checkbox.
Checked, the run fans out: each record carries on independently, and later steps see one record at a time. If nothing matched, the run ends there.
Unchecked, the run stays a single run carrying every record together as one list, and it carries on even when nothing matched. Leave it off when a later step has to act on all the records at once.
A For Each step always fans out, one run per item.
Slots and links
Steps join up through the connection points on their edges: a step takes its input at the top and hands the run on from its outputs.
- A step's outputs are its slots. Most steps have one. An If/Else has two, If true and If false. A Switch has one per case.
- A link joins one slot to one step, and a slot can only feed one step.
- Every step except a trigger and a Note needs at least one incoming link.
- A trigger cannot have anything linking into it.
- A workflow cannot loop back on itself. The editor flags the loop with Currently, cycles are not supported.
When several links arrive at the same step, that step can only count on values that all of them carry. Rewire things so a step loses a value it was set up to use, and the editor flags it until you fix it.
What a run carries
A run carries its own values, each under a name you choose. The trigger puts the first one there, such as the event that fired. Every step after it reads what is already there and adds more, so a Send Email step near the end can use everything the earlier steps collected.
That is why order matters: a step can only use what something before it put there.
What it costs
A trigger that fires per record starts one run per record. A Record Created or Updated trigger on a schema with 50,000 contacts, set off by a bulk import, is 50,000 runs, and every step of every run is billed.
Every step maxclicks executes charges an operation fee, the AI step also bills the tokens it used, and an uncompiled If/Else, Switch or Delay bills an AI call on every run. Send Email has its step fee, draws on the email allowance and adds applicable model usage for personalization. Workflow billing has the full picture, including the cap on how many runs a space can have going at once.
Trigger a workflow
An Incoming Webhook trigger lets an outside system start a run.
Generate the URL
Select the step and use the generate button next to Trigger URL, then copy it. The URL only goes live once you publish.
Describe the body
Fill in Expected payload with the shape of the JSON you will send. maxclicks checks every incoming request against it and rejects anything that does not match, and later steps can then use the values. The workflow will not publish without it.
Give the sending system the URL
It sends an HTTP
POSTwith a JSON body and anAuthorization: Bearerheader carrying an API key for this space. Treat the URL like a secret.
Renewing the URL gives you a new one, and the old one keeps working until the next publish. Whatever you post travels with the run as its starting values.
The full request and response detail is in the workflows API reference.
Related
- Create a workflow: build the graph step by step.
- Manage workflows: publishing, pausing, versions.
- Workflow runs: see what happened, and why a run failed.
- Workflow blocks: every step type in full.
- Segments: reusable contact filters for triggers and Find Records.
- Evaluated attributes: computed fields you can use in step logic.