Product packs
Product packs allow selling grouped products with dynamic attributes.
In the following example, a product pack called "Salón Europa" is sold, in which you can choose between 3 different cabinets (variants) with different attributes for each product:
- Cadiz Cabinet 150 cm
- Monaco Cabinet 50 cm
- Valencia Cabinet 45 cm
Instead of creating a field for each variant with its name (especially if there are too many), which would require creating numerous fixed fields in the connector, the attribute group names can be added as a value in the fields called dynamic_name and dynamic_value in the variants form.
Then, in the channel variants tab, dynamic_name must be included in the mapping and the following formula added:
CONCAT("name:", {dynamic_name}, ";value:", {dynamic_value})
This way, with two fields in the catalog, one for the name {dynamic_name} and the other for the value {dynamic_value}, it is possible to avoid creating multiple fields in variants. The buyer can choose their products by purchasing a specific product name and only see the value of each attribute for each variant.
Note: if the dynamic_value contains the separator ";", it will conflict with the separators that structure the data internally, so ";" must not be used.
Only if you are sure that the character ";" is not in the value, you can use the following formula:
CONCAT("name:", {dynamic_name}, ";value:", REPLACE({dynamic_value}, ";", "X"))
where "X" is the character it is replaced with.
Another example of how we can use this functionality:

The Pack attribute of product p02 has a value of a Product Pack in the Products table. This will act as dynamic_name.

Connector assignment (Formula) in Variant output data:
CONCAT("name:", {products.Pack}, ";value:", {Pack item})
This way, a variant will be created in Shopify with the name of the product.pack value, and its possible values will be the variant.pack item value of the Sales Layer product.
The result of the Shopify synchronization for the example of product p02 will be the following pack: