Feature Overview
Below is a quick summary of Ziggy's key features.
Utility Blocks
Below is an example of a Flow that incorporates three standard Utility Blocks (REST call, conversion to CSV and SFTP). more...

Take a look at some more example Flows.
Javascript Blocks
Javascript is the catch-all for edge case situations and where Utility Blocks aren't available.
Here's an example of a Flow that
takes an array of data (using supplied test data in this case)
creates company records in the Hubspot CRM. more...

Turning Javascript into Utility Blocks
When things become more complex or are frequently used, Typescript developers can create their own Utility Blocks. The example below shows the same functionality as above but encapsulated in the Hubspot Block. more...
It reads a batch of 20 records at a time from a SQL database and then creates company records in the Hubspot CRM.

Debugger
All Flows can be stepped through and debugged. You can inspect data as you go step through it and view log and console information in the bottom panes. more...

Data inspection, validation and mapping
As you can see from in the above Flow, data is flowing between Blocks. You can inspect the data by clicking on an edge bubble (below we've clicked on the green bubble).
The data that is output from the edge after the mapping has been done

The data structure that is expected along with validation rules. These can be omitted if not required. There is AI support for generating these straight from the data.

The data structure being mapped to and the mappings. There is AI support for the mapping.

Read Structures, mappings and validations for more information.
Subflows
To modularise your Flows, you can call a Flow from another Flow, like this.

Execution history
Inspect all executions with precise filtering support. You can decide whether you want data snapshots or not, providing a balance between information and security. For ultra-secure situations data can be set to always persists, never persist or only persist for failed executions. You can also auto-delete execution history. more...

Users can be alerted when executions fail.
Batching
You can process large volume of data using Batching. This helps access data coming from databases, API calls etc., in batches. ...more
Queuing
Queuing is important for ensuring that the system does not get overloaded with requests. It also lets you deal with third party API rate limits. ...more
You can be alerted when a queue size exceeds a certain limit.
Alerts and Log
Ziggy generates email Alerts for Execution errors, system resource issues and Queue sizes exceeding specified thresholds. There is also a Log browser where you can view alerts at any time.

Secrets
Ziggy comes with its own Secrets Manager. This lets you manage your secrets securely. All secrets are store fully encrypted. more...

Variables
Variables behave like Secrets except they do not contain values that should be hidden from the user. Variables can be modified by a Flow as it executes. more...
Connections
Connections are named references to external modules (SQL, SFTP, Redis and others you request) along with a corresponding setup that you can reference from Javascript Blocks and their respective Utility Blocks where they exist. Both development and production configurations can be specified. more...

Data Store
The Data Store is a simple, persistent key-value pair store. It can be referenced from both Javascript and the Data Store Utility Blocks.
Commander
When you have a lot of Flows, navigating between them can get tedious. The Commander is a special type of Flow that lets you navigate to and execute Flows by organising them on a canvas.

Memory Store
A simple, persistent in memory data store. If you are running multiple instances of Ziggy in a single deployment you should use Redis. It can be referenced from both Javascript and the Memory Store Utility Blocks
NPM and other external objects
Upon request, or if you are working with the Ziggy source code, any NPM module or custom object can be added quickly and easily. more...
Development/Production
Ziggy allows you to operate in Development and Production modes. Each uses discreet Secret, Connection and Variables. ...more
Parallelism, performance and scaling
Ziggy is very performant. It can also be configured to scale across multiple CPUs and cores. You can create parallel processes within your Flow.

Beware too many parallel or simultaneously executed Flows. Take a look at Queuing to avoid overloading the system or hitting API rate limits.
Scheduler
The integrated scheduler triggers Flow with a high degree of Cron-like specificity. more...

Tests
You can configure Test Groups, within which are the flows that should be tested. The execution sequence can be adjusted with drag and drop. Failed tests can be clicked on to inspect the reason for failure (a data snapshot is of logs and data). ...more

Deployment
You have complete control over your Ziggy deployment. Ziggy is Dockerized, so deployment is quick and easy.
They key thing is that every Ziggy customer runs their own fully isolated deployment on the platform of their choice.
On a dedicated server we can provide.
In your own cloud infrastructure.
Dockerized or bare-bones running under PM2.
The main takeaway if that you can specify and control exactly where and how you'd like your deployment configured, enabling you to control all aspects of security and performance.
Ziggy is backed by a Database and Redis server, which run by default inside the Docker container. However, you can run these externally as well.
Transfer database or selected data to another Ziggy instance
You can transfer the entire database or selected Flows, Secrets, Connections, Variables and Structures to another Ziggy instance. ...more
Security
One of the motivations for Ziggy was providing a platform where you have full control over API access, User Management and Data Persistence. Usage of 3rd party systems and is highly configurable and mostly a matter of choice rather than being hard-wired.
We never persist any data unless it's you who's choosing to persist in a Flow.
Please refer the Security topic for more details.
Source code availability
Whether you want to build your own custom blocks or simply have the peace of mind of having full control, we can provide the source code (Typescript/React/NestJS) upon request. more...