Skip to main content
This page is a reference for the configuration options that are shared across all file and object storage source and destination components: Amazon S3, Google Cloud Storage, Azure Blob Storage, SFTP, FTPS, and HDFS. Provider-specific details (connection setup, which bucket or container label appears, which source actions are available for that provider) are documented on each provider’s own page. Google Drive source is also documented separately because its options differ significantly from the other providers.

Source Options

Source Location

Bucket / Container (S3, GCS, Azure Blob only) The name of the cloud storage bucket or container that holds the source files. The label varies by provider: Source path The path to the input folder, file, or pattern within the bucket or container (for object stores) or the server (for SFTP, FTPS, HDFS). You can use wildcard characters for pattern globbing. File and directory names that begin with an underscore (_) or a dot (.) are ignored.
For SFTP and FTPS, the path must begin with /. Integrate.io prepends it automatically if omitted.
Case-insensitive path (zip files only) When the source path contains .zip, a Case-insensitive path checkbox appears. Enable it to match the zip file path without regard to letter case.

Source File Format

Record delimiter: what breaks the data into records:
  • New line (\n, \n\r, \r): each line in the file is one record.
  • End of file: each file is treated as a single record.
Record type: the format of each record:
Avro file format is not supported.
Source data can be compressed (zip, gzip, or bzip2) or uncompressed. Zip files can be password-protected; enter the password in the Zip Password field. Source data must be UTF-8 encoded. For other encodings, see processing a different encoding.
To read ASC X12 EDI files such as 834 benefit enrollment files, use the dedicated EDI (X12) source instead.

Delimited Values Parameters

Applies when record delimiter is New line and record type is Delimited values.
1
Field delimiter: select from the dropdown (comma, tab) or type a single character or escape sequence:
2
String qualifier: if fields are enclosed in quotes, select ' or ". To allow line breaks inside quoted fields, select ” (newline inside) or ’ (newline inside). Use the newline-inside option with caution, as unbalanced quotes can affect job performance.
3
Escape character: available when a string qualifier is set. Specifies the character used to escape qualifier characters within field data.
4
First row contains column names: check to skip the header row in each file.
5
Detect header by name: locates the header row dynamically by matching your schema column names. Use this when the header is not always on row 1 (for example, files with a leading title or blank rows before the header). The full schema header must still appear in column order in each file. See Header Name Matching for how header cells are compared to schema field names.

Excel Parameters

Applies when record type is Excel.

Password-Protected Workbooks

If a workbook is encrypted with a password (set via Protect Workbook in Excel), check This file is password protected and enter the password in the File Password field. Integrate.io decrypts the workbook during schema preview and job runs. Passwords containing special characters such as $ are supported. The checkbox appears when the source path ends in .xlsx or .xlsm. Legacy .xls files are not supported for password decryption. Unchecking the box clears any saved password.
Password-protected workbooks do not use streaming mode. When a password is set, enabling Ingest large Excel file reads the workbook in standard mode.When streaming a single sheet, date cells come through as Excel serial numbers (e.g. 45306). Declare those columns as int or decimal in your schema, or transform them downstream.

Header Name Matching

Detect header by name and Match columns by name compare header cells in the file against the field names in your schema. The comparison is not an exact string match. It follows the same rules schema detection uses to turn a raw header into a field name:
  • Matching is case-insensitive.
  • Runs of spaces and underscores are treated as a single underscore, so the header Customer Id matches the field customer_id.
  • Punctuation is ignored, so the header Sales (USD) matches the field Sales_USD.
  • A leading run of underscores in a file header is ignored, so the header _natural_key matches the field natural_key. Schema detection cannot keep a leading underscore in a field name, and this rule lets the detected schema match the file it was detected from. Only leading underscores are dropped: workflow_id_ does not match workflow_id, and user_id does not match userid.
For example, a file whose header row is:
matches a schema with the fields id, name, city, amount. Match columns by name assigns exact matches first. The leading-underscore rule applies only to schema fields with no exact match, and only to columns that no other field claimed. If a workbook contains both an id column and an _id column, the schema field id maps to the id column. If a job with Detect header by name fails with no row matching expected columns [field1, field2, ...], the schema holds placeholder field names instead of the file’s real header names. Re-detect the source schema, then rerun the job.

JSON Parameters

Applies when record type is JSON object. Base record JSONPath Expression: defines the base record and extracts nested objects or arrays. Read more about processing JSON data.

Source Action

Determines what happens to source files during and after processing.
Available source actions vary by provider. Not all actions are available for every storage type. Refer to your provider’s page for details.

Incremental Load (Process Only New Files)

Move Processed Files


PGP Decryption

To decrypt source files encrypted with OpenPGP, select an active entry from the PGP Key dropdown. The entry must hold a private key. Integrate.io decrypts each matching file before parsing it.
Paths that contain a space, semicolon, or parenthesis are not supported when a PGP key is set.
See PGP Keys for how to add and manage keys.

Source Schema

After defining the source location and format, select the fields to include. For each field, define:
  • Alias: how to refer to the field in downstream components. Illegal characters are flagged before you close the dialog.
  • Data type: the type to cast the field to.
  • Key (JSON only): the key name in the source JSON.
You can also add fields from the Meta Data section. They are not read from the file: Integrate.io fills them in for every row. A preview reads only the first file the path matches, so every preview row shows that file’s path and time; a job run fills in each row’s own file. Change a meta data field’s alias to choose its column name. If the file already has a column named file_path or file_modified_at, that column is read like any other and the meta data field of the same name isn’t offered. Use file_modified_at to tell apart deliveries of a file that keeps the same name, or to keep only the newest version of a resent file. It is the time the storage reports for the file, not the time the job ran (for that, use the $_JOB_SUBMISSION_TIMESTAMP variable):
  • Amazon S3, Google Cloud Storage, Azure Blob Storage: when the object was last written, usually the upload time.
  • SFTP, HDFS: the file’s modification time, to the second.
  • FTPS: depends on the server. Many FTP servers report times only to the minute, and some in the server’s local time zone.
  • A file inside a zip archive (a path such as archive.zip/data.csv): the archive’s time.
Some transfer tools keep the original file’s time when they copy it (for example rsync -t or scp -p). For files delivered that way, the value is when the file was created at the sender, not when it arrived.
file_modified_at is not available for Excel, Parquet, XML, EDI (X12) or whole-file raw sources, for a path ending in .zip, for Google Drive, or with the Process only new files (Incremental load) and Copy, merge and process all files source actions. In those cases the files are copied before they are read, and the copy does not keep the original time.

Destination Options

Target Location

Bucket / Container (S3, GCS, Azure Blob only) The name of the target bucket or container. The label varies by provider: Target directory: the directory within the bucket or container where output files are written. One or more files are created in this directory. By default, the job fails if the directory already exists (see Destination Action).

Destination Format


Delimited Values Options

Header names with spaces: use triple underscores (___) in the alias or column name in a Select component to produce a space in the output header. To use a different separator character, add a package variable _FS_REPLACE_WITH_SPACE_IDENTIFIER with the character you want to replace.

XML Options

Applies when Destination format is XML. Each output file is a single XML document: a root element wrapping one record element per output record. Each field is written as a child element named after its field alias. XML output is available for Amazon S3, SFTP, and FTPS destinations. The XML format button appears only when the component’s connection is one of those types. A package saved with XML on any other backend fails validation with an error naming the supported backends. Both names must be valid XML element names: a letter or underscore, followed by letters, digits, underscores, hyphens, or periods. Colons are not allowed. An invalid name shows an inline error in the editor and fails when you save the package, not when the job runs. For example, with root element customers and record element customer:

Document structure (optional)

Use these options when the consumer of the file dictates the shape of the whole document, such as a two-section import file or a feed that expects a specific declaration. Every option is off unless you set it, so an XML destination saved without them writes the same bytes it wrote before. Both field options are checked against the destination’s field list when you save. A name that does not match a written field fails on save with a message that lists the fields it saw. A section that reappears after it closed fails the job with a message that names the section field. With Root element set to ConfigDataImport, Record element set to PositionType, and Section element set to Position:
For example, with root attributes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance", Standalone document enabled, Section field set to section, and Record element field set to record_type:
With Repeat nested groups on, a bag column named ContactInformation holding two tuples writes as:
With the option off, the same bag writes as one <ContactInformation> wrapper holding two <item> entries. Output is always well-formed XML, regardless of the data:
  • The characters &, <, and > are escaped. Control characters that XML 1.0 does not allow are dropped. Tabs and newlines are preserved. A carriage return is written as the character reference &#13; so parsers read it back unchanged.
  • A null value is written as an empty element (<email/>). An empty string is written as an open and close tag.
  • A nested record becomes nested elements named by its own fields. A bag becomes repeated <item> elements. A map becomes one child element per key. Keys that are not valid XML element names are written as <entry key="..."> with the key kept verbatim.
  • A field alias that is not a valid XML element name is adjusted to a valid one. Sibling elements that would end up with the same name get a numeric suffix to stay distinct.
XML output is always UTF-8. The document declares encoding="UTF-8", so the character encoding selector is not shown for XML destinations. Setting any other encoding through the API fails on save. Selecting XML turns on Merge output to single file so one job writes one document in one file. You can uncheck it to write one document per part file. The suggested file name suffix is .xml. A job that produces zero records writes a document with the declaration and an empty root element, for example <?xml version="1.0" encoding="UTF-8"?><records></records>. An empty XML file is not a valid document, and most parsers reject it. Enable Skip Empty Output to write no file at all when there are no rows.

Excel Options

Applies when Destination format is Excel (XLSX). Each output file is an .xlsx workbook with one sheet. The sheet holds an optional header row of field aliases, then one row per record. Use Excel output when the consumer of the file expects a workbook rather than a CSV, such as a business user or an import tool that only accepts .xlsx. Excel output is available for SFTP, Amazon S3, Google Cloud Storage, and Azure Blob Storage destinations. The Excel (XLSX) format button appears only when the component’s connection is one of those types. A package saved with Excel on any other connection type, such as FTPS or HDFS, fails validation with the error Excel (XLSX) output is not yet available for <provider> connections; it is available for SFTP, Amazon S3, Google Cloud Storage and Azure Blob Storage. The sheet name must follow these rules. A name that breaks one shows an inline error in the editor and fails when you save the package, not when the job runs.
  • At most 31 characters. Emoji and some other symbols count as two characters.
  • None of these characters: : \ / ? * [ ].
  • No spaces or other whitespace. Use an underscore instead, for example Q1_Sales.
  • No $, no double quote ("), and no control characters.
  • Does not start or end with an apostrophe ('), and does not start with a hyphen (-).
Excel output has these restrictions:
  • Each sheet holds at most 1,048,576 rows, including the header row. A job that writes more rows to one file fails rather than truncating the output.
  • Output is always UTF-8. The character encoding selector is not shown for Excel, and setting another encoding through the API fails on save.
  • Output compression is not available. The compression selector is not shown for Excel, because an .xlsx file is already a compressed archive.
  • The suggested file name suffix is .xlsx. If you do not set a suffix, Integrate.io adds .xlsx to each output file.
To create an Excel destination through the API, set the component’s destination type as follows:

Output Compression

Available for Delimited values, JSON, XML, and Fixed width formats. Not available for Parquet or Excel.

PGP Encryption

To encrypt output files with a trading partner’s OpenPGP public key, select an active entry from the PGP Key dropdown. The entry must hold a public key. Files are encrypted before being written to the target path.
Paths that contain a space, semicolon, or parenthesis are not supported when a PGP key is set.
See PGP Keys for how to add and manage keys.

Destination Action

Controls what happens when the target directory already exists.

Merge Output to Single File

Check Merge output to single file to write all output to a single file rather than multiple part files. Note that file size limits on some platforms may cause the job to fail for large outputs.

Character Encoding

Available only when Destination action is set to Use intermediate storage, copy to existing directory. XML destinations require UTF-8. The selector is not shown for XML, and setting another encoding through the API fails on save. Excel destinations also require UTF-8. The selector is not shown for Excel, and setting another encoding through the API fails on save.

Target File Names

Default pattern: output files are named part-[mr]-[0-9]{5} (e.g. part-m-00000). To use a custom pattern, select Custom pattern:

Fixed Width Layout

When Destination format is set to Fixed width, a Fixed width layout step appears. The layout is a table with one row per incoming field, in schema order. Every incoming field is written with no separators between columns. To write only some fields or in a different order, add a Select transformation before this destination. The total record width in characters is shown below the table and updates as you edit.

Preview with Data

Click Preview with data to run the component through the previewer and see the actual records the job would write. Rows whose sample value does not fit the configured width are marked with an advisory message. Blocking errors (invalid width, pad, or decimals) appear in the errors box and prevent saving.

Persisted Layout Format

The layout is stored as fixed_width_destination_type on the component. Example:
record_delimiter and char_encoding round-trip through the API but are not editable in the UI.

Skip Empty Output

Available for Delimited values, JSON, XML, and Fixed width formats. When checked, no output files are written if the job produces zero records. Useful for downstream processes that should not receive empty files.

FAQ

Which source actions are available for my storage provider? It depends on the provider. Amazon S3, GCS, and SFTP/FTPS support all four actions. Azure Blob Storage supports three. HDFS supports only “process all files directly.” Check your provider’s page for the exact list. Can I read compressed files? Yes. Source files can be zip, gzip, or bzip2 compressed. Password-protected zip files are also supported; enter the password in the Zip Password field. Can I read files in a different character encoding? Source data must be UTF-8 encoded. For other encodings, see processing a different encoding. How does incremental load work? Integrate.io tracks which files have been processed in a manifest file stored at a path you specify. Each run compares the current file listing to the manifest and reads only new files. See reading file storage data incrementally. Can I write to a single output file instead of multiple part files? Yes. Enable Merge output to single file in the destination component. Be aware that very large outputs may exceed file size limits on some platforms. How do I include spaces in output header names? Use triple underscores (___) in the alias in a Select component. They become spaces in the output header. To use a different replacement character, set the package variable _FS_REPLACE_WITH_SPACE_IDENTIFIER.

Reading File Storage Data Incrementally

Selecting File Input Format

Pattern Matching in Source Paths

PGP Keys

Using Variables in Packages

EDI (X12) Source

Last modified on October 22, 2026