An apparel store differs from an electronics or cosmetics store in two ways. One garment is sold as dozens of size and colour combinations, each with its own stock, images and code. And a share of every month's orders comes back, because the customer bought something they could not try on. Both problems are settled in your data structure and in your published policy, long before design or advertising. Fixing them a year into trading means migrating items, reshooting photographs and amending terms you already committed to in front of customers.

This article covers those two problems only. Platform choice, budgeting and the legal steps to start trading have separate guides, linked where they belong.

One shirt, twelve items

A shirt that comes in four sizes and three colours is twelve items in your system, each with its own quantity. That is not an accounting nicety. Hold stock at model level and your first stock count will not tell you how many navy mediums are left, and you will keep selling a size that ran out while another sits untouched. The numbering rules behind this are covered in item codes and barcodes in a warehouse system, including the GS1 rule that gives every size and every colour its own number.

The structure that survives has three layers. The model carries what does not change with size: name, description, fabric, country of origin, collection. Options and their values live in their own table (size: S, M, L, XL; colour: black, beige, navy). A variant is one specific combination of option values, with its internal code, price, weight and quantity.

The common mistake is a "colour" column and a "size" column inside the products table. That works for two months, until you add trousers in three lengths and find yourself altering the table and every screen that reads from it. Options stored as rows accept a third or fourth option without schema changes.

Note also that not every possible combination exists in your warehouse. Black may come in four sizes and beige in two. A product page that generates all combinations arithmetically will offer a size that was never manufactured; the customer reads that as "out of stock" and leaves. Separate "unavailable now" from "not part of this collection", and create a variant row only for combinations you actually sell.

Hosted platforms also have a ceiling worth knowing before you build a catalogue on one. Shopify raised its variant limit to 2,048 per product in October 2025, up from 100, and warned that apps still off the supported GraphQL product APIs may break on products above one hundred variants. Five sizes across eight colours across three lengths is 120 variants for a single model, so the ceiling is not theoretical for apparel.

Which measurement belongs in the size chart

"Publish an accurate size chart" appears in every article about fashion stores, and almost none of them say which measurement goes in it. A published reference exists. ISO 8559-2 specifies, per garment type, the measurement that a size is named after, and the publicly available preview pages are enough to follow the logic. Its founding rule is that size designation is based on body measurements rather than garment measurements, and that the primary dimension is a body measurement in centimetres.

GarmentPrimary dimension, menPrimary dimension, women
Jacket and overcoatChest girthBust girth
Trousers and shortsWaist girthHip girth
SkirtNot applicableHip girth
DressNot applicableBust girth
Knitwear and T-shirtsChest girthBust girth
Shirt and blouseNeck girth or chest girthBust girth

Secondary dimensions sit beside the primary one where they help: height, waist girth, and inside leg length for trousers. Cup size in intimate apparel is defined by the standard as the difference between bust girth and underbust girth, not as an inherited letter.

How to take those measurements is the subject of part one, and that part matters to Gulf readers in particular. The GSO Technical Council approved the document GSO ISO 8559-1:2025 at its sixty-first meeting on 14 October 2025, making it a Gulf standard adopted from ISO 8559-1:2017 with no technical modification. You now have a regionally approved reference for what each measurement means and how it is taken.

What does not exist is an official table converting S, M and L into European, American or Saudi sizes. The standard's own introduction explains why: because sizing systems differ from company to company, two unlike size labels can suit two bodies whose measurements are the same. Centimetres remain the only shared unit.

Product feeds show the same gap. Google accepts a size system attribute with a fixed list of values: AU, BR, CN, DE, EU, FR, IT, JP, MEX, UK and US. No Gulf or Egyptian system is among them. Leave the field empty and Google assumes the standard system of your target country, which may be wrong for a garment you imported from Türkiye or China.

In practice, publish two separate tables on the product page and keep them apart: body measurements each size is meant to fit, and flat garment measurements (chest width, garment length, shoulder width). Label each one, because a customer measuring a garment from their own wardrobe needs the second while a customer measuring themselves needs the first. Add the model's height and the size they are wearing, with a short note on how to take each measurement.

The colour that changes the image and the URL

Choosing a colour on an apparel product page changes everything the customer sees, not only price and availability. Every colour needs its own images shot at the same angles: the full garment, a close crop of the fabric, and a shot on a model. A store that shows the black photograph while beige is selected has manufactured a return.

Three technical decisions follow:

  • Attach images to the variant rather than the model, so each variant inherits the photographs of its colour.
  • Change the URL state with the selection (a query parameter such as ?color=beige) so the customer can share the colour they picked and search engines can tell that the page is showing a specific option.
  • Mark up options with ProductGroup, hasVariant and variesBy. The properties Google supports here are colour, size, material, pattern, suggested age and suggested gender.

In the feed itself, one colour value per variant is required, and it must match what the landing page says word for word; if the page says "beige", do not send "camel". A multi-coloured garment takes at most three colours, one primary followed by two secondary.

Planning to build or scale a digital project?

Snaabble provides a tailored technical assessment to define the right stack & exact budget.

All of this has a legal side that is easy to miss. Article 40 of the Executive Regulation of the UAE consumer protection law requires that an item never be presented in a form differing from its true nature, its size or its specifications. In Saudi Arabia, the Ministry of Commerce guide for e-stores treats an electronic advertisement as a contractual document that binds both parties, and prohibits anything that deceives or misleads the consumer, directly or indirectly. Retouching that turns grey into charcoal is not a matter of taste.

Returns: the text decides who pays

Who pays return shipping? Most merchants postpone that question until the first dispute, and the answer is written into law more plainly than they expect.

In Egypt, article 40 of consumer protection law 181 of 2018 gives a distance buyer the right to withdraw within fourteen days of receiving the goods, and obliges the supplier to refund by the same payment method within no more than seven days of the product being returned. The article then states that the consumer bears shipping and return costs unless the contract provides otherwise. The default in Egypt is that the customer pays, and covering return shipping yourself is a commercial choice you write into your policy rather than an obligation imposed on you. The same article reverses the rule in one case: if you miss the agreed delivery date, or thirty days where no date was agreed, the customer may withdraw at no cost and you carry all return shipping and delivery charges.

In Saudi Arabia, the Ministry of Commerce guide states that the consumer may exchange or return within seven days of the purchase for products received immediately, provided the product has not been used, and that the consumer bears the costs of the return unless the parties agreed otherwise. Having a clear written exchange and return policy that spells out details such as transport and shipping charges, and who carries them, is one of thirteen points the Ministry checks during its inspections.

Three cases matter specifically to apparel:

  • Garments made to a customer's measurements. In Egypt the right of withdrawal falls away for goods made to the consumer's order or to specifications they set (article 41), and the Saudi rules exclude products manufactured on the consumer's request or to specific requirements, while the right to return remains where the item is defective or does not match what was agreed. An abaya or made-to-measure shirt business therefore needs a separate path for these orders inside the system.
  • Items that cannot be resold for health reasons. These are excluded under the Saudi rules, and in Egypt article 17 covers goods whose nature or packaging prevents their return. Underwear and swimwear usually sit here, provided you disclosed it in advance.
  • Defects and non-conformity. This case runs longer: article 21 of the Egyptian law gives the consumer thirty days from receipt to exchange or return goods that are defective or do not match the specifications, at no additional cost.

Disclosure is itself an obligation. Article 37 of the Egyptian law requires the supplier, before a distance contract is concluded, to present the product's essential characteristics, its price and any shipping charges added to it, and the terms and period of withdrawal. Article 40 of the UAE regulation requires an e-commerce store to publish the conditions under which an item may be returned or replaced.

What this means inside your system: store the actual delivery date per order line rather than the order date, because the clock starts at receipt. Calculate the return window per line, since one order can arrive in two shipments. And keep a dated version of your written policy, because a customer relies on the policy that was published on the day they bought. Selling beyond your own border adds another layer of constraints, covered in shipping for online stores and what customs requires.

The returned garment: a decision before it goes back on the shelf

In an apparel store a returned piece may be perfectly saleable, or it may come back after a day of wear. Refunding the money and returning the quantity to stock are therefore two separate operations, and anyone who wires them together will sell a garment still in transit, or one that should never be sold again.

Serious platforms treat this as an explicit decision. In Shopify, the restock type on a refund line is a value you choose: cancel for a line that was never fulfilled, return for a line that shipped, or no restock at all. Whatever system you run, keep the same logic: a state for "returning", then "under inspection", then one of three outcomes: saleable, needs repair or cleaning, or write-off. The quantity becomes sellable again only in the first case.

The UAE regulation is categorical about one situation: recalled or returned defective goods may not be re-offered or sold on e-commerce platforms. Give those items a terminal state in your system with no way back.

The season that ends and the sizes that stay

A collection in an apparel store is a data dimension of its own, not a marketing tag. Link every model to a collection with a launch date and a season, because three months later your questions will be about the collection rather than the item: what sold out of the summer range, and what is left of it before the autumn shipment lands.

Then watch where the discount is applied. In apparel a markdown belongs to the variant, not the model, because what remains at the end of a season is usually two or three sizes from the extremes rather than the whole model. Marking down the entire model burns margin on sizes that would have sold at full price.

When a size or colour runs out, keep the model page live and disable the variant instead. Deleting or hiding the page throws away a URL with history, and turns away a visitor who would have bought a different size from that same page. And if the smallest and largest sizes are what is left over season after season, that is a signal for the next buying plan more than a pricing problem.

The product data the law asks for

A garment description is not an optional piece of marketing copy. Article 37 of the Egyptian law requires the product's data, essential characteristics and source to be presented before the contract. Article 40 of the UAE regulation is more detailed about e-commerce: a detailed statement of what the item is made of and how it is specified, written in the original language alongside Arabic; the country of origin preceded by "Made in"; and how the item is to be handled, stored and used. In Saudi Arabia, displaying products in Arabic is its own line in the points the Ministry of Commerce checks.

Care instructions have an adopted Gulf standard of their own: GSO ISO 3758:2014, textiles, care labelling code using symbols, approved on 2 April 2014, covering washing, bleaching, drying, ironing and professional cleaning. Those symbols live on the garment's sewn-in label, but the customer buys before ever seeing it, so put them on the page as text too. Labelling of industrial products generally has a separate Gulf standard, GSO 1827:2007.

The practical consequence is that your product page needs fixed fields rather than free text: fibre composition, country of origin, care instructions, measurements. Separate fields filled in for every model, so you can filter on them, send them in the product feed and review them before publishing.

Decisions to write into the scope before the first line of code

  • Stock held at variant level, with options and their values in separate tables that accept a third option.
  • A variant row only for combinations you actually carry, and a clear difference between "sold out" and "not in this collection".
  • Images attached to the variant, a URL state that changes with colour, and ProductGroup markup for the options.
  • Two labelled size tables, body measurements and flat garment measurements, in centimetres, with the model's height and size.
  • The size system attribute set explicitly in the feed rather than left to an assumption.
  • Delivery date stored per order line, with the return window calculated from it.
  • A separate path for made-to-measure orders, and a published list of what cannot be returned for health reasons.
  • Refunds separated from restocking, with inspection states for returned garments.
  • Fixed fields for fabric, country of origin and care instructions.
  • A written, dated returns policy that names who pays shipping in each case.

Before you ask a development team for any of this, read custom store or hosted platform and the cost guide, then the steps and legal requirements for launching a store in Egypt. After launch, a different job begins, covered in conversion rate optimisation for online stores.

If sizing and returns are what is holding your store back today, or you are about to build an online clothing store from scratch, describe your situation to the Snaabble team from the e-commerce services page. Within a day you get an outline of the work with an estimate of time and cost, at no charge and with no commitment.

Sources