Third Variation Tutorial
important
This is an upcoming feature. OpenAPI devs need to be ready by August 17th 2026, but Etsy will communicate the exact date of the General Audience launch closer to cutover.
The maximum number of listing properties to be used in a listing's inventory is now 3.
Set the new query parameter max_variations_supported to 3 to write listing inventory with 3 variations.
The third variation can be one of the properties of the listing's taxonomy node and can use the property's predefined values("possible_values") or custom values.
It can also be a custom variation.
When using predefined properties and values, buyers can find your listings via search filters.
Developer Preview#
To facilitate development and testing prior to the General Audience launch, we are providing developers early access to these features via authorized test accounts starting on August 17th 2026.
To access the Third Variation feature prior to the General Audience launch, developers must use a seller account in developer mode.
Prerequisites#
- An Etsy OpenAPI application account for development
How to Join the Developer Preview#
To join the developer preview for the Third Variation feature:
- Log in to Etsy with your account.
- Set your shop account to developer mode by going to https://www.etsy.com/developers/shop.
- To restore your shop back to sales mode, follow the instructions in the above page.
- Register for the Third Variation developer preview by going to https://www.etsy.com/your/shops/me/dashboard?enroll-seller-third-variation-preview=true.
A green success toast appears after a successful registration.
You're in! You can try out the new third variation feature in Listings.⨉- A red failure toast appears after a failed registration.
Looks like you don’t quite meet the eligibility requirements for the new third variation feature. This could be because the shop is not in Developer Mode, has no active app connections, or is otherwise ineligible.⨉
- To add listings with three variations, follow the rest of this tutorial.
Reading Listings with a Third Variation#
warning
Ensure you update your app to support reading all three variations before August 17th 2026. After that date, your app may incorrectly process listings with three variations and fail silently.
Endpoints that return inventory and variation data may now have up to three variations.
If a listing has three variations:
- when calling getListingInventory, all the
"products" > "property_values"arrays have three elements. - when calling getListing with the
includes=Inventoryquery param, the"inventory" > "products" > "property_values"arrays have three elements. - when calling getShopReceiptTransaction for a transaction for the listing, the
"variations"array has three elements. - when calling getShopReceipt for a receipt for the listing, the
"transactions" > "product_data"arrays and the"transactions" > "variations"array have three elements.
Example Response for getListingInventory
Writing Listings with a Third Variation#
The updateListingInventory endpoint accepts values for a third variation.
If the query parameter max_variations_supported is set to 3, adding or updating the third variation is enabled.
The *_on_property fields can have zero, one, or all the variation properties.
For performance, the number of products allowed is limited to 2500 for listings with three variations and to 400 for listings where any *_on_property field has all variation properties.
- Related endpoints: updateListingInventory
- Structure changes: The request and response structures remain the same.
- New parameters: Optional integer query parameter
max_variations_supportedwith accepted values[2, 3].- If included and set to
3, the endpoint accepts requests with three variations and/or updates to listings with three variations. - If omitted or set to
2, the endpoint rejects requests with three variations and/or updates to listings with three variations and returns an appropriate error message. - Invalid values for this parameter return an appropriate error message.
- For requests with two or less variations this parameter is not required.
- If included and set to
- Errors:
- 400: Invalid value (X) for query parameter
max_variations_supported. - 409: Could not update inventory for listing with unsupported number of variations. The maximum number of supported variations is X.
- 409: Could not update inventory with unsupported number of variations. The maximum number of supported variations is X.
- 400:
X_on_property:unsupported number of property IDs. Supports only zero, one, or all Y variation properties. - 400: There was a problem with /inventory. Total products X exceeds maximum allowed 2500 for 3 variations.
- 400: There was a problem with /inventory. Total products X exceeds maximum allowed 400 for listing that varies by all properties.
- 400: Invalid value (X) for query parameter
Parameter Conditionals#
- Query parameter
max_variations_supportedis omitted or set to2.
| Listing | Request Payload | Result |
|---|---|---|
| Has up to two variations | Has up to two variations | Request succeeds, listing has request variations |
| Has up to three variations | Has three variations | Request fails with a 400 error, listing has original variations |
| Has three variations | Has up to three variations | Request fails with a 400 error, listing has original variations |
- Query parameter
max_variations_supportedis set to3.
| Listing | Request Payload | Result |
|---|---|---|
| Has up to three variations | Has up to three variations | Request succeeds, listing has request variations |
Notes:
- If the
max_variations_supportedquery parameter is set to a different value than2or3the request returns a 400 error. - If the listing has three variations and the request payload has less than three variations, the missing variations are deleted.
Writing a Third Variation#
Use the endpoint getPropertiesByTaxonomyId to get the list of properties that can be used for variations ("supports_variations": true).
The third variation can also be a custom variation.
Examples#
- Parameter set to 3
- Parameter unset or set to 2
- Parameter set to 3, custom variation
- Parameter set to 3, custom option
- Context:
- Request for listing with two or less variations, request adds a third variation.
- Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Response changes:
- All
products[].property_valueshave three elements. - The
*_on_propertyfields may have zero, one, or all three properties.
- All
Example Payload
Example Response
- Context:
- Request for listing with two or less variations, request adds a third variation.
- Query parameter
max_variations_supportedis omitted or set to2. (max_variations_supported=2)
- Response changes:
- Returns a 409 error.
Example Payload
Example Response
- Context:
- Request for listing with two variations, payload adds a third custom variation.
- Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Response changes:
- All
products[].property_valueshave three elements. - The
*_on_propertyfields may have zero, one, or all three properties.
- All
Example Payload
Example Response
- Context:
- Request for listing with three variations, payload adds a custom value to the third variation.
- Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Response changes:
- All
products[].property_valueshave three elements. - The
*_on_propertyfields may have zero, one, or all three properties.
- All
Example Payload
Example Response
Writing a Third Variation: On Property#
For listings with a third variation, you can use the *_on_property fields as follows:
- Leave all of them empty, OR
- Add one property to any of them, OR
- Add all three properties to any of them.
When the listing has three variations, adding only two properties to any of these fields returns an error.
Examples#
- Empty on_property fields
- Up to one element
- Three elements
- Two elements
- Context:
- Payload has a third variation and empty
*_on_propertyfields. - Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Payload has a third variation and empty
- Response changes:
- All
products[].property_valueshave three elements. - The
*_on_propertyfields are empty.
- All
Example Payload
Example Response
- Context:
- Payload has a third variation and
*_on_propertyfields have up to one element. - Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Payload has a third variation and
- Response changes:
- All
products[].property_valueshave three elements. - The
*_on_propertyfields are empty or have one element.
- All
Example Payload
Example Response
- Context:
- Payload has a third variation and
*_on_propertyfields have three elements. - Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Payload has a third variation and
- Response changes:
- All
products[].property_valueshave three elements. - The
*_on_propertyfields are empty or have three elements.
- All
Example Payload
Example Response
- Context:
- Payload has a third variation and
*_on_propertyfields have two elements. - Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Payload has a third variation and
- Response changes:
- Returns a 400 error.
Example Payload
Example Response
Writing a Third Variation: Product Limits#
For more complex listings, the number of products allowed is limited for performance:
- For listings with three variations, the maximum number of products is 2500.
- For listings with two or three variations where any
*_on_propertyfield has all properties, then the maximum number of products is 400.
Adding more products than allowed returns an error.
Examples#
- Three variations
- Vary by all properties
- Context:
- Payload has a third variation, more than 2500 products, and no
*_on_propertyfields with all properties. - Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Payload has a third variation, more than 2500 products, and no
- Response changes:
- Returns a 400 error.
Example Payload
Example Response
- Context:
- Payload has a third variation, more than 400 products, and at least one
*_on_propertyfield has all three properties. - Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Payload has a third variation, more than 400 products, and at least one
- Response changes:
- Returns a 400 error.
Example Payload
Example Response
Removing the Third Variation#
To remove the third variation, use the updateListingInventory endpoint.
Set the query parameter max_variations_supported to 3 and remove the variation property from property_values.
Ensure that *_on_property fields only have properties used in the new inventory.
Examples#
- Parameter set to 3
- Parameter unset or set to 2
- Context:
- Request for listing with three variations, payload removes a variation
- Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Response changes:
- All
products[].property_valueshave two elements. - The
*_on_propertyfields may have zero, one, or all two properties.
- All
Example Payload
Example Response
- Context:
- Request for listing with three variations, payload removes a variation
- Query parameter
max_variations_supportedis omitted or set to2. (max_variations_supported=2)
- Response changes:
- Returns a 409 error.
Example Payload
Example Response