Control flow

When running your flow, Ultradox will execute each step from top to bottom.

You can for example generate a PDF document from a Google Doc template, upload it to Google Drive and then send out an email with the generated PDF document attached.

Generate PDF from Invoice template

Send email with subject invoice ${invoiceNumber} to ${email}

Upload given file with filename ${invoiceNumber}.pdf to folder Invoices

But Ultradox can do so much more.

In this guide we will cover the various topics how to build more complex flows.


You can add timers to your flow to halt the execution and either resume at a specific date or wait for a given time.

This is great if you want to schedule email campaigns or if you want to send out reminders.

Set timer Reminder and wait for 30 days

Send email with subject Reminder: ${invoiceNumber} past due to ${email}


Ultradox comes with multiple ways execute steps based on conditions.

If you simply want to run a single building block only if a certain condition is met, you can just click on the if button on right right and enter the condition.

If you have multiple blocks that you want to skip under certain conditions, just add a skip block and wrap the steps you want to skip.

You can leverage the If and Else blocks to create more sophisticated conditional flows.


If you are dealing with a list of values, e.g. by loading a worksheet with many rows, you can run a number of steps for each item in the list by using the Repeat building block.

This is great if you want to produce an individual document for each row in a sheet by merging data from that row into the resulting document.

No matter where your data comes from, the Repeat block will work with all kind of lists. You can send out an email to each individual contact when loading a contact group from your GMail address book or when loading records from an Airtable base.

Error handling

Some building blocks may fail. If you are for example loading data from a service that is currently not available, the building block may throw an error.

By default your flow would stop and you would receive an email with the details of the encountered error. Probably this is not what you want.

  • In some cases you may want to retry several times before giving up.
  • In other cases you may just want to ignore the error and continue with the next step
  • Or you may want to send out an email or show a page to the affected user explaining that they should try again later

Ultradox comes with a set of tools providing the greatest flexibility while keeping things simple.

User Interaction

When running your flow as an app, you can wait for input from the user at any time. Just add a building block from the User interaction category like a form, a contact or a file picker.

Ultradox will automatically suspend the flow and will resume with the exact same state after the desired data has been gathered.

Combining conditions, loops and user interaction will give you the right tools to build enterprise apps that you then can publish and share with your customers or colleagues.

Suspend / Resume

You can also manually suspend and resume a flow. This is great if you want to build approval flows like collecting document signatures from different parties.

You can for resume a suspended flow using a simple link that can be embedded into an email or can be placed on a generated website.


You can extract a number of steps into a subflow.

Not only will this reduce the size of your main flow. It also allows you to use these steps in different flows.

This will even work if your subflow also requires user interaction.

You may want to create a library of reusable flows for your company and share them with your coworkers to reduce development time and keep your business consistent.

Questions and Feedback

If you have any comments on this page, feel free to add suggestions right to the Google document that we are using to create this site.

If you are not yet member of the Ultradox community on Google+, please join now to get updates from our end or to provide feedback, bug reports or discuss with other users.

Last Updated: 10/24/18