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
| Level | Fields |
|---|---|
| Product | Title, description, vendor, type, category, tags, status (active or draft), SEO title and description, images, collections, sales channels, metafields |
| Variant | SKU, 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 |
| Other | Inventory 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
.xlsxor.csvfiles, 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
| Type | Accepted examples |
|---|---|
| Yes / no | true, yes, 1, x, sì = yes; false, no, 0 = no |
| Prices | 19.90, 19,90, 1,234.56, 1.234,56, € 12 |
| Inventory | Whole numbers: 5, 1,500 or 1.500 (= 1500) |
| Tags, collections, channels | Comma separated: summer, cotton |
| Images | Public URLs separated by commas, or several columns. They must not require a login. |
| Weight unit | GRAMS, KILOGRAMS, OUNCES, POUNDS |
| Country of origin | Two-letter ISO code: IT, US |
| Out-of-stock policy | DENY 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
- In the sheet click Share and under "General access" choose Anyone with the link (viewer).
- Copy the link from the address bar (the one ending in
/edit…) and paste it into BulkSync. - If the file has several tabs, open the right tab before copying the link: BulkSync imports that one.
4. Creating a template
On the Mapping templates page click + New template. You can't import without a template.
- Upload a sample file: it is only used to read the headers, nothing is imported.
- Name the template and, if you like, make it the default.
- Map the product fields. Those with a red asterisk are required.
- Choose the column that groups variants.
- 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). - Map the variant fields.
- 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.
- 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
- On the Sync products page choose the template (the default is preselected) and, if needed, the supplier.
- Upload a file from your computer, or paste a public URL or a Google Sheet link.
- Check the preview: number of products, first records, variants, SKUs, prices.
- 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
| Status | Meaning |
|---|---|
| Running | BulkSync is processing products; the bar shows progress. |
| Completed | Every row succeeded. |
| Completed with errors | Some rows were not imported: download the report. |
| Failed | The 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.
| Problem | What to do |
|---|---|
| Invalid price | Check the cell contains a number. |
| Image not reachable | Open the URL in a private window: it must show the image without logging in. |
| Location not found | The location name in the template must match Shopify exactly (Settings → Locations). |
| Too many options | Shopify allows at most 3 options per product. |
| Value not allowed | Weight unit or out-of-stock policy with a value not listed in the table above. |
| Error from Google | The 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).
- Create the connection.
- Click Test connection: it checks credentials and path without importing.
- 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.
11. Metaobjects
The metaobject definition must already exist in Shopify (Settings → Custom data → Metaobjects): BulkSync imports the entries.
- Pick the type from those defined in your store.
- Choose the source: file, URL or FTP.
- Map the identifier column (unique) and the field columns.
- 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
| Feature | Free | Starter | Pro | Business |
|---|---|---|---|---|
| Price per month | $0 | $19 | $49 | $129 |
| Free trial | — | 7 days | 14 days | 14 days |
| Managed products | 20 | 2,000 | 15,000 | unlimited |
| Rows per import | 50 | 5,000 | 25,000 | 50,000 |
| Templates | 1 | 3 | unlimited | unlimited |
| File imports | yes | yes | yes | yes |
| URL / Google Sheets imports | — | yes | yes | yes |
| Metafields | — | yes | yes | yes |
| FTP/SFTP connections | — | — | 2 | unlimited |
| Scheduled syncs | — | 1, daily | 5, up to hourly | unlimited, every 15 min |
| Metaobjects | — | — | yes | yes |
| Inventory per location | — | — | yes | yes |
| Suppliers, reports and undo | yes | yes | yes | yes |
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.