Add crawler signatures, delete identity, new ShopifyQL metadata

6/19/2026, 12:00:36 AM

Introduced a new storefrontCrawlerSignatures query for paginated crawler signatures by shop, and a storefrontCrawlerSignatureGenerate mutation to create signed headers with a configurable TTL. Added an identityProviderSubjectDelete mutation that unlinks a third‑party identity provider subject from a customer, requiring both the subject ID and the owning customer ID. Deprecated marketingActivityCreateExternal in favor of marketingActivityUpsertExternal. Replaced the old single‑collection sub‑collection source types with a multi‑collection version (CollectionCreateSubCollectionsSourceInput and CollectionSubCollectionsSource) and removed the single‑collection counterparts. Updated several descriptive fields: the company field in FulfillmentTrackingInfo now includes ShipBob and other carriers; the displayRefundStatus text was corrected; and the enum OrderCreateUserErrorCode gained the VARIANT_IDENTIFIER_NOT_FOUND value. Expanded ShopifyQL output with per‑row metadata (rowMetadata) and added column origin, dynamic column metadata, and a short display name to ShopifyqlTableDataColumn, enabling richer UI and debugging information.

Query Changes

➕ Added Queries (1)

storefrontCrawlerSignatures

Returns a paginated list of storefront crawler signatures by shop.

Mutation Changes

➕ Added Mutations (2)

identityProviderSubjectDelete

Unlink a customer's third-party identity provider subject.

storefrontCrawlerSignatureGenerate

Generates signatures to authenticate storefront crawlers with configurable time-to-live.

🔄 Modified Mutations (1)

marketingActivityCreateExternal

Creates a new external marketing activity.

⚠️ Deprecated: Use `marketingActivityUpsertExternal` instead.

Type Changes

➕ Added Types (16)

📥CollectionCreateSubCollectionsSourceInput➕ AddedINPUT_OBJECT

The input fields required to create a sub-collection source — a source whose membership comes from one or more referenced collections.

🏗️CollectionSubCollectionsSource➕ AddedOBJECT

A collection source whose membership comes from one or more referenced collections (sub-collections).

Sub-collection sources are always non-shareable. Sharing a sub-collection source across owners is not
supported because the collection references are owner-bound.

Fields: app, collections, description, id, title
🏗️IdentityProviderSubjectDeletePayload➕ AddedOBJECT

Return type for identityProviderSubjectDelete mutation.

Fields: customer, deletedIdentityProviderSubjectId, userErrors
🏗️IdentityProviderSubjectUserError➕ AddedOBJECT

An error in the input of a mutation. Mutations return UserError objects to indicate validation failures, such as invalid field values or business logic violations, that prevent the operation from completing.

Fields: code, field, message
📋IdentityProviderSubjectUserErrorCode➕ AddedENUM

Possible error codes that can be returned by IdentityProviderSubjectUserError.

Values: NOT_FOUND
📋ShopifyqlColumnOrigin➕ AddedENUM

Whether a column was explicitly requested in the query or dynamically generated.

Values: UNSPECIFIED, REQUESTED, GENERATED
🏗️ShopifyqlDynamicColumnMetadata➕ AddedOBJECT

Describes how a dynamically generated column relates to the query.

Fields: aggregatedBy, comparisonReference, originalColumnName, type
📋ShopifyqlDynamicColumnType➕ AddedENUM

The kind of dynamically generated column.

Values: UNSPECIFIED, TOTALS, COMPARISON, PERCENT_CHANGE, COMPARISON_TOTALS, BENCHMARKS, BENCHMARK_TOTALS, CUMULATIVE ... +9 more
🏗️ShopifyqlNullCellTranslation➕ AddedOBJECT

Localized display text shown in place of a null cell in a ShopifyQL result row.

Fields: columnName, displayText
🏗️ShopifyqlRowMetadata➕ AddedOBJECT

Per-row metadata for a ShopifyQL result, aligned by index with the table's rows.

Fields: nullCellTranslations, rawResourceIds, topNRemainderColumnNames
🏗️StorefrontCrawlerSignatureGeneratePayload➕ AddedOBJECT

Return type for storefrontCrawlerSignatureGenerate mutation.

Fields: domainHost, expiresAt, id, name, signature ... +3 more
🏗️StorefrontCrawlerSignatureGenerateUserError➕ AddedOBJECT

An error that occurs during the execution of StorefrontCrawlerSignatureGenerate.

Fields: code, field, message
📋StorefrontCrawlerSignatureGenerateUserErrorCode➕ AddedENUM

Possible error codes that can be returned by StorefrontCrawlerSignatureGenerateUserError.

Values: INVALID
🏗️StorefrontCrawlerSignatureType➕ AddedOBJECT

A storefront crawler signature.

Fields: createdAt, domainHost, expiresAt, id, name ... +3 more
🏗️StorefrontCrawlerSignatureTypeConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple StorefrontCrawlerSignatureTypes.

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

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

Fields: cursor, node

➖ Removed Types (2)

📥CollectionCreateSubCollectionSourceInput➖ RemovedINPUT_OBJECT

The input fields required to create a sub-collection source — a source whose membership comes from a single referenced collection.

🏗️CollectionSubCollectionSource➖ RemovedOBJECT

A collection source whose membership comes from a single referenced collection (sub-collection).

Sub-collection sources are always non-shareable: the inherited shareable field on the CollectionSource
interface always resolves to false for this type. Sharing a sub-collection source across owners is not
supported because the chain reference is owner-bound.

Fields: app, description, id, subCollection, title

🔄 Modified Types (5)

🏗️FulfillmentTrackingInfo🔄 Modified
🔄 Field modified: company
🏗️Order🔄 Modified
🔄 Field modified: displayRefundStatus
🏗️OrderCreateUserErrorCode🔄 Modified
Enum value added: VARIANT_IDENTIFIER_NOT_FOUND
🏗️ShopifyqlTableData🔄 Modified
Field added: rowMetadata

Per-row metadata, aligned by index with rows.

🏗️ShopifyqlTableDataColumn🔄 Modified
Field added: columnOrigin

Whether the column was explicitly requested in the query or dynamically generated.

Field added: dynamicColumnMetadata

Metadata describing how a dynamic column was generated (comparison, totals, benchmark, attribution, etc.). Null for non-dynamic columns.

Field added: shortDisplayName

A shortened display name for the column, suitable for compact UI such as metric tiles.