In addition to integrations, we provide you with utilities that make integration Flows easy. Developing a complete integration workflow through the Flow Builder is not as straightforward as a Trigger and an Action step. Each integration Flow is different and caters to the uniquely specific requirements for the apps used in it. We have created several utility steps that we call special steps in the Flow Builder to fulfill these various requirements. They provide the necessary help and connections between Activities in the Flow.
This article will discuss how to transform your Flow's data using special steps.
1. The CSV App
The CSV App takes various input data formats and transforms them into a CSV format as output. This Action type step has been introduced in our Flow builder because many apps like Sendinblue only perform the initial bulk import of data (like contacts) from other apps if they receive the imported data in the form of a CSV file. The data we import from other apps in integrations is in the format of a JSON array. So the CSV app converts that input format to CSV.

To add the CSV App step in your Flow, add an Action step and search for the CSV App from the list of App Connectors.

Next, select the Action type from the list. Currently, there is only one Action type, JSON to CSV. The JSON format is the most common format used to transfer data through APIs.

In the field configuration for this step, you have to provide the CSV Delimiter that separates the values in the CSV file. That is mostly the comma (,) character. Then, you have to provide the input JSON array in the JSON Text field. Here, you can provide the Flow tag of any other step that generates your target JSON array as output.
If we see an example, let's say we have the following input JSON array that is generated from importing one contact Object to Integry from some other app.
[
{
“contact_v1”: {
"first_name": "John",
"last_name": "Smith",
"address": {
"state": "California",
"country": "US"
},
"age": 20,
"verified": true
}
}
]
After going through the conversion in this step, the resulting CSV output will be:
“contact_v1__first_name,contact_v1__last_name,contact_v1__address__state,contact_v1__address__country,contact_v1__age,contact_v1__verified
John,Smith,California,US,20,true”
This step will be shown in an example with other Flow steps in the next section.
Example in a Flow
Let us discuss an actual example of the CSV app in a Flow. It is mostly used together with the File Append step, as the CSV data has to be written onto a file after conversion. Consider that you have an integration of Hubspot contacts with Sendinblue. When the integration is created, all your contacts will be imported from Hubspot to Sendinblue. The simplified workflow of these steps in the Flow will look similar to what is shown below.

The first step is to import the contacts from your Hubspot account through a paginated Query. So this step will provide output as JSON text in a page-by-page manner. This text will contain the attributes of multiple contacts imported from Hubspot. An example of the first page of this Query output is shown below.
[
{
"email": "rose@example.com",
"LASTNAME": "Gonzalez",
"FIRSTNAME": "Rose"
}, {
"email": "sean@example.com",
"LASTNAME": "Forbes",
"FIRSTNAME": "Sean"
}, {
"email": "jrogers@example.com",
"LASTNAME": "Rogers",
"FIRSTNAME": "Jack"
}, {
"email": "barr_tim@example.com",
"LASTNAME": "Barr",
"FIRSTNAME": "Tim"
}, {
"email": "bond_john@example.com",
"LASTNAME": "Bond",
"FIRSTNAME": "John"
}, {
"email": "spavlova@example.com",
"LASTNAME": "Pavlova",
"FIRSTNAME": "Stella"
}, {
"email": "lboyle@example.com",
"LASTNAME": "Boyle",
"FIRSTNAME": "Lauren"
}
]
As mentioned before, the Sendinblue app doesn’t support the creation of multiple contacts through a JSON input. So you will need to convert the above Query output into a CSV format file. For that, add the CSV app step as a child of the Query, as shown in the image.

The fields configuration for this step will look similar to this:

The comma (,) character is given as the CSV delimiter to separate the values. In the JSON Text field, the variable {steps.0.obj_json} is provided. Thestep 0 is the Query step, and obj_json is the JSON output of this Query in the form of Objects.
This step will convert the JSON output of the Query step into a CSV format, as shown below.
Output:
{
"email,LASTNAME,FIRSTNAME\r\nrose@example.com,Gonzalez,Rose\r\nsean@example.com,Forbes,Sean\r\njrogers@example.com,Rogers,Jack\r\nbarr_tim@example.com,Barr,Tim\r\nbond_john@example.com,Bond,John\r\nspavlova@example.com,Pavlova,Stella\r\nlboyle@example.com,Boyle,Lauren"
}
So, converting the JSON data into the above format is what the CSV step is used for. After the conversion of this data, it will need to be written onto a file to be used in the operation of bulk importing contacts in Sendinblue. This is where the File Append app comes into the picture. Let's discuss that below.
2. File Append App
The File Append app is used to write input data onto a file of any specific type. That file is stored in the Integry cloud storage. This Action type step usually goes hand-in-hand with the CSV app, as the output CSV text has to be written onto a file before it can be used in different app operations.

To add a File Append step in your Flow, add a new step, then search and select “File Append App” from the list of apps.
Select the “Append File” Action type that is the only available Action type in the File Append app.

In the configure fields section of this step, you need to provide a file name, file extension, and the input data to be written on that file. Those will be discussed in the example below.
Example in a Flow
For the example discussed above, when the integration is created, all your contacts will be imported from Hubspot to Sendinblue. After the JSON data for imported contacts is converted to the CSV format, it will need to be written onto a file to be used in the operation of bulk importing contacts in Sendinblue. For that, we provide the File Append App.

In the configure fields section of this step, you must first provide a file name. If the file name is unique and that file does not exist in our cloud storage, a new file with that name will be created. If a file with this name previously exists in our cloud storage, the text lines of the input data are appended to the previously written text in that file.

For the current example, a unique file name has to be provided to create a new file for the imported CSV data. For that, we use the tag {trigger.instance_id} in our Flows which generates a unique file name every time. This will ensure that your file is always unique and does not interfere with other files in our file storage.
After giving a unique file name, you need to provide the file extension. It can be any type of file that you require. For this example, the file type used is CSV.
Lastly, you have to provide the actual data that needs to be written in the file. For this Flow, the variable {steps.0.steps.0.out} is provided. steps.0.steps.0 refers to the first child step of step 0. That is the previous step of the CSV App, out means the output of this CSV step that was shown above. So, the File Append step will write the above output onto a file. The appended file data will look as shown below.
Output:
File:
email,LASTNAME,FIRSTNAME
rose@example.com,Gonzalez,Rose
sean@example.com,Forbes,Sean
jrogers@example.com,Rogers,Jack
barr_tim@example.com,Barr,Tim
bond_john@example.com,Bond,John
spavlova@example.com,Pavlova,Stella
lboyle@example.com,Boyle,Lauren
The above two child steps JSON to CSV and File Append of the Query will keep running until all the pages of the imported data are converted into the CSV format and appended onto a file. When the Query is done importing all the data, the output will be completely converted into a CSV file.
The above CSV file will be accepted as the input of the Import contacts on the Sendinblue Query step, which is the Action of importing and creating the above contacts in Sendinblue. Therefore, this CSV file will be populated in your Sendinblue account as the contacts that you imported from Hubspot.
Congratulations!
You have learned how to perform data transformation in your Flows using special steps (CSV and File append).
Learn how to map data using Objects in your Flow. An overview for creating your own Flows is provided here. You can store and retrieve values in a Flow using the Storage app.