Vendors identify a product's supplier or source; brands identify the name shoppers see. A product can have zero or one vendor. Reads require read_products; writes require write_products. Translation reads also require read_translations, and translation writes require write_translations.
Create with name; omit slug to generate it. Updates change only supplied fields. Empty optional description and SEO values clear those fields after their translations are removed. Changing slug creates a redirect unless create_redirect is false. Setting a non-empty image_id requires read_files and an uploaded image in this store. template_handle defaults to default_vendor on create; omit it on update to keep the current template.
Product assignments#
Use POST /products/bulk-vendor with product_ids and a vendor_id to assign one vendor to each product. Send vendor_id: null to clear those assignments.
Vendor field changes emit vendors/update. Product assignment changes emit products/update for changed products, not vendors/update. Fetch the vendor when you need its current product_count.
Metafield access#
Metafield reads require read_products; writes require write_products. App tokens (tpat_ and tast_) can read merchant-owned definitions, their own definitions, and other apps' shared definitions. They can write only definitions owned by their app. App Bridge sessions can have narrower effective access.
Store Admin tokens (tsat_) can read merchant-owned and non-hidden app definitions. They can write merchant-owned definitions and app definitions with merchant_access: read_write. Lists include only visible values, and total counts only those values. Address values by namespace and key.
Endpoints#
Vendor limits
Fetch vendor field limits and request limits.
Returns the validation limits clients need when building vendor forms and requests.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
List vendors
List vendors for the store.
Returns vendors and their product counts. Each page holds at most 100 vendors, and every row carries the full Vendor fields, description included. Search matches names and slugs; matches are ordered by relevance (exact name, name prefix, exact slug, slug prefix, then other matches), then by the sort field. Use the returned cursors unchanged, and start without a cursor when search or sorting changes. Fetch /vendors/limits for page-size and search limits; supported sort fields are listed below. storefront_url uses the store's primary domain; storefront_path is the base path without a domain. Shopper-facing URLs may use translated slugs and locale/country prefixes.
Query parameters
| Name | Type | Description |
|---|---|---|
limit
|
integer |
Page size, 1-100 (default 50). Larger values return VALIDATION_LIST_INVALID_LIMIT. |
cursor
|
string |
Opaque cursor from a previous |
search
|
string |
Search query. |
sort_by
|
string |
Sort field from the Vendor list contract.
Allowed values
nameproduct_countcreated_atupdated_at |
sort_direction
|
string |
Sort direction from the Vendor list contract.
Allowed values
ascdesc |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400VALIDATION_LIST_INVALID_LIMITLimit is outside the supported range.
-
400INVALID_INPUTCursor is malformed or does not match the current search/sort state.
-
400VALIDATION_LIST_INVALID_SORT_BYSort_by is not a supported Vendor list sort.
-
400VALIDATION_LIST_INVALID_SORT_DIRECTIONSort_direction is invalid.
-
400VENDOR_SEARCH_TOO_LONGSearch exceeds the Vendor search length limit.
-
400LIST_RESPONSE_TOO_LARGEThe page would be larger than the 512 KiB reply budget (long descriptions or many options). Request it again with a lower
limit;error.params.fitestimates how many rows fit.
Search vendors
Search vendors for picker-style suggestions.
Returns lightweight vendor suggestions by query. This endpoint is intended for pickers and simple selection UIs.
Query parameters
| Name | Type | Description |
|---|---|---|
q
|
string |
Search query. |
limit
|
integer |
Suggestion count, 1-50 (default 10). |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400VALIDATION_LIST_INVALID_LIMITLimit is outside the supported search range.
-
400VENDOR_SEARCH_TOO_LONGQ exceeds the Vendor search length limit.
Get a vendor
Fetch one vendor by id.
Returns the vendor if it belongs to the token's store. storefront_url uses the store's primary domain; storefront_path is the base path without a domain. Shopper-facing URLs may use translated slugs and locale/country prefixes.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
integer |
Vendor id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_VENDOR_IDVendor id is not a positive integer.
-
404VENDOR_NOT_FOUNDVendor does not exist in this store.
List vendor metafields
List vendor metafield values visible to the token.
Returns paginated metafield values the token can read. total counts only visible values. Identify each value by namespace and key.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
integer |
Vendor id. |
Query parameters
| Name | Type | Description |
|---|---|---|
page
|
integer |
Page number (default 1). |
limit
|
integer |
Page size; capped by the metafield list limit. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_VENDOR_IDVendor id is not a positive integer.
-
400VALIDATION_LIST_INVALID_PAGEPage must be at least 1.
-
400VALIDATION_LIST_INVALID_LIMITLimit is outside the supported range.
-
404NOT_FOUNDVendor does not exist in this store.
Set vendor metafields
Create, update, or delete vendor metafield values.
Send namespace-and-key entries. A string value creates or replaces a value; null or an empty string deletes it. Only definitions writable by this token can be changed.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
integer |
Vendor id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
metafields
required
|
array<object> |
Entries shaped as |
Errors
-
400STORE_API_INVALID_VENDOR_IDVendor id is not a positive integer.
-
400STORE_API_INVALID_REQUEST_BODYRequest body must be a JSON object containing only documented fields; error.details.field identifies an unknown field.
-
400METAFIELD_NO_WRITESAt least one metafield entry is required.
-
400METAFIELD_DUPLICATE_WRITEThe request contains the same namespace and key more than once.
-
400PRODUCT_METAFIELD_DEF_NOT_FOUNDThe namespace and key do not identify a definition visible to the token. For an app token only its own definitions count: merchant-owned and other apps' definitions return this code.
-
403METAFIELD_WRITE_MERCHANT_READ_ONLYThis app-owned definition is not writable by the token.
-
404NOT_FOUNDVendor does not exist in this store. A file reference names a file that does not exist in this store.
-
400METAFIELD_VALUE_TOO_LONGThe value exceeds its size limit: the definition's max_value_length, or the platform value size limit for the type.
-
400METAFIELD_VALUE_STRING_TOO_LONGA string value exceeds the definition's max_value_length or the platform string limit.
-
400METAFIELD_VALUE_TOO_SHORTA string value is shorter than the definition's min_length rule.
-
400METAFIELD_VALUE_PATTERN_MISMATCHA string value does not match the definition's pattern rule.
-
400METAFIELD_VALUE_INTEGER_INVALIDAn integer value is not a whole number in the 64-bit range.
-
400METAFIELD_VALUE_INTEGER_TOO_LONGAn integer value has more digits than the definition or the platform integer limit allows.
-
400METAFIELD_VALUE_DECIMAL_INVALIDA decimal value is not a finite decimal number.
-
400METAFIELD_VALUE_DECIMAL_TOO_LONGA decimal value, written out in full, is longer than the definition or the platform decimal limit allows.
-
400METAFIELD_VALUE_BELOW_MINAn integer or decimal value is below the definition's min rule.
-
400METAFIELD_VALUE_ABOVE_MAXAn integer or decimal value is above the definition's max rule.
-
400METAFIELD_VALUE_BOOLEAN_INVALIDA boolean value is not true or false.
-
400METAFIELD_VALUE_DATE_INVALIDA date value is not a calendar date in YYYY-MM-DD form.
-
400METAFIELD_VALUE_DATETIME_INVALIDA datetime value is not YYYY-MM-DDTHH:mm, YYYY-MM-DDTHH:mm:ss or an RFC 3339 timestamp.
-
400METAFIELD_VALUE_JSON_INVALIDA json value is not valid JSON.
-
400METAFIELD_VALUE_JSON_UNSAFE_LINKA json value contains a link whose scheme is not http, https, mailto or tel.
-
400METAFIELD_VALUE_URL_INVALIDA url value, or an item of a list.url value, is not an absolute URL with a host.
-
400METAFIELD_VALUE_URL_SCHEMEA url value, or an item of a list.url value, does not use http or https.
-
400METAFIELD_VALUE_URL_TOO_LONGA url value, or an item of a list.url value, exceeds the definition's max_value_length or the platform URL limit.
-
400METAFIELD_VALUE_NOT_IN_CHOICESA single_select value is not one of the definition's choice keys.
-
400METAFIELD_LIST_CHOICE_INVALIDAn item of a list.single_select value is not one of the definition's choice keys; the message names the item.
-
400METAFIELD_LIST_STRINGS_INVALIDA list.string or list.single_select value is not a JSON array of strings.
-
400METAFIELD_LIST_URLS_INVALIDA list.url value is not a JSON array of strings.
-
400METAFIELD_LIST_FILES_INVALIDA list.file_reference value is not a JSON array of strings.
-
400METAFIELD_LIST_IDS_INVALIDA list.product_reference or list.variant_reference value is not a JSON array of integers.
-
400METAFIELD_LIST_EMPTYA list value other than list.string is an empty array. Send null or an empty string to remove the value instead.
-
400METAFIELD_LIST_TOO_MANYA list value has more items than the definition's max_list_items or the platform list limit for the type.
-
400METAFIELD_LIST_ITEM_EMPTYAn item of a list.string value is empty or only whitespace; the message names the item.
-
400METAFIELD_LIST_ITEM_TOO_LONGAn item of a list.string value exceeds the definition's max_value_length or the platform string limit; the message names the item.
-
400METAFIELD_VALUE_FILE_UUID_INVALIDA file_reference value, or an item of a list.file_reference value, is not a file UUID.
-
400METAFIELD_VALUE_ID_INVALIDA product_reference or variant_reference value is not an integer ID.
-
400METAFIELD_VALUE_ID_POSITIVEA product_reference or variant_reference value is not a positive integer.
-
400METAFIELD_VALUE_ID_TOO_LONGA product_reference or variant_reference value exceeds the platform reference ID limit.
-
400METAFIELD_LIST_ITEMS_POSITIVEAn item of a list.product_reference or list.variant_reference value is not a positive integer.
-
400METAFIELD_REFERENCE_PRODUCT_MISSINGA product reference names a product that does not exist in this store.
-
400METAFIELD_REFERENCE_VARIANT_MISSINGA variant reference names a variant that does not exist in this store.
-
400INVALID_INPUTA file reference names a file that is not an uploaded file.
Create a vendor
Create a vendor.
Create with name; omit slug to generate it. Omitted or empty template_handle uses default_vendor. A non-empty image_id must reference an uploaded image in this store and also requires read_files; video, documents, 3D models, and site assets are rejected. storefront_url uses the store's primary domain; storefront_path is the base path without a domain. Shopper-facing URLs may use translated slugs and locale/country prefixes.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Idempotency-Key
|
string |
Optional key, up to 255 characters, that makes this create safe to retry. Repeating the request with the same key and body within 24 hours returns the original response instead of creating again; the same key with a different body returns |
Body parameters
| Name | Type | Description |
|---|---|---|
name
required
|
string |
Vendor name. |
slug
|
string |
Optional slug. Omit to generate from name. |
description
|
string |
Optional plain-text description. |
seo_title
|
string |
Optional SEO title. |
seo_description
|
string |
Optional SEO description. |
image_id
|
string |
Optional Media-library upload image UUID. Video, document, 3D-model, and site-asset ids are invalid. A non-empty value requires |
template_handle
|
string |
Vendor template assignment. Omit this field, send an empty string, or send |
Errors
-
400STORE_API_INVALID_REQUEST_BODYRequest body must be a JSON object containing only documented fields; error.details.field identifies an unknown field.
-
400STORE_API_CREATE_REDIRECT_UNSUPPORTEDCreate_redirect is only supported when updating a vendor.
-
400VENDOR_NAME_REQUIREDName is required.
-
400VENDOR_NAME_INVALID_CHARSName contains unsupported control characters.
-
400VENDOR_NAME_TOO_LONGName exceeds the maximum length.
-
400VENDOR_DESCRIPTION_INVALID_CHARSDescription contains unsupported control characters.
-
400VENDOR_DESCRIPTION_TOO_LONGDescription exceeds the maximum length.
-
400VENDOR_SEO_TITLE_INVALID_CHARSSEO title contains unsupported control characters.
-
400VENDOR_SEO_TITLE_TOO_LONGSEO title exceeds the maximum length.
-
400VENDOR_SEO_DESCRIPTION_INVALID_CHARSSEO description contains unsupported control characters.
-
400VENDOR_SEO_DESCRIPTION_TOO_LONGSEO description exceeds the maximum length.
-
400VENDOR_SLUG_INVALID_FORMATSlug is not valid for Vendor URLs.
-
400VENDOR_SLUG_TOO_LONGSlug exceeds the maximum length.
-
400TEMPLATE_HANDLE_INVALIDTemplate handle is not valid for Vendor templates.
-
400TEMPLATE_HANDLE_NOT_FOUNDTemplate handle is not available for this store.
-
400INVALID_INPUTimage_idis invalid or does not refer to an uploaded image in this store. -
403STORE_API_SCOPE_REQUIREDA non-empty image_id requires read_files scope in addition to write_products.
-
404NOT_FOUNDThe supplied image does not exist in this store.
-
409VENDOR_DUPLICATEName or slug already belongs to another vendor in this store, in any language.
error.details.existing_idis that vendor's id, so a retried create can fetch it instead of creating it again. -
409VENDOR_DELETE_IN_PROGRESSA vendor that is still being deleted holds the name or slug. Retry once the delete finishes.
-
400VENDOR_SLUG_GENERATION_FAILEDA slug could not be generated from the supplied name.
-
400VENDOR_UNIQUE_SLUG_GENERATION_FAILEDA unique generated slug could not be found; supply a slug explicitly.
-
400VENDOR_PLAN_LIMIT_REACHEDThe store has as many vendors as its plan allows; the message states the maximum. Fetch
/vendors/limitsfor the store's current cap and usage. -
503CATALOG_NAMESPACE_BUSYAnother write is claiming the same names or slugs (for example a large CSV import or a translation save). Nothing was changed; retry after a short delay.
-
400CATALOG_REQUEST_KEY_TOO_LONGIdempotency-Keyis longer than 255 characters. -
403PLAN_UNKNOWNThe store has no active plan, so nothing can be created until one is chosen.
-
409CATALOG_REQUEST_KEY_CONFLICTIdempotency-Keywas already used with a different request body.
Bulk create vendors
Create multiple vendors by name.
Creates vendors from names and generates their slugs. Existing names appear in skipped; invalid rows appear in row_errors without blocking valid ones. storefront_url uses the store's primary domain; storefront_path is the base path without a domain. Shopper-facing URLs may use translated slugs and locale/country prefixes.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Idempotency-Key
|
string |
Optional key, up to 255 characters, that makes this create safe to retry. Repeating the request with the same key and body within 24 hours returns the original response instead of creating again; the same key with a different body returns |
Body parameters
| Name | Type | Description |
|---|---|---|
names
required
|
array<string> |
Vendor names to create. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYRequest body must be a JSON object containing only documented fields; error.details.field identifies an unknown field.
-
400VENDOR_BULK_NO_NAMESNo names were provided.
-
400VENDOR_BULK_CREATE_TOO_MANYBatch exceeds the Vendor bulk create cap.
-
409VENDOR_BULK_DUPLICATEOne of the names in the batch was just created by another request.
-
503CATALOG_NAMESPACE_BUSYAnother write is claiming the same names or slugs (for example a large CSV import or a translation save). Nothing was changed; retry after a short delay.
-
400CATALOG_REQUEST_KEY_TOO_LONGIdempotency-Keyis longer than 255 characters. -
403PLAN_UNKNOWNThe store has no active plan, so nothing can be created until one is chosen.
-
409CATALOG_REQUEST_KEY_CONFLICTIdempotency-Keywas already used with a different request body.
Update a vendor
Update a vendor.
Changes only supplied fields. Empty optional text or image_id clears that field; clear a text field's translations first. A non-empty image_id must reference an uploaded image in this store and also requires read_files; video, documents, 3D models, and site assets are rejected. Omit template_handle to keep it, or send default_vendor to reset it; an empty value is invalid. A slug change creates a redirect unless create_redirect is false. storefront_url uses the store's primary domain; storefront_path is the base path without a domain. Shopper-facing URLs may use translated slugs and locale/country prefixes.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
integer |
Vendor id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
name
|
string |
Vendor name. |
slug
|
string |
New slug. Omit to leave the current slug unchanged; an empty value is invalid. |
description
|
string |
New plain-text description. Omit to leave it unchanged; send an empty string to clear it. |
seo_title
|
string |
New SEO title. Omit to leave it unchanged; send an empty string to clear it. |
seo_description
|
string |
New SEO description. Omit to leave it unchanged; send an empty string to clear it. |
image_id
|
string |
New Media-library upload image UUID. Omit to leave the image unchanged; send an empty string to clear it. A non-empty value requires |
template_handle
|
string |
New Vendor template assignment. Omit to leave it unchanged, send |
create_redirect
|
boolean |
When slug changes, create a redirect from the previous slug. |
Errors
-
400STORE_API_INVALID_VENDOR_IDVendor id is invalid.
-
400STORE_API_INVALID_REQUEST_BODYRequest body must be a JSON object containing only documented fields; error.details.field identifies an unknown field.
-
400VENDOR_NAME_REQUIREDName is required.
-
400VENDOR_NAME_INVALID_CHARSName contains unsupported control characters.
-
400VENDOR_NAME_TOO_LONGName exceeds the maximum length.
-
400VENDOR_DESCRIPTION_INVALID_CHARSDescription contains unsupported control characters.
-
400VENDOR_DESCRIPTION_TOO_LONGDescription exceeds the maximum length.
-
400VENDOR_SEO_TITLE_INVALID_CHARSSEO title contains unsupported control characters.
-
400VENDOR_SEO_TITLE_TOO_LONGSEO title exceeds the maximum length.
-
400VENDOR_SEO_DESCRIPTION_INVALID_CHARSSEO description contains unsupported control characters.
-
400VENDOR_SEO_DESCRIPTION_TOO_LONGSEO description exceeds the maximum length.
-
400VENDOR_SLUG_INVALID_FORMATSlug is not valid for Vendor URLs.
-
400VENDOR_SLUG_TOO_LONGSlug exceeds the maximum length.
-
400TEMPLATE_HANDLE_INVALIDTemplate handle is not valid for Vendor templates.
-
400TEMPLATE_HANDLE_NOT_FOUNDTemplate handle is not available for this store.
-
400INVALID_INPUTimage_idis invalid or does not refer to an uploaded image in this store. -
403STORE_API_SCOPE_REQUIREDA non-empty image_id requires read_files scope in addition to write_products.
-
404NOT_FOUNDThe supplied image does not exist in this store.
-
409VENDOR_DUPLICATEName or slug already belongs to another vendor in this store, in any language.
error.details.existing_idis that vendor's id, so a retried create can fetch it instead of creating it again. -
409VENDOR_DELETE_IN_PROGRESSA vendor that is still being deleted holds the name or slug. Retry once the delete finishes.
-
503CATALOG_NAMESPACE_BUSYAnother write is claiming the same names or slugs (for example a large CSV import or a translation save). Nothing was changed; retry after a short delay.
-
404VENDOR_NOT_FOUNDVendor does not exist in this store.
-
409TRANSLATION_SOURCE_FIELD_HAS_TRANSLATIONSClear a field's translations before clearing its source value.
Delete a vendor
Delete a vendor.
Deletes the vendor, its translations, and its metafield values. If products, collection rules, or menu links use it, the first request returns CONFIRMATION_REQUIRED; repeat with confirmed: true and the returned confirmation_token. The vendor, product assignments, and collection rules change atomically. Menu links may update shortly after the response.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
integer |
Vendor id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
confirmed
|
boolean |
On a confirmation retry, set this to true and send the returned confirmation_token. Omit it on the first request. |
confirmation_token
|
string |
Token from the CONFIRMATION_REQUIRED response. Omit it on the first request and resend the exact same id selection when using it. |
Errors
-
400STORE_API_INVALID_VENDOR_IDVendor id is invalid.
-
400STORE_API_INVALID_REQUEST_BODYA non-empty request body must be a JSON object containing only documented fields; error.details.field identifies an unknown field.
-
400VENDOR_CONFIRMATION_INVALIDConfirmation token is missing, expired, or mismatched.
-
404VENDOR_NOT_FOUNDVendor does not exist in this store.
-
409VENDOR_BULK_RACEDDependencies changed before deletion; repeat the request to confirm the current impact.
-
409CONFIRMATION_REQUIREDDelete requires confirmation because dependent records will be changed.
Bulk delete vendors
Delete multiple vendors.
Send vendor IDs in vendor_ids. If deletion affects products, collection rules, or menu links, repeat the request with confirmed: true and the returned confirmation_token. The response lists removed IDs in deleted and missing or changed IDs in failed. IDs listed in deleted are removed atomically. Menu links may update shortly after the response.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
vendor_ids
required
|
array<integer> |
Store-scoped integer vendor ids to delete. |
confirmed
|
boolean |
On a confirmation retry, set this to true and send the returned confirmation_token. Omit it on the first request. |
confirmation_token
|
string |
Token from the CONFIRMATION_REQUIRED response. Omit it on the first request and resend the exact same id selection when using it. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYRequest body must be a JSON object containing only documented fields; error.details.field identifies an unknown field.
-
400VENDOR_BULK_NO_IDSNo vendor_ids were provided.
-
400VENDOR_BULK_DELETE_TOO_MANYBatch exceeds the Vendor bulk delete cap.
-
400VENDOR_CONFIRMATION_INVALIDConfirmation token is missing, expired, or mismatched.
-
409CONFIRMATION_REQUIREDDelete requires confirmation because dependent records will be changed.
Fields#
Field |
Create |
Update |
Required |
Translatable |
|---|---|---|---|---|
|
No |
No |
No |
|
|
No |
No |
No |
|
|
Yes |
Yes |
create |
Yes |
|
Yes |
Yes |
Yes |
|
|
Yes |
Yes |
Yes |
|
|
Yes |
Yes |
Yes |
|
|
Yes |
Yes |
Yes |
|
|
Yes |
Yes |
No |
|
|
No |
No |
No |
|
|
No |
No |
No |
|
|
Yes |
Yes |
No |
|
|
No |
Yes |
No |
|
|
No |
No |
No |
|
|
No |
No |
No |
|
|
No |
No |
No |
|
|
No |
No |
No |
|
|
No |
No |
No |
No |
|
No |
No |
No |
No |
Webhook events#
Subscribe to these events to keep your integration in sync with vendors. Event cards show the required scope, permission, and payload.
Metafield events follow definition access: apps receive their own, merchant-owned, and other apps' shared definitions; store-level endpoints receive merchant-owned and non-hidden app definitions.
Vendor created
Fired after a vendor is created. The payload contains the new vendor snapshot; product_count is 0 and translations_updated_at is null.
Payload fields
| Field | Type | Description |
|---|---|---|
vendor.id |
integer |
Always present
The stable vendor id. |
vendor.name |
string |
Selectable in the Payload builder
The vendor name at the time the event was created. |
vendor.slug |
string |
Selectable in the Payload builder
The vendor slug at the time the event was created. |
vendor.description |
string |
Selectable in the Payload builder
The vendor description in the store's default language. |
vendor.seo_title |
string |
Selectable in the Payload builder
The vendor page's SEO title in the store's default language. |
vendor.seo_description |
string |
Selectable in the Payload builder
The vendor page's SEO description in the store's default language. |
vendor.image_id |
string |
Selectable in the Payload builder
The assigned Media-library image UUID, or null when no image is assigned. |
vendor.image_url |
string |
Selectable in the Payload builder
The storefront URL for the assigned image, or an empty string. |
vendor.image_cdn_url |
string |
Selectable in the Payload builder
The delivery URL for the assigned image, or an empty string. |
vendor.product_count |
integer |
Selectable in the Payload builder
The number of products assigned to the vendor when the event was created. |
vendor.template_handle |
string |
Selectable in the Payload builder
The storefront Vendor template assigned to the vendor. |
vendor.created_at |
string |
Selectable in the Payload builder
When the vendor was created. |
vendor.updated_at |
string |
Selectable in the Payload builder
When the vendor last changed. |
vendor.translations_updated_at |
string |
Selectable in the Payload builder
When any vendor translation last changed, or null when none exist. |
Vendor updated
Fired after vendor fields change. Product assignment changes do not fire this event; fetch the vendor when you need an authoritative product_count. A rename is announced by this event alone (changed_fields includes name): the vendor's products do not each get products/update (channel apps still get product_publications/update for products on their channel), so refresh any vendor name you cache on products from it.
Possible changed_fields values
The changed_fields array names exactly which of these changed in this event — use it to skip processing updates your integration doesn't care about.
description image_id name seo_description seo_title slug template_handle
Payload fields
| Field | Type | Description |
|---|---|---|
vendor.id |
integer |
Always present
The stable vendor id. |
vendor.name |
string |
Selectable in the Payload builder
The vendor name at the time the event was created. |
vendor.slug |
string |
Selectable in the Payload builder
The vendor slug at the time the event was created. |
vendor.description |
string |
Selectable in the Payload builder
The vendor description in the store's default language. |
vendor.seo_title |
string |
Selectable in the Payload builder
The vendor page's SEO title in the store's default language. |
vendor.seo_description |
string |
Selectable in the Payload builder
The vendor page's SEO description in the store's default language. |
vendor.image_id |
string |
Selectable in the Payload builder
The assigned Media-library image UUID, or null when no image is assigned. |
vendor.image_url |
string |
Selectable in the Payload builder
The storefront URL for the assigned image, or an empty string. |
vendor.image_cdn_url |
string |
Selectable in the Payload builder
The delivery URL for the assigned image, or an empty string. |
vendor.product_count |
integer |
Selectable in the Payload builder
The number of products assigned to the vendor when the event was created. |
vendor.template_handle |
string |
Selectable in the Payload builder
The storefront Vendor template assigned to the vendor. |
vendor.created_at |
string |
Selectable in the Payload builder
When the vendor was created. |
vendor.updated_at |
string |
Selectable in the Payload builder
When the vendor last changed. |
vendor.translations_updated_at |
string |
Selectable in the Payload builder
When any vendor translation last changed, or null when none exist. |
previous.id |
integer |
Always present
The stable vendor id. This value is from before the update. |
previous.name |
string |
Selectable in the Payload builder
The vendor name at the time the event was created. This value is from before the update. |
previous.slug |
string |
Selectable in the Payload builder
The vendor slug at the time the event was created. This value is from before the update. |
previous.description |
string |
Selectable in the Payload builder
The vendor description in the store's default language. This value is from before the update. |
previous.seo_title |
string |
Selectable in the Payload builder
The vendor page's SEO title in the store's default language. This value is from before the update. |
previous.seo_description |
string |
Selectable in the Payload builder
The vendor page's SEO description in the store's default language. This value is from before the update. |
previous.image_id |
string |
Selectable in the Payload builder
The assigned Media-library image UUID, or null when no image is assigned. This value is from before the update. |
previous.image_url |
string |
Selectable in the Payload builder
The storefront URL for the assigned image, or an empty string. This value is from before the update. |
previous.image_cdn_url |
string |
Selectable in the Payload builder
The delivery URL for the assigned image, or an empty string. This value is from before the update. |
previous.product_count |
integer |
Selectable in the Payload builder
The number of products assigned to the vendor when the event was created. This value is from before the update. |
previous.template_handle |
string |
Selectable in the Payload builder
The storefront Vendor template assigned to the vendor. This value is from before the update. |
previous.created_at |
string |
Selectable in the Payload builder
When the vendor was created. This value is from before the update. |
previous.updated_at |
string |
Selectable in the Payload builder
When the vendor last changed. This value is from before the update. |
previous.translations_updated_at |
string |
Selectable in the Payload builder
When any vendor translation last changed, or null when none exist. This value is from before the update. |
changed_fields |
array |
Always present
The vendor fields changed by this event. |
change_type |
string |
Always present
Why vendors/update fired: source for vendor field edits. |
Vendor deleted
Fired after a vendor is deleted. Removed translations and metafield values have separate delete events.
Payload fields
| Field | Type | Description |
|---|---|---|
vendor.id |
integer |
Always present
The stable vendor id. |
vendor.name |
string |
Selectable in the Payload builder
The vendor name at the time the event was created. |
vendor.slug |
string |
Selectable in the Payload builder
The vendor slug at the time the event was created. |
Vendor metafield value created
Fired after a vendor metafield value is created. The payload contains the vendor identity, definition, and stored value.
Payload fields
| Field | Type | Description |
|---|---|---|
vendor.id |
integer |
Always present
The stable vendor id. |
vendor.name |
string |
Selectable in the Payload builder
The vendor name at the time the event was created. |
vendor.slug |
string |
Selectable in the Payload builder
The vendor slug at the time the event was created. |
metafield.definition.id |
string |
Selectable in the Payload builder
The stable metafield definition UUID. |
metafield.definition.owner_type |
string |
Selectable in the Payload builder
The resource type that can hold this definition; vendor for these events. |
metafield.definition.namespace |
string |
Selectable in the Payload builder
The definition namespace. |
metafield.definition.key |
string |
Selectable in the Payload builder
The definition key within its namespace. |
metafield.definition.name |
string |
Selectable in the Payload builder
The merchant-facing definition name. |
metafield.definition.description |
string |
Selectable in the Payload builder
The optional merchant-facing definition description. |
metafield.definition.type |
string |
Selectable in the Payload builder
The metafield value type. |
metafield.definition.is_translatable |
boolean |
Selectable in the Payload builder
Whether the stored value can have locale-specific translations. |
metafield.definition.max_value_length |
integer |
Selectable in the Payload builder
The maximum stored string length, or null when this limit does not apply. |
metafield.definition.max_list_items |
integer |
Selectable in the Payload builder
The maximum number of list items, or null when this limit does not apply. |
metafield.definition.sort_order |
integer |
Selectable in the Payload builder
The definition's display order. |
metafield.definition.app_id |
string |
Selectable in the Payload builder
The owning app id, or null for a merchant-owned definition. |
metafield.definition.app_access |
string |
Selectable in the Payload builder
Whether another authorized app may read the definition: private or shared. |
metafield.definition.merchant_access |
string |
Selectable in the Payload builder
How Store Admin can access an app-owned definition: hidden, read, or read_write. |
metafield.definition.created_at |
string |
Selectable in the Payload builder
When the definition was created. |
metafield.definition.updated_at |
string |
Selectable in the Payload builder
When the definition last changed. |
metafield.definition.usage_count |
integer |
Selectable in the Payload builder
The number of vendor values currently stored for this definition. |
metafield.value |
string |
Selectable in the Payload builder
The stored metafield value. |
metafield.created_at |
string |
Selectable in the Payload builder
When this vendor's value was created. |
metafield.updated_at |
string |
Selectable in the Payload builder
When this vendor's value last changed. |
Vendor metafield value updated
Fired after a vendor metafield value changes. previous and current contain the value snapshots, and changed_fields is ["value"].
Possible changed_fields values
The changed_fields array names exactly which of these changed in this event — use it to skip processing updates your integration doesn't care about.
value
Payload fields
| Field | Type | Description |
|---|---|---|
vendor.id |
integer |
Always present
The stable vendor id. |
vendor.name |
string |
Selectable in the Payload builder
The vendor name at the time the event was created. |
vendor.slug |
string |
Selectable in the Payload builder
The vendor slug at the time the event was created. |
previous.definition.id |
string |
Selectable in the Payload builder
The stable metafield definition UUID. |
previous.definition.owner_type |
string |
Selectable in the Payload builder
The resource type that can hold this definition; vendor for these events. |
previous.definition.namespace |
string |
Selectable in the Payload builder
The definition namespace. |
previous.definition.key |
string |
Selectable in the Payload builder
The definition key within its namespace. |
previous.definition.name |
string |
Selectable in the Payload builder
The merchant-facing definition name. |
previous.definition.description |
string |
Selectable in the Payload builder
The optional merchant-facing definition description. |
previous.definition.type |
string |
Selectable in the Payload builder
The metafield value type. |
previous.definition.is_translatable |
boolean |
Selectable in the Payload builder
Whether the stored value can have locale-specific translations. |
previous.definition.max_value_length |
integer |
Selectable in the Payload builder
The maximum stored string length, or null when this limit does not apply. |
previous.definition.max_list_items |
integer |
Selectable in the Payload builder
The maximum number of list items, or null when this limit does not apply. |
previous.definition.sort_order |
integer |
Selectable in the Payload builder
The definition's display order. |
previous.definition.app_id |
string |
Selectable in the Payload builder
The owning app id, or null for a merchant-owned definition. |
previous.definition.app_access |
string |
Selectable in the Payload builder
Whether another authorized app may read the definition: private or shared. |
previous.definition.merchant_access |
string |
Selectable in the Payload builder
How Store Admin can access an app-owned definition: hidden, read, or read_write. |
previous.definition.created_at |
string |
Selectable in the Payload builder
When the definition was created. |
previous.definition.updated_at |
string |
Selectable in the Payload builder
When the definition last changed. |
previous.definition.usage_count |
integer |
Selectable in the Payload builder
The number of vendor values currently stored for this definition. |
previous.value |
string |
Selectable in the Payload builder
The stored value before the change. |
previous.created_at |
string |
Selectable in the Payload builder
When this vendor's value was created. |
previous.updated_at |
string |
Selectable in the Payload builder
When this vendor's value last changed. |
current.definition.id |
string |
Selectable in the Payload builder
The stable metafield definition UUID. |
current.definition.owner_type |
string |
Selectable in the Payload builder
The resource type that can hold this definition; vendor for these events. |
current.definition.namespace |
string |
Selectable in the Payload builder
The definition namespace. |
current.definition.key |
string |
Selectable in the Payload builder
The definition key within its namespace. |
current.definition.name |
string |
Selectable in the Payload builder
The merchant-facing definition name. |
current.definition.description |
string |
Selectable in the Payload builder
The optional merchant-facing definition description. |
current.definition.type |
string |
Selectable in the Payload builder
The metafield value type. |
current.definition.is_translatable |
boolean |
Selectable in the Payload builder
Whether the stored value can have locale-specific translations. |
current.definition.max_value_length |
integer |
Selectable in the Payload builder
The maximum stored string length, or null when this limit does not apply. |
current.definition.max_list_items |
integer |
Selectable in the Payload builder
The maximum number of list items, or null when this limit does not apply. |
current.definition.sort_order |
integer |
Selectable in the Payload builder
The definition's display order. |
current.definition.app_id |
string |
Selectable in the Payload builder
The owning app id, or null for a merchant-owned definition. |
current.definition.app_access |
string |
Selectable in the Payload builder
Whether another authorized app may read the definition: private or shared. |
current.definition.merchant_access |
string |
Selectable in the Payload builder
How Store Admin can access an app-owned definition: hidden, read, or read_write. |
current.definition.created_at |
string |
Selectable in the Payload builder
When the definition was created. |
current.definition.updated_at |
string |
Selectable in the Payload builder
When the definition last changed. |
current.definition.usage_count |
integer |
Selectable in the Payload builder
The number of vendor values currently stored for this definition. |
current.value |
string |
Selectable in the Payload builder
The stored value after the change. |
current.created_at |
string |
Selectable in the Payload builder
When this vendor's value was created. |
current.updated_at |
string |
Selectable in the Payload builder
When this vendor's value last changed. |
changed_fields |
array |
Selectable in the Payload builder
The metafield fields that changed. Vendor metafield update events currently contain value. |
Vendor metafield value deleted
Fired when a vendor metafield value is deleted, including as part of vendor deletion. Removed translations have separate delete events.
Payload fields
| Field | Type | Description |
|---|---|---|
vendor.id |
integer |
Always present
The stable vendor id. |
vendor.name |
string |
Selectable in the Payload builder
The vendor name at the time the event was created. |
vendor.slug |
string |
Selectable in the Payload builder
The vendor slug at the time the event was created. |
metafield.definition.id |
string |
Selectable in the Payload builder
The stable metafield definition UUID. |
metafield.definition.owner_type |
string |
Selectable in the Payload builder
The resource type that can hold this definition; vendor for these events. |
metafield.definition.namespace |
string |
Selectable in the Payload builder
The definition namespace. |
metafield.definition.key |
string |
Selectable in the Payload builder
The definition key within its namespace. |
metafield.definition.name |
string |
Selectable in the Payload builder
The merchant-facing definition name. |
metafield.definition.description |
string |
Selectable in the Payload builder
The optional merchant-facing definition description. |
metafield.definition.type |
string |
Selectable in the Payload builder
The metafield value type. |
metafield.definition.is_translatable |
boolean |
Selectable in the Payload builder
Whether the stored value can have locale-specific translations. |
metafield.definition.max_value_length |
integer |
Selectable in the Payload builder
The maximum stored string length, or null when this limit does not apply. |
metafield.definition.max_list_items |
integer |
Selectable in the Payload builder
The maximum number of list items, or null when this limit does not apply. |
metafield.definition.sort_order |
integer |
Selectable in the Payload builder
The definition's display order. |
metafield.definition.app_id |
string |
Selectable in the Payload builder
The owning app id, or null for a merchant-owned definition. |
metafield.definition.app_access |
string |
Selectable in the Payload builder
Whether another authorized app may read the definition: private or shared. |
metafield.definition.merchant_access |
string |
Selectable in the Payload builder
How Store Admin can access an app-owned definition: hidden, read, or read_write. |
metafield.definition.created_at |
string |
Selectable in the Payload builder
When the definition was created. |
metafield.definition.updated_at |
string |
Selectable in the Payload builder
When the definition last changed. |
metafield.definition.usage_count |
integer |
Selectable in the Payload builder
The number of vendor values currently stored for this definition. |
metafield.value |
string |
Selectable in the Payload builder
The stored metafield value. |
metafield.created_at |
string |
Selectable in the Payload builder
When this vendor's value was created. |
metafield.updated_at |
string |
Selectable in the Payload builder
When this vendor's value last changed. |