Flow template reference
This guide provides explanations of key topics for building and deploying a Flow template extension. This includes the TOML configuration file, localization, and the template approval process.
Anchor to TOMLTOML
When you first create a new Flow template extensions through Shopify CLI, you get a basic version of the shopify.extension.toml
file structure that looks like the following example:
shopify.extension.toml
Anchor to Flow template extension fieldsFlow template extension fields
Property | Description | Rules |
---|---|---|
name required | The title of the template. This property is translatable and will use the value for the key name in the translation files. | |
type required | The type of your extension. This should always be set to flow_template for Flow templates. | - Value must be flow_template . |
handle required | A globally-unique identifier for your extension. This property can't be changed after you’ve run the app dev or deploy command. | - Can't exceed 30 characters. - Must only contain alphanumeric characters and hyphens. |
description optional | The description of your template's workflow. This property is translatable and will use the value for the key description in the translation files. | |
categories required | The categories that best describe the function of your template. | - Must be an array containing only strings of valid categories. - Must choose at least one category. Max 2 recommended. - Valid categories are: buyer_experience , customers , inventory_and_merch , loyalty , orders , promotions , risk , fulfillment , b2b , payment_reminders , custom_data , and error_monitoring . |
module required | The file path of the template workflow in the extension's folder. | |
require_app optional | Whether your template is visible only to merchants who have your app installed. | - Defaults to false . - Must be set to true if the app's type is Custom . |
discoverable optional | Whether your template should be displayed in the template browser. When false , the template is accessible only through a deep link. | - Defaults to true . |
enabled optional | Whether you template should be published and made available after being approved. | - Defaults to true . |
Anchor to LocalizationLocalization
Localizing your template by providing translated text allows a wider audience to understand your template better and can increase adoption.
You can provide translations for the following fields:
name
: Title of the template.description
: Description of the template and it's purpose.preInstallNote
: (Optional): Instructions for merchants to complete before activating the workflow. This field should only be included if setup is required before the template can be turned on.- Custom step descriptions added within the workflow.
Anchor to Adding additional localesAdding additional locales
Add new .json
files prefixed with the locale, for example es.json
.
Add default
to one of the locales to make it the fallback if a merchant's locale isn't in the locales you have provided. Example: en.default.json
.
Anchor to Step descriptionsStep descriptions
You can provide translated custom step descriptions by adding a translation key wrapped by curly braces in the step description field. For example, {expressShippingCondition}
. Ensure there's no other characters before or after {yourKey}
. After adding this to your workflow, you can update the translation files to include the step description.
The following is an example:

en.default.json
Anchor to Approval processApproval process
Before submitting your template extension for approval ensure that it meets the following criteria:
Anchor to WorkflowWorkflow
Anchor to TOMLTOML
Anchor to LocalizationLocalization
Anchor to AccessAccess
Anchor to LimitationsLimitations
Anchor to Submitting your extension for approvalSubmitting your extension for approval
After you're satisfied with your template extension, deploy
a new app version from Shopify CLI. The Flow team will review your templates within three business days. Template reviews don't block your app version from releasing, but template changes won't be reflected until the approval process is complete. If we require changes, then we'll reject the review and follow up through email with feedback.