anyshop docs homeStatusOpen the dashboard

GuidesImport from CSV

Import your catalog
from a spreadsheet.

The import reads CSV files made from anyshop's templates, shows you what each row would do before it writes anything, and never duplicates on a second run. License keys you issued elsewhere keep working: buyers check them against anyshop's license API.

  • Settings, Import
  • CSV files, at most 4 MB together
  • Owners and admins of the store

The templates

Download them from Settings, Import. Each has a header row and example rows; keep the header, replace the examples with your own rows, and save the file as CSV (from Excel or Numbers, export as CSV first). Commas, semicolons and tabs all work as separators.

FileOne row isColumns
products.csvOne option of a product. Rows with the same product_id are one productproduct_id, name, type, option, price, currency, description, visible, delivery_instructions, devices_per_license, license_days, file_url, file_name, file_sha256
stock.csvOne unsold keyproduct_id, key
coupons.csvOne couponcode, percent_off or amount_off, products, usage_limit, starts_at, ends_at
customers.csvOne customeremail, name, marketing_consent, consent_date
licenses.csvOne license keyproduct_id, license_key, devices_limit, expires_at, customer_email, active
  • product_id is your own ID for the product. Keep it the same every time you import: it is how a second import finds the product it made the first time, and how stock, coupons and licenses name their product.
  • type is serial, license, file, service or dynamic. price is written like 79.00, and currency is an ISO code such as USD. A store sells in one currency, so rows priced in another are skipped.
  • File products name an https address in file_url, and the import copies the file from there.
  • Coupons apply to every product when products is empty, or to the product_ids you list, separated by |. Dates such as 2026-12-31 are read as UTC.
  • Marketing consent is yes only when the person agreed to marketing email, no when they did not, and empty when you do not know.
  • Licenses keep their device limit and expiry date; an empty devices_limit means no limit and an empty expires_at means never.

Run the import

  1. In anyshop, open Settings, Import, choose CSV, and add your files, up to 4 MB together. One file holds at most 50,000 rows; split larger stock files and import them in parts.
  2. Choose Preview the import. Every product, key, coupon, customer and license is listed as new, an update, unchanged, held for review or skipped, with the reason. Nothing is written yet.
  3. Choose Run. A store runs one import at a time; running the same files again later adds what is new and changes nothing twice.

Only a store's owners and admins can import.

What the import checks

  • Keys are encrypted on arrival. Repeats inside your files, and keys already in your store's stock, are skipped, so no key is added twice.
  • Listings are screened. A product that matches a prohibited term is imported held for review, off your storefront until a person at anyshop releases it, and the preview names the term.
  • A file that cannot be read is refused with the line number of the problem. Messages never repeat a key.