We're software that helps growing brands & retailers grow and scale. Sync, sell and ship your products and inventory on online marketplaces and storefronts faster, easier and more accurately.

Learn more now

Parameters: Secrets & User-Configurable Settings

What Are Parameters?

Parameters are placeholder values in your automation configuration that get replaced with actual values at runtime. Instead of hardcoding a password, API key, or email address directly into your config, you define a parameter and reference it with the {{parameter_name}} syntax.


{
  "connection": {
    "type": "sftp",
    "address": "sftp.supplier.com",
    "username": "{{ftp username}}",
    "password": "{{ftp password}}",
    "port": 22
  }
}

At runtime, {{ftp username}} and {{ftp password}} are replaced with the actual values stored in the parameters array.

Parameters serve two key purposes: security (encrypted parameters keep secrets out of the visible config) and reusability (shared automations let each user fill in their own values).

Defining Parameters

Parameters are defined in the top-level parameters array. Each parameter is an object with these properties:

Property Type Required Description
name string Yes The placeholder name. Must match the {{name}} reference in the config
value mixed Yes The value to inject at runtime
label string No A human-readable display name shown in the UI
description string No Help text explaining what the parameter is for
type string No Data type hint (e.g., string, boolean, string|boolean)
encrypted boolean No Store the value encrypted. Defaults to false
hidden_from_user boolean No Hide from users installing a shared automation. Defaults to false
required boolean No Whether the parameter must have a value. Defaults to true

Here is a basic example:


"parameters": [
  {
    "name": "ftp username",
    "value": "",
    "label": "FTP Username",
    "description": "Your SFTP server username",
    "encrypted": false,
    "hidden_from_user": false
  },
  {
    "name": "ftp password",
    "value": "",
    "label": "FTP Password",
    "description": "Your SFTP server password",
    "encrypted": true,
    "hidden_from_user": false
  }
]

Using Parameters

Place {{parameter_name}} anywhere in the configuration -- connection addresses, headers, payload values, search strings, file names, and more. The engine finds and replaces every occurrence before processing.

In connection settings:


"connection": {
  "type": "http",
  "address": "https://api.vendor.com/v1/products",
  "headers": {
    "Authorization": "Bearer {{api token}}",
    "Content-Type": "application/json"
  }
}

In search filters:


"file_configs": [
  {
    "search": "{{search}}",
    "field_map": { "guid": "guid", "stock": "stock" }
  }
]

In file names:


"file_configs": [
  {
    "name": "{{vendor_name}}-inventory-{{DATE}}.csv"
  }
]

In email subjects:


"connection": {
  "type": "email",
  "address": "{{report email}}",
  "subject": "Products Export for {{today}}"
}

Encrypted Parameters

When "encrypted": true is set, the parameter value is stored using SureDone's secret management system. The plaintext value is never visible in API responses or stored in the database -- it is encrypted at rest and only decrypted at runtime when the automation executes.

Use encrypted parameters for:

  • Passwords and passphrases
  • API keys and tokens
  • Client secrets for OAuth
  • Any sensitive credential

{
  "name": "api secret",
  "value": "sk_live_abc123xyz",
  "encrypted": true,
  "label": "API Secret Key",
  "description": "Your vendor API secret. This value is stored encrypted."
}

Once saved, the encrypted value appears as a masked string in API responses. Users can update the value, but they cannot retrieve the original plaintext.

Shared Automation Parameters

Parameters are particularly powerful for shared automations. A shared automation is a reusable template published to the automation marketplace. The creator defines the full configuration with parameter placeholders, and each user who installs it provides their own values.

For example, a shared SFTP inventory import might define:


"parameters": [
  {
    "name": "ftp username",
    "value": null,
    "encrypted": true,
    "hidden_from_user": false,
    "label": "FTP Username"
  },
  {
    "name": "ftp password",
    "value": null,
    "encrypted": true,
    "hidden_from_user": false,
    "label": "FTP Password"
  }
]

When a user installs this automation, the SureDone UI prompts them to fill in FTP Username and FTP Password with their own credentials. Each installation stores its own parameter values independently.

Parameters with "hidden_from_user": true are not shown to the installing user. Use this for internal values that should be controlled by the automation creator -- like internal API endpoints or configuration flags that end users should not change.

Allowed Values

The allowed_values property restricts a parameter to a set of predefined options. In the UI, this renders as a dropdown selector instead of a free-text input.


{
  "name": "fitment_export_type",
  "value": "mvl",
  "label": "Fitment Export Type",
  "allowed_values": [
    {
      "label": "MVL Auto Parts and Accessories",
      "value": "mvl"
    },
    {
      "label": "MML Powersports",
      "value": "mml"
    },
    {
      "label": "ACES - Automotive Catalog Exchange Standard",
      "value": "aces"
    }
  ]
}

Each allowed value has a label (shown in the UI), a value (injected into the config), and an optional description.

Linked Parameters

Linked parameters are child parameters whose value changes based on the parent parameter's selection. They use a value_map to associate each parent value with a corresponding child value.


{
  "name": "region",
  "value": "us",
  "label": "Region",
  "allowed_values": [
    {"label": "United States", "value": "us"},
    {"label": "Europe", "value": "eu"}
  ],
  "linked_parameters": [
    {
      "name": "api endpoint",
      "value_map": {
        "us": "https://api.vendor.com/us/v1",
        "eu": "https://api.vendor.com/eu/v1"
      },
      "hidden_from_user": true
    }
  ]
}

When the user selects "United States," the api endpoint parameter is automatically set to the US endpoint. When they select "Europe," it switches to the EU endpoint. The user never sees or edits the api endpoint parameter directly.

Special Parameter Options

sd_options

When "sd_options": true is set, the parameter's value field is treated as the name of a SureDone settings key. At runtime, the engine reads the actual value from the user's SureDone account settings.


{
  "name": "business_name",
  "value": "business_name",
  "sd_options": true,
  "hidden_from_user": true
}

This injects the user's configured business name from their SureDone settings.

Use sd_options_value_key to extract a specific nested value from the settings payload using JSONPath syntax. For example, if the setting returns a JSON object, you can target a specific key within it:


{
  "name": "store_url",
  "value": "site_settings",
  "sd_options": true,
  "sd_options_value_key": "$.store_url",
  "hidden_from_user": true
}

date_format and date_timezone

These properties auto-format the parameter value as a date at runtime:


{
  "name": "today",
  "value": "today",
  "date_format": "Y-m-d",
  "hidden_from_user": true
}

At runtime, {{today}} is replaced with the current date in YYYY-MM-DD format (e.g., 2025-03-15). By default, dates are in UTC. Use date_timezone to specify a different timezone:


{
  "name": "today_eastern",
  "value": "today",
  "date_format": "Y-m-d",
  "date_timezone": "America/New_York"
}

base64_encoded

When "base64_encoded": true is set, the parameter value is automatically base64-encoded before injection. Useful for APIs that expect base64-encoded credentials.

Built-in Variables

In addition to user-defined parameters, the automation engine provides several built-in variables that are always available. These are not defined in the parameters array -- they are replaced automatically:

Variable Description
{{DATE}} Current date in UTC. Format controlled by date_format in file_configs (defaults to Y-m-d)
{{TIME}} Current date and time in UTC. Format controlled by time_format (defaults to Y-m-d H:i:s)
{{NOW}} Alias for {{TIME}}
{{UUID}} A randomly generated UUID, unique per replacement
{{FILE}} The current remote file name being processed
{{RESPONSE}} The response body from the external connection (useful in templates)
{{trigger_value}} The value returned from a trigger chain (see trigger documentation)

These are reserved names -- do not create parameters with these names or they will conflict with the built-in behavior. Additional reserved names include {{REGEX}} (file name regex matching) and {{TEMPLATE}} (twig template injection).

Complete Example

Here is a shared automation for exporting products to a vendor's SFTP, with encrypted FTP credentials, a configurable search filter, and a date parameter for the email subject:


{
  "name": "Product Export",
  "vendor": "SureDone",
  "schedule": "0 8 * * *",
  "type": "products",
  "action": "export",
  "shared": true,
  "parameters": [
    {
      "name": "ftp username",
      "value": null,
      "encrypted": true,
      "hidden_from_user": false,
      "label": "FTP Username",
      "description": "Your SFTP server username"
    },
    {
      "name": "ftp password",
      "value": null,
      "encrypted": true,
      "hidden_from_user": false,
      "label": "FTP Password",
      "description": "Your SFTP server password"
    },
    {
      "name": "search",
      "value": "stock:>0",
      "encrypted": false,
      "hidden_from_user": false,
      "label": "Product Search",
      "description": "SureDone search to filter which products are exported"
    },
    {
      "name": "today",
      "value": "today",
      "date_format": "Ymd",
      "hidden_from_user": true
    }
  ],
  "connection": {
    "type": "sftp",
    "address": "sftp.suredone.com",
    "username": "{{ftp username}}",
    "password": "{{ftp password}}",
    "port": 22,
    "path": "/"
  },
  "file_configs": [
    {
      "name": "ProductExport-{{today}}.csv",
      "search": "{{search}}",
      "field_map": {
        "guid": "SKU",
        "title": "ProductName",
        "price": "Price",
        "stock": "Quantity"
      }
    }
  ]
}

When a user installs this shared automation, they are prompted for their FTP username, FTP password, and an optional search filter. The today parameter is hidden and automatically formats the current date for the file name. At runtime, all {{placeholders}} are replaced with the user's actual values.