Feature Overview
Below is a quick summary of Ziggy's key features.
Flow
Ziggy provides a canvas where you design Flows, which are made up of interconnected Blocks.
A key concept of Ziggy is to make communication with target Platforms as easy as possible. The Hubspot blocks are an excellent example of this.
The Flow shown below is a good example of this.

Read in all Hubspot Deals (in batches of 100). There is a Filter applied to only take deals with a value of > $1000. A few Hubspot properties are retrieved.
Get the associated Companies using a specific association type and fetches the specified Company properties.
Writes the combined Deal and Company information to the output edge (an example is shown below)
Writes the data to a SQL database table.
Core Blocks
These are simple Blocks that are commonly used.

Utility Blocks
The perform more complex tasks such as
Writing CSV/JSON data to files on S3, SFTP etc.
Writing to and reading from databases.
REST calls.
Writing to and reading from Ziggy's key/value Data Store.

Hubspot Blocks
The Hubspot blocks make interacting with Hubspot very straightforward.

Javascript Block
This block is the catch-all for edge case situations. You can make various system calls for making direct REST API calls (Axios).
You can build your own Custom Blocks by embedding logic using Javascript and other blocks in a Subflow, which can be called as a block from any other Flow.

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
You can inspect data on any edge by clicking the edge (connecting line) bubble.


Edge Validation and Mapping
Perform complex validations and data mapping.

Read Structures, mappings and validations for more information.
Edge Transformation
Perform data transformations in the edge dialog using very simple Javascript. You can also incorporate custom validations as shown below.

Subflows
To modularise your Flows, you can call a Flow from another Flow, like this.

Execution history
Inspect all executions with precise filtering support.
Important: what data you decide to store in the execution history is entirely up to you. You can set whether data is persisted at globally or at the Flow level.

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 persistent key-value pair store. It can be referenced from both Javascript and the Data Store Utility Blocks.

You can also browse the Data Store.

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
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.

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
Scheduler
The integrated scheduler triggers Flow with a high degree of Cron-like specificity. more...

Deployment (Ziggy Solo)
If you have Ziggy Solo (your own private Ziggy instance), 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 inside the Docker container by default. However, these can be configured to run as external services externally.
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.
We never persist any data unless it's you who's choosing to persist in a Flow.
Please refer to Security topic for more details.
Source code availability (Ziggy Solo)
Whether you want to build your own custom blocks or simply have the peace of mind of having full control, we also provide the source code (Typescript/React/NestJS). more...