Introduce Automation Workflow and Environment Path Queries & Config Types

10/28/2026, 12:00:38 AM

The Shopify Admin API now exposes a rich set of Automation endpoints for managing Flow workflows, including the ability to create, update, activate, deactivate, delete, and test automation versions. New queries such as automationWorkflow, automationWorkflowCreate, automationWorkflowUpdate, automationEnvironmentPaths, and automationFlowFileParse let clients retrieve workflow metadata, draft data, available field paths, and parse exported .flow files into JSON configuration without persisting them. Mutations automationTestEventsCreate, automationWorkflowActivate, automationWorkflowDeactivate and automationWorkflowDelete provide full lifecycle management for drafts, allowing developers to test events, flip state and remove stale automations. The schema now includes a comprehensive suite of AutomationTaskConfigField types—API call, array, boolean, code, collections, commerce object, condition, duration, enum, float, hardcoded path, integer, map, marketing activity, metafield type, multi‑resource, path, platform marketing activity, query preset, recurrence, select, shipping carrier, shipping package, Shopify events trigger, ShopifyQL query, single resource, sort, text, typed metafield, weight, weight input, and unsupported/hardcoded path—providing strong typing for task configuration in Flow. Enum types such as AutomationCodeLanguage, AutomationCodeRole, AutomationDurationUnit, AutomationEnvironmentPathDataType, among others, give context for the new configuration fields and for filtering path results. Pagination support, search and filter syntax are also updated for queries like automationTasks and automationTemplates, leveraging first/after/last/before cursors with limits and reverse ordering.

Query Changes

➕ Added Queries (8)

automationEnvironmentPaths

Returns field paths available from a root type, ordered by relevance to the search query.

automationFlowFileParse

Parses an exported .flow file into an automation configuration without saving a workflow.

automationTask

Returns an automation task by ID.

automationTasks

Returns the automation tasks available to the shop.

automationTemplate

Returns a Flow template by ID.

automationTemplates

Returns the Flow templates available to the shop.

automationWorkflow

Returns a saved automation version. Without a version, returns the latest draft or the most recently published version if no draft exists.

automationWorkflows

Returns automations visible in the Flow editor, most recently updated first. Each result is the latest draft, or the most recently published version if no draft exists.

Mutation Changes

➕ Added Mutations (6)

automationTestEventsCreate

Creates custom test events for an automation. If any event is invalid, or the events would exceed the automation's custom test event limit, none of them are created.

automationWorkflowActivate

Activates a specific automation version. Activating the currently active version succeeds without making changes, even when a newer draft exists.

automationWorkflowCreate

Creates a draft automation from a JSON configuration.

Input errors are returned in userErrors and nothing is saved. A saved draft can still have
validationErrors, such as a missing action or an incomplete configuration field; fix those before activating.

automationWorkflowDeactivate

Deactivates a specific automation version and cancels its runs. An action already executing may still finish.

automationWorkflowDelete

Deletes an inactive automation. Deactivate an active automation before deleting it.

automationWorkflowUpdate

Updates an automation's name, tags, note, or configuration. Supply at least one editable field.
Omitted fields keep their existing values.

Replacing the configuration edits the latest draft in place, or creates a draft if none exists.
Any active version continues running with its existing configuration. Changes to the name, tags, or note
don't create a draft.

Input errors are returned in userErrors and nothing is saved. A saved version can still have
validationErrors; fix those before activating it.

Type Changes

➕ Added Types (82)

🏗️AutomationApiCallConfigField➕ AddedOBJECT

A Shopify Admin API mutation and its input values.

Fields: defaultValue, description, id, label, required ... +2 more
🏗️AutomationArrayConfigField➕ AddedOBJECT

A list of string values, encoded as a JSON array in a string.

Fields: defaultValue, description, id, label, required ... +2 more
🏗️AutomationBooleanConfigField➕ AddedOBJECT

A boolean value, encoded as the string true or false.

Fields: defaultValue, description, id, label, required ... +1 more
🏗️AutomationCodeConfigField➕ AddedOBJECT

Source code for a task's input query, script, or output schema. Check language and role for the expected content.

Fields: defaultValue, description, id, label, language ... +3 more
📋AutomationCodeLanguage➕ AddedENUM

The language of an automation code field.

Values: JAVASCRIPT, GRAPHQL, GRAPHQL_SDL
📋AutomationCodeRole➕ AddedENUM

The role of code within an automation task.

Values: INPUT_QUERY, SCRIPT, OUTPUT_SCHEMA
🏗️AutomationCollectionsConfigField➕ AddedOBJECT

A selection of Shopify collections.

Fields: defaultValue, description, id, label, required ... +1 more
🏗️AutomationCommerceObjectConfigField➕ AddedOBJECT

A reference to a Shopify resource ID, encoded as a JSON object in a string. Set value to a literal GID or a Liquid expression such as {{ order.customer.id }}. When value is blank, default_value supplies a field path such as order.customer.id. Use possibleObjectTypes for the allowed resource types.

Fields: defaultValue, description, id, label, possibleObjectTypes ... +2 more
🏗️AutomationConditionConfigField➕ AddedOBJECT

A condition expression that decides which branch an automation takes, written in Flow's condition syntax. Compare a field path with a literal or another path using ==, !=, >, >=, <, <=, string operators such as start_with? and include?, or unary checks such as nil? and empty_or_nil?. Test lists with any?, all?, or none? and an item variable, and combine expressions with && or ||. Example: (order.totalPrice > 100) && (order.tags any? |tags_item| (tags_item == 'vip')).

Fields: defaultValue, description, id, label, required ... +1 more
🏗️AutomationConfigFieldOption➕ AddedOBJECT

A selectable value for an automation configuration field.

Fields: deprecated, label, value
🏗️AutomationConnector➕ AddedOBJECT

The app or built-in connector that provides an automation task.

Fields: app, id, installUrl, installed, name
🏗️AutomationDurationConfigField➕ AddedOBJECT

A duration, encoded as a JSON object with amount and unit in a string. Unit values are lowercase, such as seconds or hours.

Fields: defaultValue, description, id, label, possibleUnits ... +2 more
📋AutomationDurationUnit➕ AddedENUM

An allowed unit of duration.

Values: SECONDS, MINUTES, HOURS, DAYS, WEEKS
🏗️AutomationEnumConfigField➕ AddedOBJECT

A member of an Admin GraphQL enum. Options and the default value use the Admin API version of the request. If the schema is unavailable, options are empty and only an explicit default is preserved.

Fields: defaultValue, description, id, label, options ... +2 more
🏗️AutomationEnvironmentPath➕ AddedOBJECT

A valid field path through the Admin API schema for use in an automation workflow.

Fields: description, leafType, path, pathElementsTypes, searchCategories
🏗️AutomationEnvironmentPathConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple AutomationEnvironmentPaths.

Fields: edges, nodes, pageInfo
📋AutomationEnvironmentPathDataType➕ AddedENUM

The leaf data type used to filter automation environment paths.

Values: ALL, LIST, SCALAR, SCALAR_IN_LIST, SCALAR_OR_SCALAR_IN_LIST
🏗️AutomationEnvironmentPathEdge➕ AddedOBJECT

An auto-generated type which holds one AutomationEnvironmentPath and a cursor during pagination.

Fields: cursor, node
🏗️AutomationFloatConfigField➕ AddedOBJECT

A decimal number, encoded as a string.

Fields: defaultValue, description, id, label, required ... +1 more
🏗️AutomationFlowFile➕ AddedOBJECT

The name and JSON configuration parsed from an exported .flow file.

Fields: configuration, name
🏗️AutomationHardcodedPathConfigField➕ AddedOBJECT

A field path used to read task input from the automation's data. The default path is provided in defaultValue.

Fields: defaultValue, description, id, label, required ... +1 more
🏗️AutomationIncludesValidation➕ AddedOBJECT

A rule requiring a value from an allowed set.

Fields: errorMessage, subfield, values
🏗️AutomationIntegerConfigField➕ AddedOBJECT

An integer, encoded as a string. Liquid expressions are accepted only when supportsLiquid is true.

Fields: defaultValue, description, id, label, required ... +2 more
🏗️AutomationMapConfigField➕ AddedOBJECT

Key/value pairs, encoded as a JSON array of two-element arrays in a string.

Fields: defaultValue, description, id, label, required ... +3 more
🏗️AutomationMarketingActivityConfigField➕ AddedOBJECT

A marketing activity associated with an email action.

Fields: defaultValue, description, id, label, required ... +1 more
🏗️AutomationMatchesPatternValidation➕ AddedOBJECT

A JavaScript regular expression rule with editor flags.

Fields: errorMessage, flags, pattern, subfield
🏗️AutomationMetafieldTypeConfigField➕ AddedOBJECT

A metafield value type selected from options.

Fields: defaultValue, description, id, label, options ... +2 more
🏗️AutomationMultiResourceConfigField➕ AddedOBJECT

A selection of multiple Admin API resources of the type named by adminResourceType.

Fields: adminResourceType, defaultValue, description, id, label ... +3 more
🏗️AutomationPathConfigField➕ AddedOBJECT

A field path that selects a value from the automation's data. Use listsOnly and allowedTypes to determine which paths can be selected.

Fields: allowedTypes, defaultValue, description, id, label ... +3 more
🏗️AutomationPlatformMarketingActivityConfigField➕ AddedOBJECT

A marketing activity associated with an automation action.

Fields: defaultValue, description, id, label, required ... +1 more
🏗️AutomationQueryPresetConfigField➕ AddedOBJECT

A search query for fetching resources, with preset expressions listed in options.

Fields: defaultValue, description, id, label, options ... +4 more
🏗️AutomationQueryPresetOption➕ AddedOBJECT

A preset query expression.

Fields: description, label, value
🏗️AutomationRangeValidation➕ AddedOBJECT

A numeric range rule.

Fields: errorMessage, max, min, subfield
🏗️AutomationRecurrenceConfigField➕ AddedOBJECT

A recurring schedule, encoded as a string containing a JSON array of iCalendar schedules. Each schedule is a DTSTART line with a TZID from timeZones, a newline, and an RRULE line, for example DTSTART;TZID=America/Toronto:20261101T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO.

Fields: defaultValue, description, id, label, required ... +2 more
🏗️AutomationSelectConfigField➕ AddedOBJECT

A single value selected from options. Use the option value in the automation configuration.

Fields: defaultValue, description, id, label, options ... +2 more
🏗️AutomationShippingCarrierServicesConfigField➕ AddedOBJECT

A shipping carrier and service selection.

Fields: defaultValue, description, id, label, required ... +1 more
🏗️AutomationShippingPackageConfigField➕ AddedOBJECT

A shipping package selection.

Fields: defaultValue, description, id, label, required ... +1 more
🏗️AutomationShopifyEventsTriggerConfigField➕ AddedOBJECT

The fields monitored by an update trigger. Use options for selectable fields and maxSelections for the selection limit.

Fields: defaultValue, description, id, label, maxSelections ... +3 more
🏗️AutomationShopifyqlQueryConfigField➕ AddedOBJECT

A ShopifyQL query to run as part of an automation.

Fields: defaultValue, description, id, label, required ... +1 more
🏗️AutomationSingleResourceConfigField➕ AddedOBJECT

A selection of one Admin API resource of the type named by adminResourceType.

Fields: adminResourceType, defaultValue, description, id, label ... +3 more
🏗️AutomationSortConfigField➕ AddedOBJECT

A resource sort key and direction, encoded as a JSON object in a string. Set sortKey to a value from options and order to ASCENDING or DESCENDING.

Fields: defaultValue, description, id, label, options ... +2 more
🏗️AutomationTask➕ AddedOBJECT

A version of a task that can be used as a step in an automation.

Fields: configFields, connector, description, id, label ... +6 more
🔌AutomationTaskConfigField➕ AddedINTERFACE

A configurable value accepted by an automation task.

Fields: defaultValue, description, id, label, required ... +1 more
🔌AutomationTaskConfigFieldValidation➕ AddedINTERFACE

A validation that can be checked before saving a workflow.

Fields: errorMessage, subfield
🏗️AutomationTaskConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple AutomationTasks.

Fields: edges, nodes, pageInfo
🏗️AutomationTaskEdge➕ AddedOBJECT

An auto-generated type which holds one AutomationTask and a cursor during pagination.

Fields: cursor, node
🏗️AutomationTaskReturnField➕ AddedOBJECT

A value produced by an automation task.

Fields: description, name, type, typeDefinitions
📋AutomationTaskState➕ AddedENUM

The publication state of an automation task version.

Values: MAIN, DEPRECATED, DRAFT
📋AutomationTaskType➕ AddedENUM

The role a task plays in an automation.

Values: TRIGGER, CONDITION, ACTION, WAIT, FOREACH
🏗️AutomationTemplate➕ AddedOBJECT

A Shopify Flow template that provides a starting configuration for a new automation.

Fields: configuration, description, id, title
🏗️AutomationTemplateConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple AutomationTemplates.

Fields: edges, nodes, pageInfo
🏗️AutomationTemplateEdge➕ AddedOBJECT

An auto-generated type which holds one AutomationTemplate and a cursor during pagination.

Fields: cursor, node
🏗️AutomationTestEvent➕ AddedOBJECT

Sample trigger data used to test an automation.

Fields: createdAt, id, name, source, triggerParams
📥AutomationTestEventInput➕ AddedINPUT_OBJECT

The input fields for a custom automation test event.

📋AutomationTestEventSource➕ AddedENUM

The origin of an automation test event.

Values: CAPTURED, CUSTOM
🏗️AutomationTestEventsCreatePayload➕ AddedOBJECT

Return type for automationTestEventsCreate mutation.

Fields: testEvents, userErrors
🏗️AutomationTestEventsCreateUserError➕ AddedOBJECT

An error that prevented automation test events from being created.

Fields: code, field, message
📋AutomationTestEventsCreateUserErrorCode➕ AddedENUM

Possible error codes that can be returned by AutomationTestEventsCreateUserError.

Values: ENTITY_ALREADY_LOCKED, INVALID_EVENT_NAME, INVALID_EVENT_PAYLOAD, INVALID_EVENTS, INVALID_TRIGGER, MAX_CUSTOM_EVENTS_EXCEEDED, MULTIPLE_TRIGGERS, TRIGGER_NOT_FOUND ... +5 more
🏗️AutomationTextConfigField➕ AddedOBJECT

A text value. Liquid expressions are accepted only when supportsLiquid is true, and secret references only when supportsSecrets is true.

Fields: defaultValue, description, id, label, required ... +3 more
🏗️AutomationTimeZone➕ AddedOBJECT

A time zone used by an automation recurrence.

Fields: id, label
🏗️AutomationTypedMetafieldConfigField➕ AddedOBJECT

A metafield selection with a namespace, key, and value type. Use supportedTypes for the allowed types.

Fields: defaultValue, description, id, label, ownerType ... +5 more
🏗️AutomationUnsupportedConfigField➕ AddedOBJECT

A configuration field with a type this API version doesn't describe. It's returned so that clients can see whether the field is required.

Fields: defaultValue, description, id, label, required ... +1 more
🏗️AutomationUntypedMetafieldConfigField➕ AddedOBJECT

A metafield selection identified by its namespace and key.

Fields: defaultValue, description, id, label, ownerType ... +4 more
🏗️AutomationWeightConfigField➕ AddedOBJECT

A shipping package weight, encoded as a JSON object with amount and unit in a string.

Fields: defaultValue, description, id, label, possibleUnits ... +2 more
🏗️AutomationWeightInputConfigField➕ AddedOBJECT

A weight, encoded as a JSON object with optional value and unit in a string.

Fields: defaultValue, description, id, label, possibleUnits ... +2 more
🏗️AutomationWorkflow➕ AddedOBJECT

A version of an automation that runs tasks when a trigger event occurs. An automation can have a saved draft
while another version is active. All versions share the same ID, name, and tags; configuration, note,
and versionState describe the selected version.

Use automationWorkflowCreate to create a draft and automationWorkflowUpdate to edit it.
Compare activeVersion with version to check whether this version is running.

Fields: activeVersion, adminApiVersion, configuration, createdAt, id ... +7 more
🏗️AutomationWorkflowActivatePayload➕ AddedOBJECT

Return type for automationWorkflowActivate mutation.

Fields: automationWorkflow, userErrors
🏗️AutomationWorkflowConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple AutomationWorkflows.

Fields: edges, nodes, pageInfo
🏗️AutomationWorkflowCreatePayload➕ AddedOBJECT

Return type for automationWorkflowCreate mutation.

Fields: automationWorkflow, userErrors
🏗️AutomationWorkflowDeactivatePayload➕ AddedOBJECT

Return type for automationWorkflowDeactivate mutation.

Fields: automationWorkflow, userErrors
🏗️AutomationWorkflowDeletePayload➕ AddedOBJECT

Return type for automationWorkflowDelete mutation.

Fields: deletedAutomationWorkflowId, userErrors
🏗️AutomationWorkflowEdge➕ AddedOBJECT

An auto-generated type which holds one AutomationWorkflow and a cursor during pagination.

Fields: cursor, node
🏗️AutomationWorkflowUpdatePayload➕ AddedOBJECT

Return type for automationWorkflowUpdate mutation.

Fields: automationWorkflow, userErrors
🏗️AutomationWorkflowUserError➕ AddedOBJECT

An error that prevented an automation operation from succeeding. For create and update, the requested changes weren't saved. Check code for the reason and field for the affected argument when available. Validation errors on a saved version are returned in automationWorkflow.validationErrors.

Fields: code, field, message
📋AutomationWorkflowUserErrorCode➕ AddedENUM

Possible error codes that can be returned by AutomationWorkflowUserError.

Values: CANNOT_DELETE_ACTIVE_WORKFLOW, CONDITION_VALUE_LIMIT_EXCEEDED, CONFIG_FIELD_VALUE_TOO_LARGE, ENTITY_ALREADY_LOCKED, INVALID_CONDITION_VALUE, INVALID_STEP_ID, INVALID_LINK, INVALID_STEP_NAME ... +25 more
🏗️AutomationWorkflowValidationError➕ AddedOBJECT

A validation error for a saved automation version. These errors don't prevent saving or reading the automation.

Fields: code, configFieldId, message, stepId
📋AutomationWorkflowValidationErrorCode➕ AddedENUM

The reason a saved automation version can't be activated. These errors can be returned after a successful create or update.

Values: CONDITION_DOUBLE_LOOP_WARNING, CONDITION_EMPTY_WORKFLOW_VARIABLE, CONDITION_INCOMPATIBILITY, CONDITION_INPUT_ACKNOWLEDGMENT_REQUIRED, CONDITION_INVALID_DATE_VALUE, CONDITION_INVALID_ENUM_VALUE, CONDITION_INVALID_RESOURCE_VALUE, CONDITION_MAP_OVER_INVALID_TYPE ... +52 more
📋AutomationWorkflowVersionState➕ AddedENUM

The definition state of an automation version, independent of activation.

Values: DRAFT, MAIN, SUPERSEDED
🏗️DraftOrderSellingPlanApplication➕ AddedOBJECT

Represents the selling plan applied to a draft order line item, and the prices of the line
item when it's purchased with that selling plan. Editing or deleting the selling plan
afterwards doesn't change what's returned here, and these values don't lock the selling
plan's terms.

Fields: basePrice, billingPolicy, name, priceAdjustments, sellingPlanId
🔀DraftOrderSellingPlanBillingPolicy➕ AddedUNION

Represents the billing frequency of a selling plan applied to a draft order line item (for
example, bill every week, or bill every three months).

🏗️DraftOrderSellingPlanPriceAdjustment➕ AddedOBJECT

The resulting prices for a draft order line item when it's purchased with a specific selling
plan. These are the prices resolved for the line item, not the selling plan's pricing policy.

Fields: afterCycle, computedPrice
🏗️DraftOrderSellingPlanRecurringBillingPolicy➕ AddedOBJECT

Represents a recurring billing policy for a selling plan applied to a draft order line item.

Fields: interval, intervalCount, maxCycles, minCycles

🔄 Modified Types (4)

🏗️CalculatedDraftOrderLineItem🔄 Modified
➕ Field added: sellingPlanApplication

The selling plan applied to the line item. Null when the line item has no selling plan.

🏗️DraftOrderLineItem🔄 Modified
➕ Field added: sellingPlanApplication

The selling plan applied to the line item. Null when the line item has no selling plan.

🏗️Location🔄 Modified
🔄 Field modified: inventoryBins
🏗️ShippingLabelPurchaseUserErrorCode🔄 Modified
➕ Enum value added: DESTINATION_ADDRESS_INVALID