⚑

Flows & automations

14 articles Michael By Michael

The proactive engine: build visual scenarios to follow up and nurture your customers automatically.

Triggers: how a Flow starts

πŸ“ Where to find it: Reach your customers β†’ Flows β†’ (open a Flow) β†’ trigger block at the top The trigger is the event that makes a contact enter the Flow. Madyis Hub offers several entry points: a CRM event, a scheduled import, an entry URL (webhook) or a manual launch. How it works For event triggers, Madyis Hub continuously listens to what happens in your account and automatically enrolls the right contact as soon as the event occurs. By default, a contact enters a given Flow only once (re-enrollment policy "never"), to avoid following up with them in a loop. You can relax this rule in the Flow settings. Step by step 1. Open the Flow, then click the trigger block at the very top of the tree. 2. In the right-hand panel, choose "How the flow starts". 3. Event triggers: New contact created Β· New conversation Β· Conversation resolved Β· Lead stage changed Β· Contact added to a folder. 4. For "New conversation" or "Conversation resolved", you can filter by channel (website, WhatsApp, Instagram, Facebook, email, SMS) β€” otherwise all channels count. 5. For "Lead stage changed", choose a specific target stage (or leave empty for any stage). 6. For "Contact added to a folder", select the relevant folder. 7. For a manual start, leave the type as "Manual" and enroll contacts yourself with "Test" or "Launch for a folder". Good to know - The "Lead stage changed" trigger is ideal for reacting when a lead moves to "Qualified" in your Pipeline. - Some steps (reminder, assignment, AI) only work if the Flow starts with a conversation: the editor warns you if that's not the case. - The default re-enrollment is "once ever": no risk of following up with the same contact twice.

Trigger a Flow from a Google Sheet (lead import)

πŸ“ Where to find it: Reach your customers β†’ Flows β†’ (open a Flow) β†’ trigger block β†’ "On a regular interval (Google Sheet)" This trigger brings every new row of a Google Sheet into a Flow: your leads from a file (advertising, external form, purchased list, etc.) are imported and launched into the journey automatically. How it works Madyis Hub re-reads your Google Sheet (published in CSV format) every few minutes, creates or finds the contact for each new row, then enrolls them in the Flow. A double anti-duplicate safeguard ensures that the same row and the same contact never enter twice (by normalized phone or email). The Flow is only read if it's published, and each pass records its status (success, broken link, column not found) directly in the editor β€” never a silent failure. Step by step 1. In Google Sheets: File β†’ Publish to the web β†’ CSV format, then copy the link. 2. In the Flow editor, click the trigger and choose "On a regular interval (Google Sheet)". 3. Paste the CSV link into the field provided. 4. Choose the recognition field: phone or email (this is what avoids duplicates). 5. Enter the exact name of the phone column (or the email column), the name column, and the default country code if needed. 6. Publish the Flow: the import starts on the next automatic pass. Good to know - The column name must match the spreadsheet header exactly, otherwise the import stops and the error appears in the editor. - A maximum of 1000 rows are processed per pass (the rest go through on the next round). - "Filing" the lead (pipeline stage, folder) is done with the first steps of the Flow or the Pipeline source rule. - To simply bring leads from a spreadsheet in without a journey, use Data sync instead.

Trigger a Flow from an entry URL (webhook)

πŸ“ Where to find it: Reach your customers β†’ Flows β†’ (open a Flow) β†’ trigger block β†’ "Webhook / entry URL" type Each Flow can receive a unique URL to which an external tool (Make, Zapier, n8n, your website, your form) sends a lead: that lead then enters the Flow immediately. How it works Madyis Hub generates a secret, unique URL for this Flow. When a tool sends a lead's information to it (in JSON), Madyis Hub creates the contact and enrolls them in the Flow. The URL's long, unpredictable token acts as a password; you can revoke it at any time to cut off the old URL. The responses are clear (accepted / rejected) so the calling tool knows what happened. Step by step 1. Open the Flow and choose the Webhook / entry URL trigger type. 2. Save: the entry URL appears in the trigger panel. 3. Click "Copy" to grab the URL. 4. Paste this URL into your external tool (Make, Zapier, n8n, form, etc.) as the POST destination. 5. Set up the tool to send at least the lead's name, phone or email. 6. Publish the Flow so it starts receiving leads. 7. If needed, click "Regenerate" to invalidate the old URL and get a new one. Good to know - The URL does not change until you regenerate it: you can paste it once and for all into your tool. - Make/Zapier structures that wrap the lead under "lead" or "contact" are recognized automatically. - Never share this URL publicly: it's what authenticates the submission.

A Flow's actions: SMS, email, call and more

πŸ“ Where to find it: Reach your customers β†’ Flows β†’ (open a Flow) β†’ "+" β†’ step palette Actions are what the Flow does to each contact: send an SMS, send an email, trigger a call, add a tag, change the pipeline stage, assign to an agent, set a reminder task, or call an external tool. How it works Every message send (SMS, email) goes through a mandatory consent checkpoint (anti-ban): a blocked contact, one with no number/email, or one who has unsubscribed (STOP) is never contacted, and every skipped action is logged with its reason (never a silent failure). SMS messages go out from your Twilio number, emails from your connected email inbox. Variables like {{contact.name}} are replaced at send time. Step by step 1. In the editor, click the "+" where you want to insert the action. 2. Choose the step: Send an SMS Β· Send an email Β· Automatic call Β· Reminder task Β· Add a tag Β· Change lead stage Β· Assign to an agent Β· Webhook. 3. For an SMS, write the message (use {{contact.name}} to personalize). 4. For an email, enter the subject and body; you can save it as a reusable template. 5. For "Change lead stage" or "Assign", choose the stage or agent from the list. 6. Make sure the required channel is connected (the editor flags a missing SMS or email channel in red). Good to know - A channel that isn't connected blocks publishing: first connect an SMS number or an email inbox in Inboxes. - The "reminder", "assignment" and "AI" actions only work if the Flow starts with a conversation. - An opt-out (STOP) received by SMS unsubscribes the contact for life from all your automatic sends.

Automatic calling in a Flow (the "agent first" model)

πŸ“ Where to find it: Reach your customers β†’ Flows β†’ (open a Flow) β†’ "+" β†’ Automatic call The "Automatic call" step rings the call card of all your online agents so a human can call the lead back right away β€” not a robot. The first agent who picks up triggers the dialing of the lead's number. How it works When the journey reaches this step, Madyis Hub rings all the agents who are actually online (like an incoming call), with the name of the Flow shown so they know where the call comes from. The first one to accept dials the lead's number through the voice channel. Because a human approves every call, it complies with calling rules (TCPA/Bloctel). If the call cannot go out (no number, no voice channel, no agent online, no consent), Madyis Hub never stays silent: it adds a private "πŸ“ž to call back" note on the conversation. Step by step 1. First connect a Twilio voice channel (Inboxes β†’ Add a channel β†’ Calls/voice). 2. Set at least one agent to the "Online" status. 3. In the Flow, add the "Automatic call" step via the "+". 4. Optionally fill in a fallback note and a backup agent for the callback task. 5. Publish the Flow. Good to know - No agent to choose: the call rings all online agents (first come, first served). - Without a voice channel or an online agent, the step turns into a callback task β€” nothing is lost. - The voice channel requires the Twilio setup beforehand (number + TwiML application).

Conditions and If/Else branches in a Flow

πŸ“ Where to find it: Reach your customers β†’ Flows β†’ (open a Flow) β†’ "+" β†’ Condition A condition splits the journey into two paths based on the contact: those who match go down the "yes" branch, the others down the "else" branch. You can test a contact attribute, or check whether they are in a specific folder. How it works Madyis Hub reads the contact's attributes (lead stage, city, country, company, email, phone, name) and applies your filters. All conditions must be true to follow the "yes" branch. A missing attribute makes the condition fail cleanly ("else" branch), never an error. The "In the folder" condition checks the contact's membership in one or more contact folders. Step by step 1. In the editor, add a "Condition (If/Else)" or "In the folder" step via the "+". 2. For an attribute condition: choose the column (e.g. lead stage), the operator (equals, contains, is not empty…) and the value. 3. Add several filters if you want to combine criteria (all must be true). 4. For "In the folder", tick the folder(s) concerned. 5. Below the node, build the "yes" branch and the "else" branch, each with their own steps. Good to know - The "is not empty" and "is empty" operators do not require a value. - Deleting a condition removes its entire subtree (both branches): a confirmation is shown. - Typical example: If stage = "Qualified" β†’ email + VIP label, Else β†’ "to follow up" label.

Waits and "no reply" follow-ups in a Flow

πŸ“ Where to find it: Reach your customers β†’ Flows β†’ (open a Flow) β†’ "+" β†’ Wait Wait steps space out actions over time. "Wait a delay" pauses the journey (e.g. 1 day); "Wait for an event" waits for the contact to reply (or for a conversation to be resolved) within a certain time, with two possible follow-ups: "replied" or "timed out". How it works "Wait a delay" simply pushes the next step back by the chosen duration. "Wait for an event" puts the journey to sleep until the awaited event happens ("received" branch) or the time limit expires ("timed out" branch) β€” a wait always has a deadline (30 days by default, 1 year maximum) so a journey never stays stuck. This is the building block for follow-ups: you wait for the reply, and if there is no reply you follow up. Step by step 1. Add "Wait a delay" and choose the duration (minutes, hours or days). 2. Or add "Wait for an event" and choose the awaited event (the contact replies / the conversation is resolved). 3. Set the time limit for the event wait. 4. Build the follow-up for the "replied" branch and the one for the "timed out" branch. Good to know - For a simple "SMS, then 1 day, then reminder" follow-up, a delay is enough with the "stop if the contact replies" option enabled on the Flow. - "Wait for an event" only makes sense if the Flow starts with a conversation. - Enable "Stop if the contact replies" (stop_on_reply) so a follow-up is cancelled as soon as the contact writes.

AI steps in a Flow: summarize, classify, or bring in your AI agent

πŸ“ Where to find it: Reach your customers β†’ Flows β†’ (open a Flow) β†’ "+" β†’ AI action / External AI agent A Flow can bring AI into a conversation: summarize or classify it automatically ("AI action" step), or have your external AI agent reply and drop its answer as a private note for the human agent ("External AI agent" step). How it works The "AI action" reuses the Madyis Hub AI engine: it reads the conversation and, depending on the setting, writes a summary as a private note or applies a classification label. The "External AI agent" relays the customer's latest message to the HTTP endpoint of your external AI agent and publishes its answer as a private note (never an automatic send to the customer, as an anti-ban precaution). Both steps consume your AI replies quota and only act on a conversation; without a conversation, they are skipped (and logged). Step by step 1. Make sure the Flow starts with a conversation ("New conversation" or "Conversation resolved" trigger). 2. Add the "AI action" step via the "+". 3. Choose the task: "Summarize" (private note) or "Classify" (applies a label among those you list). 4. For the external agent, add the "External AI agent" step (requires an external AI agent configured in AI Agents). 5. Publish the Flow. Good to know - These steps count toward your monthly AI replies quota. - The external AI agent never replies directly to the customer from a Flow: its answer is a suggestion in a private note. - Without a conversation in context, these steps are skipped without error.

Connect a Flow to an external tool with the Webhook step

πŸ“ Where to find it: Reach your customers β†’ Flows β†’ (open a Flow) β†’ "+" β†’ Webhook The Webhook step sends the contact's information (and that of their conversation) to a URL of your choice: it is the gateway to connect a Flow to any external tool (n8n, Zapier, your own API, a third-party CRM). How it works When the journey reaches this step, Madyis Hub sends a POST request in JSON containing the contact (name, email, phone, attributes) and the conversation to the URL you specify. Because you enter the URL yourself, the call goes through a security filter (anti-SSRF) that blocks internal addresses. The step never crashes the Flow: a failure or an invalid response is logged and the journey continues. Step by step 1. Get the receiving URL from the external tool (n8n, Zapier, your API…). 2. In the Flow editor, add the "Webhook" step via the "+". 3. Paste the URL (it must start with http:// or https://). 4. Place the step at the desired point in the journey. 5. Publish the Flow and check on the external tool's side that the data arrives. Good to know - Do not point to an internal/private address: this type of URL is rejected for security reasons. - This step never blocks the journey, even if the remote tool is down. - Not to be confused with the (incoming) webhook trigger, which instead brings a lead INTO the Flow.

Understanding Flows: the visual automation builder

πŸ“ Where to find it: Reach your customers β†’ Flows A Flow is an automation that you draw as a tree: a trigger at the top (the event that starts everything), then steps that your contacts go through one by one β€” send a message, wait, check a condition, split into two paths. It's Madyis Hub's proactive engine for following up with and guiding your customers all on its own. How it works Each Flow has a "draft" version (the one you edit) and a "published" version (the one that actually runs). When a contact enters the Flow, Madyis Hub creates an individual journey for them and moves them step by step, respecting the waits (for example 1 day) that you set. An internal robot checks every minute which journeys have come due and runs the next step. Until you click "Publish", your changes do not apply to contacts already in progress. Step by step 1. Open Reach your customers β†’ Flows. 2. Click "New": choose a ready-made template (Welcome, Quick follow-up, Lead sorting, Post-resolution follow-up) or start from scratch. 3. Give the Flow a name at the top of the editor. 4. Click the trigger block (at the top) to define how the Flow starts. 5. Click the "+" under a step to add an action, a wait or a condition, then set it up in the right-hand panel. 6. Fix the points flagged by the help card at the bottom (red errors block publishing). 7. Click "Publish" and check the consent attestation to activate the Flow. Good to know - Flows are only available on paid plans (Pro): otherwise a padlock appears. - "Saved" does not mean "live": an orange "unpublished changes" banner appears until you republish. - Always start from a template the first time: it's faster than a blank page. - In messages, write {{contact.name}} to automatically insert the contact's first name.

Sending regulation (anti-ban): quiet hours and pacing

πŸ“ Where to find it: Reach your customers β†’ Flows β†’ (open a Flow) β†’ "Sending pace" button (editor header) Sending regulation protects the reputation of your number and your email inbox by avoiding burst sending and out-of-hours sending: you set a time window (e.g. 9 AM–8 PM, business days) and a minimum spacing between two sends. How it works When a send (SMS or email) is due to go out outside the allowed window, Madyis Hub postpones it to the next reopening β€” nothing is lost. The pacing reserves a slot per account: sends are spread out (the 1st, then +30 seconds for the 2nd, etc.) instead of all going out at the same time. The setting is done per Flow, and otherwise Madyis Hub applies the account's default setting. When disabled, the regulation has no effect (immediate sending). Step by step 1. Open the Flow and click "Sending pace" in the editor header. 2. Tick "Enable regulation". 3. Set the start and end time of the allowed window. 4. Choose the allowed days (Monday to Sunday). 5. Select the reference time zone. 6. Set the minimum spacing between two sends, in seconds (e.g. 30). 7. Close: the setting is saved with the Flow. Good to know - Leave regulation enabled for any mass SMS send: it is the first protection against banning. - A spacing of 30 seconds is a good starting point for SMS. - Without a setting specific to the Flow, the account's default pace applies.

Fast lead follow-up (speed-to-lead) with a Flow

πŸ“ Where to find it: Reach your customers β†’ Flows β†’ New β†’ "Fast follow-up (speed-to-lead)" template Fast follow-up (speed-to-lead) means getting back to a new lead within a minute: an immediate SMS as soon as a conversation starts, then a follow-up the next day if the lead hasn't replied. It's the reflex that wins the most sales. How it works The "Fast follow-up" template creates a Flow triggered by "New conversation": it sends an acknowledgement SMS right away, waits one day, then sends a follow-up β€” and the follow-up cancels itself automatically if the lead replies in the meantime ("stop if the contact replies"). Each SMS goes through the anti-ban consent check. Madyis Hub also keeps a legacy speed-to-lead sequences engine, but the Flow template is the recommended way to set this up today. Step by step 1. Connect an SMS number (Inboxes β†’ Add a channel β†’ SMS). 2. Open Reach your customers β†’ Flows β†’ "New". 3. Choose the "Fast follow-up (speed-to-lead)" template. 4. Adapt the text of the immediate SMS and the follow-up (use {{contact.name}}). 5. Adjust the wait time before the follow-up if needed. 6. Publish the Flow by checking the consent attestation. Good to know - Keep "Stop if the contact replies" enabled so you don't follow up with a lead who has already come back to you. - For a follow-up that includes a human call, add an "Automatic call" step after the SMS. - SMS follow-up requires consent: when publishing, attest that your leads have agreed to be contacted.

Publish, test and launch a Flow for a contact folder

πŸ“ Where to find it: Reach your customers β†’ Flows β†’ (open a Flow) β†’ "Publish", "Test", "Launch for a folder" buttons Before a Flow runs, you need to publish it (with a consent attestation). You can then test it on a specific contact, or launch it all at once for every member of a contact folder. How it works "Publish" freezes the draft version into the active version and records your consent attestation (who, when) for traceability. The engine still checks consent on every send anyway. "Test" enrolls a contact you choose and advances their journey right away, without waiting for the hourly bot. "Launch for a folder" enrolls every current member of the folder, once each thanks to a stable anti-duplicate key β€” so relaunching is safe. Step by step 1. Fix the red errors on the help card (otherwise the "Publish" button stays greyed out). 2. Click "Publish", check the consent attestation, confirm: the Flow becomes "Active". 3. To test: click "Test", search for a contact, select them; their journey starts immediately. 4. For a folder: click "Launch for a folder", choose the folder, confirm. 5. Pause or reactivate the Flow at any time from the Flows list. Good to know - A modified Flow shows an orange banner until you re-publish: otherwise your changes don't take effect. - "Test" and "Launch for a folder" require a published and active Flow. - Pausing a Flow also pauses the journeys in progress; they resume on reactivation.

The automations engine: Google Sheet β†’ filters β†’ action

πŸ“ Where to find it: Reach your customers β†’ Data sync β†’ "Google Sheet" card In addition to Flows, Madyis Hub offers a simple "when this happens β†’ do that" automations engine: it reads a Google Sheet (or reacts to an event from your CRM), filters the rows according to your criteria, then runs an action on each new row β€” no code, no external app. How it works Madyis Hub re-reads the source (a Google Sheet published as CSV) every few minutes, ignores rows already processed (anti-duplicate by key column), applies your filters, then runs the chosen action on each new matching row: send an approved WhatsApp template, send an email, call a webhook, or simply create the tagged contact in the CRM. WhatsApp sends are guaranteed "at most once" (never twice to the same number). A "Test" button shows a preview without sending anything, and each run records its status (never a silent failure). Step by step 1. Open Reach your customers β†’ Data sync. 2. Choose the "Google Sheet" card (or the CRM event trigger). 3. Paste the CSV link of your Google Sheet (File β†’ Publish to the web β†’ CSV). 4. Specify the anti-duplicate column (phone or email). 5. Add your filters (act only on certain rows). 6. Choose the action: WhatsApp template, email, webhook, or CRM only. 7. Click "Test" to preview, then activate. Good to know - For a multi-step journey (wait, follow up, branch), use Flows instead: this engine does a single action per row. - The WhatsApp template must be approved by Meta and include an image header if required, otherwise the send fails silently on Meta's side. - This feature is reserved for paid plans (Pro).