Product documentation
Patchworks
Patchworks
  • Patchworks product documentation
  • Welcome
    • Welcome to Patchworks!
    • What is Patchworks?
    • Patchworks demos
    • Product roadmap
  • Getting Started
    • Getting started introduction
    • Core subscription tiers
    • Key concepts & terminology
    • Multi-language support
    • Patchworks quickstart guide
    • Technical overview
      • Patchworks infrastructure
        • Auto-scaling
      • ISO certification
      • SOC 2
      • Tech stack
      • Patchworks IPs
  • Registration
    • Registration introduction
    • Registration & sign-in summary
    • Password control
    • Registering for a Patchworks account
      • Simple registration
      • Google account registration
    • Two-factor authentication (2FA)
    • SSO
      • Azure AD / Entra
      • Okta
      • PingOne
  • Company Management
    • About company profiles
    • Accessing your company profile
    • Adding & managing company profile banners
    • Multi-company profiles
      • Adding & linking a new company
      • Switching in & out of a linked company
      • Viewing linked companies for your multi-company profile
      • Downloading a linked companies summary
      • Un-linking a company from your multi-company profile
    • Company insights
      • Accessing your company insights
      • Company insights overview
        • About operations
        • About data usage
  • Users, Roles & Permissions
    • Users, roles & permissions introduction
    • Roles & permissions summary
    • Viewing all users for your company profile
    • Creating a new user account for your company profile
    • Updating general details for an existing user account
    • Updating the role for an existing user account
    • Triggering a password reset for another user
    • Managing your own user account
    • Managing team members & users for multi-company profiles
      • Working with your team members
        • Viewing team members for your own multi-company profile
        • Creating a new team member to manage linked companies
        • Assigning user roles for an existing team member
        • Viewing team members who manage a linked company
        • Granting & revoking permission for an existing team member to manage a linked company
        • Triggering a password reset for an existing team member
        • Removing a team member account from your multi-company profile
      • Working with 'native' company users
        • Viewing 'native' company users for a linked company
        • Creating a new 'native' user for a linked company
        • Assigning roles for an existing 'native' linked company user
        • Triggering a password reset for an existing 'native' linked company user
        • Removing a 'native' linked company user from their company profile
  • Marketplace
    • The Patchworks marketplace
    • Marketplace blueprints
      • Submitting a blueprint to the public marketplace
    • Marketplace connectors
      • Submitting a connector for the public marketplace
    • Marketplace process flows
    • Marketplace scripts
    • Marketplace cross-reference lookups
    • The notification centre
    • Private marketplaces
      • Accessing your private marketplace
      • Uploading private marketplace resources
        • Building & uploading blueprints for your private marketplace
        • Uploading custom connectors to your private marketplace
        • Uploading process flows to your private marketplace
        • Uploading scripts to your private marketplace
        • Uploading cross-reference lookups to your private marketplace
      • Changing private marketplace resources
    • Marketplace troubleshooting
      • Installed process flows not working as expected
  • Blueprints
    • Blueprints introduction
    • The anatomy of a blueprint
    • Installing a blueprint
    • Building a blueprint
    • Patchworks blueprints
      • Lightspeed X-Series & Shopify
      • SEKO Logistics & Shopify
      • Shopify & NetSuite
      • Shopify & Descartes Peoplevox
      • Shopify & Virtualstock Supplier
        • Available process flows (Shopify & Virtualstock Supplier)
          • Orders (Shopify & Virtualstock Supplier)
          • Fulfillments (Shopify & Virtualstock Supplier)
          • Inventory (Shopify & Virtualstock Supplier)
        • Installation guide (Shopify & Virtualstock Supplier)
          • Stage 1: Create a Shopify app/sales channel for Patchworks
          • Stage 2: Add required products to your Patchworks sales channel (Shopify & Virtualstock Supplier)
          • Stage 3: Define instances & install the app (Shopify & Virtualstock Supplier)
            • Adding connector instances AFTER installation
          • Stage 4: Update cross-reference lookups (Shopify to Virtualstock Supplier)
          • Stage 5: Review & test the Orders process flow (Shopify & Virtualstock Supplier)
            • Changing the supplier delivery date calculation for orders
          • Stage 6: Review & test the Fulfillments process flow (Shopify to Virtualstock Supplier)
          • Stage 7: Review & test the Inventory process flow (Shopify to Virtualstock Supplier)
          • Stage 8: Go live (Shopify to Virtualstock Supplier)
      • Veeqo & TikTok
  • Connectors & instances
    • Connectors & instances introduction
    • Patchworks connectors
      • Adobe Commerce - Magento (prebuilt connector)
      • Aero Commerce (prebuilt connector)
      • Airtable (prebuilt connector)
      • Akeneo (prebuilt connector)
      • Algolia (prebuilt connector)
      • Amazon Seller Partner API (prebuilt connector)
      • Avasam (prebuilt connector)
      • BigCommerce (prebuilt connector)
      • BigCommerce B2B Edition (prebuilt connector)
      • Bleckmann API (prebuilt connector)
      • Bloomreach Engagement (prebuilt connector)
      • Braze (prebuilt connector)
      • Brightpearl (prebuilt connector)
      • Business Central (prebuilt connector)
      • CacheFlow (prebuilt connector)
      • Carma (prebuilt connector)
      • Centra (prebuilt connector)
      • ChannelEngine (prebuilt connector)
      • Cin7 (prebuilt connector)
      • Clarus WMS (prebuilt connector)
      • Clerk (prebuilt connector)
      • Cloudshelf (prebuilt connector)
      • Commerce Layer (prebuilt connector)
      • Commercetools (prebuilt connector)
      • Cybertill (prebuilt connector)
        • Cybertill post-request script
      • Deposco (prebuilt connector)
      • Descartes Peoplevox (prebuilt connector)
        • The Peoplevox setData script
          • Using the Peoplevox setData script in process flows
        • Peoplevox XML to JSON conversion script
        • Using the Peoplevox search filter when pulling data
      • Dotdigital (prebuilt connector)
      • EdiFabric (prebuilt connector)
      • EKM Insight (prebuilt connector)
      • Emarsys (prebuilt connector)
        • Emarsys pre request script
      • Ergonode (prebuilt connector)
      • EVA (prebuilt connector)
      • Flexport (prebuilt connector)
      • Fluent Commerce (prebuilt connector)
      • Fredhopper by Crownpeak (prebuilt connector)
      • Freshdesk (prebuilt connector)
      • FTP (prebuilt connector)
      • Fulfillmenttools (prebuilt connector)
      • Google BigQuery (prebuilt connector)
      • Google Pub Sub (prebuilt connector)
      • Google Sheets (prebuilt connector)
        • Working with the Google Sheets connector
      • Gorgias (prebuilt connector)
      • GXO Logistics (prebuilt connector)
      • Happy Returns (prebuilt connector)
      • Huboo (prebuilt connector)
      • Hubspot (prebuilt connector)
      • InPost (prebuilt connector)
      • Inriver (prebuilt connector)
      • Jira (prebuilt connector)
      • Klaviyo (prebuilt connector)
      • Lightspeed Retail X-Series (prebuilt connector)
      • Linnworks (prebuilt connector)
      • LionWheel (prebuilt connector)
      • Mailchimp (prebuilt connector)
      • Mailjet (prebuilt connector)
      • Marketplacer - Operator (prebuilt connector)
      • Marketplacer - Seller (prebuilt connector)
      • Mirakl (prebuilt connector)
      • MongoDB (prebuilt connector)
      • NetSuite (prebuilt connector)
        • Preparing your NetSuite environment to work with Patchworks
        • OAuth 2 (client credentials) authentication
        • OAuth 1 authentication
      • Occtoo (prebuilt connector)
      • Octopus Energy (prebuilt connector)
      • Odoo (prebuilt connector)
      • Ometria (prebuilt connector)
      • OnBuy (prebuilt connector)
      • OneStock (prebuilt connector)
      • OpenAI (prebuilt connector)
      • Orderwise (prebuilt connector)
      • PagerDuty (prebuilt connector)
      • Pimberly (prebuilt connector)
      • Plytix (prebuilt connector)
        • Plytix post-request script
      • Prima Solutions (prebuilt connector)
        • Setting up a Prima Solutions connection
      • Quickbooks (prebuilt connector)
      • RabbitMQ (prebuilt connector)
      • Rebound (prebuilt connector)
      • ReturnGo (prebuilt connector)
      • Returnless (prebuilt connector)
      • Reveni (prebuilt connector)
      • REVIEWS.io (prebuilt connector)
      • Sage 200 (prebuilt connector)
      • Salesforce Commerce Cloud (prebuilt connector)
      • Salsify (prebuilt connector)
      • Sanity.io (prebuilt connector)
      • SCAYLE (prebuilt connector)
      • SEKO (prebuilt connector)
      • SFTP (prebuilt connector)
      • ShipBob (prebuilt connector)
      • Shiptheory (prebuilt connector)
      • Shopify (prebuilt connector)
        • Shopify token authentication
        • Adding a custom (GraphQL) endpoint for Shopify
      • Shopline (prebuilt connector)
      • Shopware (prebuilt connector)
      • Sitoo (prebuilt connector)
      • Snowflake (prebuilt connector)
      • SparkLayer (prebuilt connector)
      • Stok.ly (prebuilt connector)
      • Swan Retail System (prebuilt connector)
        • Swan Retail System - pagination update timestamp response script
      • Swap Commerce (prebuilt connector)
      • Tempo (prebuilt connector)
      • The Edge by John Lewis (prebuilt connector)
      • TikTok Shop (prebuilt connector)
      • Torque (prebuilt connector)
      • Trello (prebuilt connector)
      • Twilio (prebuilt connector)
      • Veeqo (prebuilt connector)
      • Virtualstock (prebuilt connector)
      • Visual Next (prebuilt connector)
      • Visualsoft (prebuilt connector)
      • Voyado (prebuilt connector)
      • Whistl (prebuilt connector)
      • WooCommerce (prebuilt connector)
      • Xero (prebuilt connector)
      • Zendesk (prebuilt connector)
      • ZigZag (prebuilt connector)
    • Working with connectors
      • Accessing your connectors
      • Installing a connector
      • Updating a connector
      • Removing a connector
    • Working with instances
      • Accessing instances
      • Adding an instance
      • Updating an instance
      • Removing an instance
    • Event connectors (BETA)
      • Accessing your event connectors
      • Adding a new event connector
      • Updating an existing event connector
      • Removing an existing event connector
      • Message queues/topics
        • Adding a new message queue/topic
        • Renaming a message queue/topic
        • Removing a message queue/topic
  • Process flows
    • About process flows
    • The process flow home page
    • Prebuilt process flows
      • Installing a prebuilt process flow
      • The anatomy of a prebuilt process flow
    • Building process flows
      • Approaching your first process flow
      • Techniques for building process flows
      • Best practice for building process flows
        • Payload size - best practice
        • Scripts - best practice
        • Multi environment management - best practice
        • Targeted syncs - best practice
      • Understanding how data flows through shapes
      • Process flow versioning
      • Adding a new process flow
      • The process flow canvas
      • Process flow settings
      • Process flow shapes
        • Standard shapes
          • Assert shape
          • Branch shape
          • Connector shape
            • Configuring a database connection
            • Using connector shape response scripts
            • Configuring SFTP connections
            • Configuring FTP connections
          • Filter shape
            • Using regex for string-type filters
            • Using contains one of many or does not contain one of many for string filters
          • Flow control shape
          • Manual payload shape
          • Map shape
            • Importing & exporting map shape configurations
            • Working with field mappings
            • Working with field transformations
              • Available transform functions
                • Array transform functions
                  • Array join transform function
                • Date transform functions
                  • Custom dynamic date transform function
                  • Custom static date transform function
                  • Format date transform function
                  • Round date transform function
                • Number transform functions
                  • Cast to string transform function
                  • Custom number transform function
                  • Math transform function
                  • Round number transform function
                • Other transform functions
                  • Cache lookup transform function
                  • Cast boolean to string transform function
                  • Cast to boolean transform function
                  • Custom boolean transform function
                  • Null to string transform function
                  • Null to zero transform function
                  • Null value transform function
                  • Script transform function
                • String transform functions
                  • Contains one of many transform function
                  • Custom string transform function
                  • Cast to float transform function
                  • Concatenate transform function
                  • Does not contain one of many transform function
                  • Cast to number transform function
                  • First word transform function
                  • JSON encode transform function
                  • Last word transform function
                  • Pad transform function
                  • Replace transform function
                  • Split string transform function
            • Mappings - tips & tricks
              • Mapping an array & a parent field
          • Notify shape
          • Route shape
          • Run process flow shape
          • Set variables shape
          • Split shape
          • Track data shape
            • The tracked data page
          • Trigger shape
            • Trigger shape (schedule)
            • Trigger shape (callback)
            • Trigger shape (event listener)
            • Trigger shape (webhook)
          • Try/Catch shape
        • Advanced shapes
          • Cache
            • Add to cache shape
              • Generating dynamic cache keys with variables
              • Appending data to a cache
              • Cache pagination options
            • Load from cache shape
              • What cached data do you want to load?
                • Loading all cached data from a static cache key
                • Loading multiple items from dynamic cache keys
                • Loading a single item from a dynamic cache key
            • Referencing a cache in mapping transformations
            • Cache maintenance
          • De-Dupe shape
            • Adding & configuring a de-dupe shape
            • Working with data pools
            • Importing & exporting de-dupe data
          • Script shape
          • Callback shape
      • Skipping shapes
      • Shape notes
      • Dynamic variables
        • Payload variables
        • Metadata variables
        • Flow variables
          • Adding & managing flow variables
          • Referencing flow variables in a process flow
          • Referencing flow variables in custom scripts
          • Referencing flow & meta variables in mapping transformations
      • Connection pools
    • Managing process flows
      • Accessing your process flows
      • Enabling & disabling a process flow
      • Renaming a process flow
      • Duplicating a process flow
        • Duplicating a process flow between linked companies
        • Shape configuration in a duplicated process flow
      • Process flow labels
        • Process flow label management
        • Using process flow labels
      • Initialising a process flow manually
      • Initialising a process flow manually with a payload
      • Stopping a running process flow
      • Removing a process flow
    • Error reporting & exception handling
      • Real-time run logs
      • Run logs & queue
        • Working with run logs
          • Viewing logs
          • Viewing logs (classic)
          • Downloading run logs
          • Retrying a failed process flow run
        • Working with your run queue
      • Email notifications for failed process flow runs
    • Cross-reference lookups
      • Accessing cross-reference lookups
      • Installing cross-reference lookups
      • Adding a cross-reference lookup
      • Importing & exporting cross-reference lookups
      • Using a cross-reference lookup in field transformations
    • Troubleshooting process flows
      • Unable to edit a process flow
      • Process flow not running
      • Process flow run failures
      • Re-syncing a previous payload
      • Required fields are not being tracked
      • Process flow timeout retrieving large payload
      • Process flow error when using a webhook connector
      • Your third-party systems go offline
      • Using a pre-request script for some process flows but not others
  • General Settings
    • General settings introduction
    • Audit logs
    • Notification groups
  • Developer Hub
    • Patchworks developer hub
    • Postman importer
    • Connector builder
      • Accessing the connector builder
      • Building your own connector
        • 1: Basic details
        • 2: Connector variables
        • 3: Authentication methods
          • Adding a new authentication method
          • Authentication method options
            • Auth variables
            • Connector variables
            • URL parameters
            • Header
            • Body
            • Pre-request script
            • Post-request script
          • Supported authentication types
            • Basic authentication
              • Configuring basic authentication
            • Token-based authentication
              • Configuring token-based authentication
            • OAuth 2
              • OAuth 2 (authorisation code)
                • Configuring OAuth 2 authentication (authorisation code)
              • OAuth 2 (client credentials)
                • Configuring OAuth 2 authentication (client credentials)
            • OAuth 1
              • Configuring OAuth 1 authentication
            • SOAP authentication
            • DB user pass authentication
            • No authentication
              • Configuring No Auth authentication
        • 4: Endpoints
          • Adding a new endpoint
          • Endpoint options
            • Authentication
            • Endpoint variables
            • URL
            • Header
            • Body
            • Schema / Taxonomy
              • Schema options
              • Field tagging
                • Working with field tags
                • Patchworks field tagging taxonomy
                  • Patchworks field tagging taxonomy: orders
                  • Patchworks field tagging taxonomy: customers
                  • Patchworks field tagging taxonomy: refunds
                  • Patchworks field tagging taxonomy: products
                  • Patchworks field tagging taxonomy: fulfillments
                  • Patchworks field tagging taxonomy: inventory
            • Pre-request script
            • Post-request script
            • Pagination
              • Custom relative URI pagination method
              • GraphQL cursor pagination method
              • Limit-offset pagination method
              • Link header pagination method
              • Next page token pagination method
              • Next page URL pagination method
              • Page number parameter pagination method
              • PeopleVox pagination method
              • NetSuite SOAP pagination method
              • Script pagination
          • Enabling an authentication method for an endpoint
        • Techniques for working with variables & parameters
          • Working with variables
          • Working with parameters
        • Building a database connector
          • Working with queries
      • Maintaining your own connectors
    • Custom scripting
      • Accessing scripts
      • Adding & testing custom scripts
        • Custom script messages for logs
      • Custom scripting technical overview
      • Custom script examples (general)
      • Pagination scripts
    • Patchworks API
      • Core API
      • Core API authentication
        • API keys
        • OAuth 2 (client credentials)
      • Core API spotlights
        • Initialising a process flow & sending data via the Patchworks API
          • Quickstart guide
          • The steps
            • Preparing your data
            • Mapping payload data
            • Obtaining process flow & version IDs for API requests
            • Obtaining a token for Patchworks API authentication
            • Initialising a process flow & sending data
        • Working with cross-reference lookup API requests
      • Core API general information
        • HTTP response status codes
  • Patchworks bolt-ons
    • Patchworks bolt-ons
    • Stockr
      • Stockr overview
      • The Stockr summary
  • RELEASE INFORMATION
    • Release information introduction
    • Core release notes
      • 2025 04 16 release notes (core)
      • 2025 04 03 release notes (core)
      • 2025 03 19 release notes (core)
      • 2025 03 05 release notes (core)
      • 2025 02 26 release notes (core)
      • 2025 02 19 release notes (core)
      • 2025 01 15 release notes (core)
      • 2024 12 16 release notes (core)
      • 2024 12 04 release notes (core)
      • 2024 11 07 release notes (core)
      • 2024 10 30 release notes (core)
      • 2024 10 16 release notes (core)
      • 2024 10 02 release notes (core)
      • 2024 09 11 release notes (core)
      • 2024 08 29 release notes (core)
      • 2024 08 21 release notes (core)
      • 2024 08 14 release notes (core)
      • 2024 08 08 release notes (core)
      • 2024 08 07 release notes (core)
      • 2024 07 31 release notes (core)
      • 2024 07 24 release notes (core)
      • 2024 07 17 release notes (core)
      • 2024 07 03 release notes (core)
      • 2024 06 27 release notes (core)
      • 2024 06 26 release notes (core)
      • 2024 06 18 release notes (core)
      • 2024 06 12 release notes (core)
      • 2024 06 05 release notes (core)
      • 2024 05 30 release notes (core)
      • 2024 05 23 release notes (core)
      • 2024 05 15 release notes (core)
      • 2024 05 01 release notes (core)
      • 2024 04 18 release notes (core)
      • 2024 04 11 release notes (core)
      • 2024 03 21 release notes (core)
      • 2024 03 13 release notes (core)
      • 2024 03 07 (2) release notes (core)
      • 2024 03 07 release notes (core)
      • 2024 02 29 release notes (core)
      • 2024 02 27 release notes (core)
      • 2024 02 13 release notes (core)
      • 2024 01 25 release notes (core)
      • 2024 01 18 release notes (core)
      • 2024 01 12 release notes (core)
      • 2024 01 09 release notes (core)
      • 2024 01 04 release notes (core)
      • 2023 12 21 release notes (core)
      • 2023 12 14 release notes (core)
      • 2023 12 05 release notes (core)
      • 2023 11 16 release notes (core)
      • 2023 11 07 release notes (core)
      • 2023 10 26 release notes (core)
      • 2023 10 16 release notes (core)
      • 2023 10 05 release notes (core)
      • 2023 09 21 release notes (core)
      • 2023 08 17 release notes (core)
      • 2023 08 15 release notes (core)
      • 2023 08 10 release notes (core)
      • 2023 08 01 release notes (core)
      • 2023 07 27 release notes (core)
      • 2023 07 26 release notes (core)
      • 2023 07 25 release notes (core)
      • 2023 07 24 release notes (core)
      • 2023 07 14 release notes (core)
      • 2023 06 26 release notes (core)
    • Tapestry release notes
      • 2023 04 30 release notes (dashboard)
      • 2023 03 31 release notes (dashboard)
      • 2023 02 23 release notes (dashboard)
      • 2023 01 31 release notes (dashboard)
      • 2022 11 07 release notes (dashboard)
      • 2022 11 01 release notes (dashboard)
      • 2022 10 24 release notes (dashboard)
      • 2022 10 10 release notes (dashboard)
      • 2022 09 26 release notes (dashboard)
      • 2022 08 23 release notes (dashboard)
    • Stockr release notes
      • 2023 01 31 release notes (Stockr)
  • Support
    • Raising a support ticket
Powered by GitBook
On this page
  • Introduction
  • About the Patchworks SFTP connector
  • Authentication
  • Endpoints
  • Configuring SFTP endpoints
  • Using an {{original_filename}} variable
  • Using an {{original_path}} variable
  • Using a {{current_filename}} variable
  • Creating SFTP folders dynamically based on timestamps
  • Syncing SFTP data to another target connector
  • More information
Export as PDF
  1. Process flows
  2. Building process flows
  3. Process flow shapes
  4. Standard shapes
  5. Connector shape

Configuring SFTP connections

PreviousUsing connector shape response scriptsNextConfiguring FTP connections

Last updated 12 months ago

Introduction

The Patchworks SFTP connector is used to work with data via files on SFTP servers in process flows. You might work purely in the SFTP environment (for example, copying/moving files between locations), or you might sync data from SFTP files into other connectors, or you might use a combination of both! For example, a process flow might be designed to:

  1. Pull files from an SFTP server

  2. Use the data in those files as the payload for subsequent processing (e.g. sync to Shopify)

  3. Move files to a different SFTP server location

Show me

This guide explains the basics of configuring a connection shape with an SFTP connector.

Guidance on this page is for SFTP connections however, they also apply for FTP.

About the Patchworks SFTP connector

Authentication

When you the Patchworks SFTP connector from the and then , you'll find that two authentication methods are available:

Auth method
Summary

User pass

The instance is authenticated by providing a username and password for the SFTP server.

Key pass

The instance is authenticated by providing a private key (RSA .pem format) for the SFTP server.

Endpoints

When you add a connection shape and select an SFTP connector, you will see that two endpoints are available:

Here:

  • SFTP GET UserPass is used to retrieve files from the given server (i.e. to receive data)

  • SFTP PUT UserPass is used to add/update files on the given server (i.e. to send data)

You may notice that the PUT UserPass endpoint has a GET HTTP method - that's because it's not actually used for SFTP. All we're actually doing here is retrieving host information from the connector instance - you'll set the FTP action later in the endpoint configuration, via an ftp command settings.

Configuring SFTP endpoints

Having selected either of the two SFTP endpoints, configuration options are displayed. The same options are used for both endpoints but in a different sequence, reflecting usage:

These fields are summarised below:

Option
Summary

FTP command

A valid FTP command is expected at the start of this field (e.g. get, put, rename, etc.). If required, qualifying path/filename information can follow a given command. For example: rename:/orders/store1/processed/{{current_filename}}

Root

This field is only needed if you are specifying a regular expression in the subsequent path field. If you are NOT defining the path field as a regular expression, the root field isn't important - you can leave it set to /. If you are ARE defining the path field as a regular expression, enter a root path that reflects the expected file location as closely as possible - this will optimise performance for expression matching. For example, suppose the files that we want to process are in the following SFTP folder: /orders/store/year/pending and that our specified path contains a regular expression to retrieve all files for store 1 for the current day in 2023. In this case our root would be defined as: orders/store1/2023/pending In this way, any regular expression to match for the path will start in the relevant (2023 )folder - rather than checking folders and subfolders for all stores and all years.

Path

If the name of the file that you want to target is static and known, enter the full path to it here - for example:

store1/2023/pending/20230728.json

If the name is variable and therefore unknown, you can specify a regular expression as the path. In this case, you enter the required regular expression here, and ensure that the root field contains a path to the relevant folder (see above).

Original filename

Original path

Using an {{original_filename}} variable

In this scenario, we can't know the literal name of the file(s) that the SFTP PUT UserPass endpoint will receive. So, by setting the path field to {{original_filename}}, we can refer back to the filename(s) from the previous SFTP connection step.

Using an {{original_path}} variable

The {{original_path}} variable is used to replicate the path from a previous SFTP connection step. It's most typically used with the SFTP PUT UserPass endpoint.

Using a {{current_filename}} variable

The {{current_path}} variable is used to reference the filename within the current SFTP connection step.

For example, you might want to move existing files to a different SFTP folder. The rename FTP command is an efficient way to do this - for example:

Here, we're using the FTP rename command to effectively move files - we're renaming with a different folder location, with current filenames:

rename:store1/completed_orders/{{current_filename}}

Creating SFTP folders dynamically based on timestamps

Script code

The following four lines of code should be added to your script:

$timestamp = round(microtime(true) * 100);
$meta = $data['meta'];
$meta['original_filename'] = 'FIXED_TEXT' . '_' . $timestamp . '.xml';
$data['meta'] = $meta;

Our example is PHP - you should change as needed for your preferred language.

SFTP connection shape path

The path in your SFTP connection shape should be set to:

{{original_filename}}

How it works

Syncing SFTP data to another target connector

Much of the information above focuses on scenarios where you are working with files between different SFTP locations. However, another approach is to take the data in files from an SFTP server and sync that data into another Patchworks connector.

When a process flow includes a source connection for an SFTP server (using the SFTP GET UserPass endpoint) and a non-SFTP target connector (for example, Shopify), data in the retrieved file(s) is used as the incoming payload for the target connector.

If multiple files are retrieved from the SFTP server (because the required path in settings for the SFTP connector is defined as a regular expression which matches more than one file), then each matched file is put through subsequent steps in the process flow one at a time, in turn. So, if you retrieve five files from the source SFTP connection, the process flow will run five times.

More information

For information about working with regular expressions, please see the link below:

Further information on these authentication methods can be found on our page.

When specifying a path to a given folder in this way, you don't need a / at the start or at the end.

Retrieve files from root with a common filename prefix

Suppose our SFTP folder is: store1/orders/2023/pending ...and that it contains a number of files which all start with 'orders' followed by a date:

Our path and root fields would be defined as below:

Here, the root field is set to the folder containing our required files and the path field contains a regular expression where:

  • the / at the start of the string denotes the start of the regular expression

  • the ^ means that the first part of the line (i.e. filename) must start with the literal string orders

  • [0-9]* matches any sequence of digits

  • \. is an escaped full stop, so a literal full stop is used instead of the special meaning that a full stop has in regular expressions

  • json is a literal string to be matched

  • the / at the end of the string denotes the end of the regular expression

Retrieve all files of a type from the root

Suppose you have multiple .csv files to be retrieved from the root of your server. In this case, the root should be left blank and the path should be set as: /.*.csv/i For example:

Here, the root field is empty and the path field contains a regular expression where:

  • the / at the start of the string denotes the start of the regular expression.

  • *. matches any character (.) zero or more times (*). The * ensures that any characters can appear before .csv element of the filename.

  • \.csv matches the literal string .csv. The backslash (\) is used to escape the dot (.), making it match a literal dot, so the csv is matched exactly.

  • / at the end of the string denotes the end of the regular expression.

  • i is a flag that means 'case-insensitive'. This ensures that the regular expression will match both upper and lower case variations of the letters in the pattern. For example, it would match both .csv and .CSV.

This field is not currently used. For information about working with original filenames please see the section below.

This field is not currently used. For information about working with original paths please see the section below.

If you're processing files between SFTP server locations, the {{original_filename}} variable is used to reference filenames from a previous SFTP connection step. It's most typically used with the SFTP PUT UserPass endpoint. This handles cases where you're taking action with files/data processed by a previous which is configured to use the SFTP GET UserPass endpoint and retrieve files matching a regular expression path.

Example
  • the / at the start of the string denotes the start of the regular expression

  • the ^ means that the first part of the line (i.e. filename) must start with the literal string orders

  • [0-9]* matches any sequence of digits

  • \. is an escaped full stop, so a literal full stop is used instead of the special meaning that a full stop has in regular expressions

  • json is a literal string to be matched

  • the / at the end of the string denotes the end of the regular expression

It will match the following files:

These are:

  • orders20230717.json

  • orders20230718.json

  • orders20230719.json

Now if we check settings for the second SFTP connection, we can see that it's configured to put files into a ready folder. By specifying {{original_filename}} in the path field, we are referencing filenames from the first SFTP connection.

So, the three files retrieved from the first SFTP connection step (from the pending folder) are copied to the ready folder in the second SFTP connection step.

This handles cases where you're taking action with files/data processed by a previous which is configured to use the SFTP GET UserPass endpoint to retrieve files matching a regular expression path and you want to replicate the source path in the target location.

Example
  • the / at the start of the string denotes the start of the regular expression

  • orders\/2023\/pending\/ is a literal string for the folder structure, with escaped forward slashes

  • orders is a literal string

  • [0-9]* matches any sequence of digits

  • \. is an escaped full stop, so a literal full stop is used instead of the special meaning that a full stop has in regular expressions

  • json is a literal string to be matched

  • the / at the end of the string denotes the end of the regular expression

It will match the following files:

These are:

  • orders20230717.json

  • orders20230718.json

  • orders20230719.json

Now if we check settings for the second SFTP connection, we can see that it's configured to put files into a path specified as {{original_path}}:

So, the three files retrieved from the first SFTP connection step are copied to the ready folder in the second SFTP connection step and the source folder structure is replicated:

A fairly common requirement is to create folders on an SFTP server which are named according to the current date. This can be achieved using a , as summarised below.

The data object in the contains three items: payload, meta, and variables.

Our creates a timestamp, puts it in to the meta, and then puts the meta into the data. The SFTP shape always checks if there is an original_filename key in the meta and if one exists, this is used.

The sample process flow below shows two connection shapes that are configured with SFTP endpoints - the first is to get files and the second is to put files: If we look at settings for the first SFTP connection, we can see that it's configured to get files matching a regular expression, in a pending folder: The regular expression is explained below:

The sample process flow below shows two connection shapes that are configured with SFTP endpoints - the first is to get files and the second is to put files: Our aim is to copy files retrieved from an FTP location in the first connection step, to a second FTP location, using the same folder structure as the source.

If we look at settings for the first SFTP connection, we can see that it's configured to get files matching a regular expression, in a store1 folder: The path is added as a regular expression, explained below:

SFTP (prebuilt connector)
connection shape
connection shape
custom script
script shape
script code
Using an {{original_filename}} variable
Using an {{original_path}} variable
install
Patchworks marketplace
add an instance
LogoPHP Regular Expressions