sooqly

Product feed specification

Last updated 23 September 2026

A Sooqly feed is a CSV or JSON file with one row per product variant, at a URL we can fetch or uploaded in the portal, with at least a SKU, title, product URL, price and stock for every row.

This page is generated from the importer's own rules, so it matches what we actually read.

Formats

CSV

  • The first row holds the column names.
  • Columns are separated by commas. Semicolons, tabs and pipes are not supported.
  • Quote a value with double quotes when it contains a comma, a quote or a line break; write a quote inside a quoted value as two quotes.
  • Empty lines are skipped.

JSON

  • The file is one array of objects, one object per product: it starts with [.
  • A file that wraps the array in an object, such as {"products": [...]}, imports no rows. Send the array itself.
  • Nested values are read with dotted names: price.value reads {"price": {"value": …}}. Arrays of values are joined with " > ".
  • One JSON document per file. JSON Lines (one object per line) is not supported.

XML

The Feed tab does not import XML. We read Google Shopping RSS feeds (the g: namespace) and YML feeds (offer elements) for stores we set up together with you: write to us through the contact form if that is what you have.

How to deliver the file

  • A URL. We fetch it with a plain GET request. It must work without a login, cookie, token or IP allow-list, and answer with the file itself. There is no size limit.
  • An upload in the Feed tab, up to 25 MB. We import the uploaded file as it is at every fetch until you upload a new one, so a URL is better for prices that change.
  • Compression during transfer (HTTP gzip) is fine. A compressed file (.gz, .zip) is not unpacked.

Encoding and numbers

  • UTF-8. A byte order mark is fine. Other encodings turn Arabic and special characters into garbage.
  • Prices in AED with VAT included. Write numbers with Latin digits and a full stop for decimals: 1299.00 or 1,299.00 AED. A price with a decimal comma (1.299,00) is read wrongly.

Fields

FieldRequiredColumn names we recogniseWhat to put in it
skuYessku, id, product_id, productid, item_id, g:id, mpn_skuYour own unique id for the item. It keys the offer between runs: keep it stable. When two rows share a SKU, the first row wins and the others are counted as duplicates.
titleYestitle, name, product_name, g:title, item_titleThe product name as shown in your shop. Include brand, model and the variant (colour, storage) – matching reads it.
urlYesurl, link, product_url, g:link, landing_pageThe product page on your site. Shoppers land here through our redirect, so it must show the same price and stock.
priceYesprice, regular_price, list_price, g:price, price_aedThe price a shopper pays today, in AED, VAT included. A number with or without "AED", "Dhs" or "د.إ" and thousands separators.
inStockYesin_stock, instock, availability, stock, available, g:availability, quantityAvailability. One of the accepted values below, or a quantity (a whole number; above zero means in stock).
salePriceNosale_price, saleprice, offer_price, discounted_price, g:sale_priceOptional. When filled, it is used instead of price. We store one price per offer, so put the price that applies today here, not a future one.
shippingNoshipping, shipping_cost, delivery_fee, g:shippingOptional delivery cost in AED for one item. Totals shown to shoppers use the delivery rules on your store profile, per emirate.
gtinNogtin, ean, barcode, upc, g:gtin, ean13The barcode (EAN, UPC). Non-digits are removed; a value with 8 to 14 digits is kept, anything else is dropped without an error. The strongest signal for matching your offer to the right product.
brandNobrand, manufacturer, g:brandThe brand as printed on the product. Helps matching when there is no GTIN.
categoryNocategory, product_type, category_path, g:product_type, g:google_product_categoryYour category path, e.g. "TV > Neo QLED". We map it to our categories.
imageNoimage, image_url, image_link, g:image_link, pictureOne product image URL (http or https). We copy and resize it; we never hotlink.
deliveryDaysNodelivery_days, lead_time, delivery_timeHow many days until the item arrives: a number, "same day", "next day", or a range such as "2-4 days" (we keep the higher number).
pickupLocationsNopickup_locations, store_codes, g:store_code, branchesBranch codes where the item can be picked up, separated by "|", "," or ";" (at most 200). Codes must match the branch codes on your store profile. Leave the cell empty for online only.

The wizard recognises the column names in the third column, whatever their capitals, spaces or hyphens, and suggests a mapping that you confirm. Columns you do not map are ignored.

Prices

  • The price must be in AED. A price that names another currency is rejected: USD, EUR, GBP, SAR, KWD, QAR, BHD, OMR, EGP, INR, $, €, £.
  • "AED", "Dhs" and "د.إ" before or after the number are fine.
  • A price of zero, or one more than 60% below your previous price for the same item, is held back and hidden until we confirm it. Updating prices quickly explains how to announce a deep sale.

Stock

  • In stock: in stock, in_stock, instock, available, yes, true, 1, y, or a whole number above zero.
  • Out of stock: out of stock, out_of_stock, outofstock, unavailable, no, false, 0, n, preorder, backorder, sold out, discontinued, or zero.

Anything else in the stock column rejects the row.

Barcodes and model numbers

  • Put the GTIN (EAN or UPC) on every row that has one. It is the most reliable way to match your offer to the right product.
  • We keep a GTIN with 8 to 14 digits after removing everything that is not a digit. Other values are dropped without an error, and we do not check the check digit.
  • Model numbers (MPN) are not read from feeds set up in the Feed tab. Put the model number in the title.

Variants

Send one row per variant, each with its own SKU, and put the variant (colour, storage, size) in the title. There is no grouping field.

Images

  • One image URL per row, http or https.
  • Each side at least 200 pixels, file up to 20 MB.
  • No banners, logos or icons: an image whose address contains those words is skipped.
  • A product photo on a white background is preferred.
  • We choose one image per product from all stores that sell it, copy it and resize it. We never link to your server from our pages.

Pickup in store

Fill the pickup column with the branch codes where the item can be collected, separated by |, , or ;, up to 200 codes. The codes must match the branch codes on your store page. Leave the cell empty when the item is online only.

How often we fetch

Every 6 hours, at 04:00, 10:00, 16:00, 22:00 Dubai time.

Example files

Both files come from our importer's test data, and both import without errors.

CSV

sku,name,url,price,sale_price,currency,shipping,stock,gtin,brand,category,image,delivery_days
EMX-1,"Samsung 65"" Neo QLED QN90D",https://www.emaxme.com/p/qn90d-65,"6,299.00",5999,AED,0,in stock,8806095012345,Samsung,TV > Neo QLED,https://cdn.emaxme.com/qn90d.jpg,3-5 days
EMX-2,"Dyson V15 Detect, Yellow/Nickel",https://www.emaxme.com/p/v15,2999,,AED,15,yes,5025155050354,Dyson,"Home, Vacuums",https://cdn.emaxme.com/v15.jpg,4
EMX-3,"Multi
line title",https://www.emaxme.com/p/multi,199.5,,AED,,0,,Generic,Misc,,
Download sooqly-feed-example.csv

JSON

[
  {
    "sku": "EMX-1",
    "name": "Samsung 65\" Neo QLED QN90D",
    "url": "https://www.emaxme.com/p/qn90d-65",
    "price": "6,299.00",
    "sale_price": "5999",
    "currency": "AED",
    "shipping": "0",
    "stock": "in stock",
    "gtin": "8806095012345",
    "brand": "Samsung",
    "category": "TV > Neo QLED",
    "image": "https://cdn.emaxme.com/qn90d.jpg",
    "delivery_days": "3-5 days"
  },
  {
    "sku": "EMX-2",
    "name": "Dyson V15 Detect, Yellow/Nickel",
    "url": "https://www.emaxme.com/p/v15",
    "price": "2999",
    "sale_price": "",
    "currency": "AED",
    "shipping": "15",
    "stock": "yes",
    "gtin": "5025155050354",
    "brand": "Dyson",
    "category": "Home, Vacuums",
    "image": "https://cdn.emaxme.com/v15.jpg",
    "delivery_days": "4"
  },
  {
    "sku": "EMX-3",
    "name": "Multi\nline title",
    "url": "https://www.emaxme.com/p/multi",
    "price": "199.5",
    "sale_price": "",
    "currency": "AED",
    "shipping": "",
    "stock": "0",
    "gtin": "",
    "brand": "Generic",
    "category": "Misc",
    "image": "",
    "delivery_days": ""
  }
]
Download sooqly-feed-example.json

Related articles

Was this helpful?

Contact the Sooqly store team

Still stuck? Send us a message. It goes straight into our support queue and you get a ticket number.