BulkSync
User manual

BulkSync guide

Everything you need to import your catalog and keep it up to date, from your first file to scheduled syncs.

Version 1.2 · October 2026

About the app languageBulkSync follows your Shopify admin language: English for every language except Italian. Screens, error messages, import reports and scheduled sync statuses are all in English.

What's new in version 1.2 New

  • App in English and Italian. BulkSync follows your Shopify admin language: Italian if your admin is in Italian, English for every other language. In English the report CSV uses commas as separators, as Excel in English expects.
  • Options added to existing products. If the file introduces a new option (e.g. "Color" on a product that only had "Size"), BulkSync creates it on the product, up to Shopify's limit of 3 options.
  • Option values updated. If a variant changes from "M" to "L" in the file, it is updated in Shopify too; values left without variants are removed.
  • Variants matched by options. If a variant's SKU has changed, BulkSync recognizes it by its option values (e.g. Size 42.5) and updates it instead of creating a duplicate.
  • Duplicate rows merged. Two identical rows for the same variant no longer make the product fail: the last one is used and the report flags it.
  • Always-fresh Google Sheets. Paste the regular link of a shared sheet: BulkSync downloads it as CSV with the current data.
  • Fair queue. Imports from different stores move forward together: a small import no longer waits for a large one to finish.
  • Faster preview. Previews of large files are prepared once and open instantly.
  • More flexible values. Yes/no fields also accept "yes", "1", "x", "sì"; quantities like "1.500" are read as 1500 units.
  • Plan warnings. The template editor flags features your plan doesn't include before you save.

1. What BulkSync does

BulkSync reads a product list from an Excel or CSV file, a web address (including a Google Sheet) or an FTP/SFTP server, then creates new products in Shopify and updates existing ones. It can do this once or on a schedule, and it can also import metaobjects.

Fields it can write

LevelFields
ProductTitle, description, vendor, type, category, tags, status (active or draft), SEO title and description, images, collections, sales channels, metafields
VariantSKU, barcode, image, price, compare-at price, inventory, weight and unit, cost, country of origin, HS code, taxable, continue selling when out of stock, requires shipping, metafields
OtherInventory per location, up to 3 options (e.g. Size, Color, Material)

2. Three key concepts

The mapping template

It tells BulkSync which column of your file matches which Shopify field. You create it once and reuse it for every file with the same layout, usually one per supplier.

One row is one variant

Rows with the same value in the grouping column (usually the Handle or model code) become a single product with several variants. Products with and without variants can live in the same file.

Sync memory

BulkSync remembers what each product looked like at the last import, and next time it only sends the products that changed. That's why the first import is the longest and later ones are much faster.

3. Preparing your file

Formats and rules

  • .xlsx or .csv files, up to 50 MB. The CSV separator (comma or semicolon) is detected automatically.
  • The first row holds the column names. In Excel files only the first sheet is read; empty rows are ignored.
  • You need at least four columns: title, SKU, price and the grouping column.
  • Product data (title, description, images, tags…) is read from the first row of each group.

How to write values

TypeAccepted examples
Yes / notrue, yes, 1, x, sì = yes; false, no, 0 = no
Prices19.90, 19,90, 1,234.56, 1.234,56, € 12
InventoryWhole numbers: 5, 1,500 or 1.500 (= 1500)
Tags, collections, channelsComma separated: summer, cotton
ImagesPublic URLs separated by commas, or several columns. They must not require a login.
Weight unitGRAMS, KILOGRAMS, OUNCES, POUNDS
Country of originTwo-letter ISO code: IT, US
Out-of-stock policyDENY or CONTINUE

When a field isn't mapped

  • Published: the product is published. To create drafts, map a column containing no.
  • Channels: it is published to the Online Store.
  • Inventory: stays at zero, so the product can't be bought.
  • Weight unit: your store's default unit.

Sample files

On the app's Mapping templates page you'll find three files to download: apparel (color and size options, three image columns), furniture (one option and several metafields) and supplier spare parts (no variants, Italian headers, semicolons, inventory in two warehouses).

Google Sheets

  1. In the sheet click Share and under "General access" choose Anyone with the link (viewer).
  2. Copy the link from the address bar (the one ending in /edit…) and paste it into BulkSync.
  3. If the file has several tabs, open the right tab before copying the link: BulkSync imports that one.
"Publish to the web" linksThey still work, but Google only refreshes that copy every few minutes, so right after an edit you might see "No changes". The regular link has no such delay.

4. Creating a template

On the Mapping templates page click + New template. You can't import without a template.

  1. Upload a sample file: it is only used to read the headers, nothing is imported.
  2. Name the template and, if you like, make it the default.
  3. Map the product fields. Those with a red asterisk are required.
  4. Choose the column that groups variants.
  5. Define up to 3 options, with a fixed name or one read from a column (handy for files exported from Shopify, which have Option1 Name).
  6. Map the variant fields.
  7. If you have several warehouses, map one column to each location using the exact location name in Shopify. Without this section inventory goes to your main location.
  8. Add metafields: missing definitions are created in Shopify.

For images you can add several columns with + Add column: they are uploaded in column order and duplicates are dropped. If a template feature isn't included in your plan, the editor warns you before saving.

5. Syncing products

  1. On the Sync products page choose the template (the default is preselected) and, if needed, the supplier.
  2. Upload a file from your computer, or paste a public URL or a Google Sheet link.
  3. Check the preview: number of products, first records, variants, SKUs, prices.
  4. Click Confirm import. The work continues in the background, so you can close the page.

If the preview looks wrong

  • Empty titles: the title column is mapped incorrectly.
  • Too many products / one variant per product: the grouping column is wrong or its values aren't identical.
  • Zero prices: wrong column or non-numeric values.

Statuses

StatusMeaning
RunningBulkSync is processing products; the bar shows progress.
CompletedEvery row succeeded.
Completed with errorsSome rows were not imported: download the report.
FailedThe import stopped.

The Force full sync checkbox sends every product even if unchanged: useful after manual edits in Shopify. While an import is running, the same store can't start another one.

6. The import report

The Download report button produces a CSV (it opens in Excel with correct accents) with one row per product: file row, handle, SKU, result, message and time.

ProblemWhat to do
Invalid priceCheck the cell contains a number.
Image not reachableOpen the URL in a private window: it must show the image without logging in.
Location not foundThe location name in the template must match Shopify exactly (Settings → Locations).
Too many optionsShopify allows at most 3 options per product.
Value not allowedWeight unit or out-of-stock policy with a value not listed in the table above.
Error from GoogleThe sheet isn't shared as "Anyone with the link", or the link points to another sheet.

Warnings don't block the product: collections created, category matched by similarity, duplicate variant rows in the file, images Shopify couldn't process. Fastest fix: correct the listed rows and import the same file again; the other rows are skipped.

7. Undoing an import

The Undo import button permanently deletes the products created by that import, after showing you how many. Products that already existed and were only updated don't go back to their previous values. If some deletions fail, you can run it again on the rest.

8. Suppliers and price list alignment

On the Suppliers page you create a supplier and pick it when you import their price list. Every product remembers which supplier it came from.

  • Products no longer in the price list: choose to do nothing, archive them, set their stock to 0 or delete them. Only that supplier's products are affected: products from other suppliers or created by hand are never touched.
  • Safety threshold: if the share of missing products exceeds the threshold (30% by default), alignment is blocked. This protects you from an incomplete or wrong file.
  • Supplier tag: when on, products get the tag fornitore:Name, handy for filtering in Shopify.
  • It works for variants too: a size dropped from the price list can be set to zero or deleted with the same rule.

Before you confirm, the preview tells you how many products would be archived, zeroed or deleted.

9. FTP and SFTP connections

Each connection points to one file on your supplier's server.

  • Fields: name, protocol, host, port, user, password, file path, template.
  • Protocols: SFTP (recommended, port 22), FTPS or FTP (port 21).
  1. Create the connection.
  2. Click Test connection: it checks credentials and path without importing.
  3. Click Import now, or use it in a scheduled sync.

If the test fails, try the path relative to the login folder (e.g. lists/products.csv). Passwords are encrypted and never shown again once saved.

10. Scheduled syncs

A schedule imports a file from a URL or FTP/SFTP on its own, using the chosen template. Frequencies: every 15 minutes, 30 minutes, hour, 4 hours, 12 hours; every day at 03:00 or 06:00; every Monday at 03:00. Times are server time (UTC).

  • Available frequencies depend on your plan: Starter daily, Pro up to hourly, Business up to every 15 minutes.
  • You can pause a schedule without deleting it. Each one shows the date and result of its last run.
  • If the previous run is still going, the new one is skipped and noted.
TipStart with a low frequency (nightly) and increase it only if the price list really changes often: unchanged products are skipped anyway.

11. Metaobjects

The metaobject definition must already exist in Shopify (Settings → Custom data → Metaobjects): BulkSync imports the entries.

  1. Pick the type from those defined in your store.
  2. Choose the source: file, URL or FTP.
  3. Map the identifier column (unique) and the field columns.
  4. Save and import. The mapping stays available for next time.

12. Maintenance

  • Reset sync memory: use it if you deleted products in Shopify and want them recreated. The next import reprocesses everything. It deletes nothing in Shopify.
  • Unlock stuck syncs: closes an import that got stuck. Importing the same file again resumes where it stopped, because finished products are skipped.
  • Clear history: removes finished imports from the list, keeping the most recent ones.
  • Automatic cleanup: every night, row details older than a month and imports finished more than six months ago are removed, always keeping the last twenty.

13. Pricing and limits

FeatureFreeStarterProBusiness
Price per month$0$19$49$129
Free trial—7 days14 days14 days
Managed products202,00015,000unlimited
Rows per import505,00025,00050,000
Templates13unlimitedunlimited
File importsyesyesyesyes
URL / Google Sheets imports—yesyesyes
Metafields—yesyesyes
FTP/SFTP connections——2unlimited
Scheduled syncs—1, daily5, up to hourlyunlimited, every 15 min
Metaobjects——yesyes
Inventory per location——yesyes
Suppliers, reports and undoyesyesyesyes

Billing goes through Shopify. For files over 50 MB or above your plan's rows, split the file into parts: products already imported are skipped. If you move to a lower plan your data stays, but you can't create more beyond the limits.

14. Frequently asked questions

I can't see the products in my store

They may be drafts ("Published" column set to no) or not published to the right channel. You'll still find them under Products in your admin.

Products show as sold out

The inventory column isn't mapped, or the location isn't set to fulfill online orders (Settings → Locations).

There are fewer products than rows

That's normal with variants. If there are too many products instead, the grouping column is wrong.

I changed the file but it says "No changes"

If you use a Google Sheet published to the web, Google refreshes that copy every few minutes: use the regular sheet link. Otherwise everything is already up to date; to overwrite anyway, use "Force full sync".

Can I add an option to products already imported?

Yes, since version 1.2: add the option to the template and import again. Shopify allows at most 3 options per product.

Will it create duplicate collections?

No: BulkSync reuses the collection with the same name, ignoring case and spaces.

My scheduled sync didn't run

Check it is active and read the result of the last run. For FTP use "Test connection"; also make sure the frequency is included in your plan.

Can I import password-protected files?

Not from a URL: the link must be public. For private files use an FTP/SFTP connection with credentials.

How do I contact support?

Write to pirinthankanagalingam@gmail.com and attach the import report CSV.