Back to Blog
Product UpdatesOctober 27, 2026

Introducing Bulk Imports

Your customers, products, prices and stock rarely start in Freshline. They come from a spreadsheet: a sales rep's customer list, last season's price sheet, a count from the warehouse. Bulk imports is a new importer for all of them. It reads the file the way it was written, fixes what it safely can, checks every row against your Freshline data, and shows you anything else before a single row is saved. And when you fix something once, it remembers.

What’s New

  • One importer for products, customers, orders, price rules and inventory, with the same four steps and the same history for each.
  • Bring the file you have. CSV, Excel or OpenDocument, or a link to a Google Sheet. Title rows are skipped, and columns are matched by name in any language Freshline speaks.
  • Every problem before anything is saved. Each row is checked against your customers, SKUs and price lists, and flagged rows wait in a spreadsheet you can edit.
  • Fixes for a whole group at once: match “NET 30” to 30 on every row, pick the date order, fill in blanks, find and replace.
  • A preview of every change, field by field, before you press Import.
  • It learns your spreadsheets. Fixes you remember and the way you mapped the columns are applied to the next file on their own.

How It Works

Every import goes through the same four steps, whatever it holds. Each step does as much as it can on its own, then hands you only what needs a decision.

Every import, four steps

  1. 1

    Upload

    You

    A CSV, Excel or OpenDocument file, or a link to a Google Sheet. Freshline finds the header row and skips any title rows above it.

  2. 2

    Map columns

    Freshline, then you

    Each column is matched to a Freshline field by name, in any language Freshline speaks, or by the mapping you used last time. You confirm or change each one.

  3. 3

    Review

    Freshline, then you

    Every row is checked against your Freshline data. Safe fixes are made for you; anything else is flagged in a spreadsheet, grouped by problem, with a fix for each group.

  4. 4

    Import

    Freshline

    A preview shows what will be created, updated, left alone and skipped. The import then runs in the background, one row at a time.

Nothing is saved until you press Import. Until then, you can change the mapping, fix rows, or walk away.

An import is saved as you go. If you close the tab during review, it's waiting under Imports when you come back, with your mapping and fixes in place.

Starting an Import

Imports live under Settings → Imports, and the import buttons on the products, customers, inventory, price list and order import pages lead there too. Choose New import and the kind of data in your file.

Import customers: a drop zone for a CSV, Excel or OpenDocument file, a field for a Google Sheets link, a list of what happens next and recent imports
Drop a file, or paste a Google Sheets link. Download template gives you a workbook with every column the import accepts.
  • Files: CSV, Excel (.xlsx and .xls) and OpenDocument (.ods), up to 20 MB, 50,000 rows and 10 sheets. Hidden and empty sheets are ignored, and a CSV's encoding and separator are worked out for you.
  • Google Sheets: share the sheet so anyone with the link can view it, then paste the link. When the import is done, Import again from the sheet picks up the latest version.
  • Templates: Download template gives you a workbook with a sheet for each part of the import, headed with every field it accepts. The exports you already use work too, since each import accepts the same columns as its export.

Matching Columns

Freshline reads the file in the background, finds the header row in the first ten rows, and matches each column to a field. Matched by says how it decided, and you can change any of them.

Map columns for a customer list with headers on row 4: each column with sample values, the Freshline field it maps to, and how it was matched
A customer list from another system. The title rows were skipped, and a French header matched its English field.
Matched byWhat it means
Same nameThe header is the field's name, ignoring case, accents, punctuation and spacing.
Translated nameThe header is the field's name in another Freshline language: English, French, Spanish, Japanese, Korean, Vietnamese or Chinese.
Similar nameA close spelling, such as “Customer net term” for Customer net terms.
Saved mappingYou've imported a file with these same columns before, so last time's choices were used.
ChosenYou picked the field yourself.
New columnNothing matched. Pick a field, or leave it as Don't import.

Each field can be used once. Columns you don't need can stay on Don't import, and a sheet that doesn't belong can be set to Don't import under This sheet holds.

Dates, Numbers and Blank Cells

Map columns for an orders CSV: PO left unimported, Customer # matched to Customer number, and Delivery date outlined in amber with Every date here could be read either way. Choose one.
An orders CSV. Every delivery date reads both ways, so Freshline asks.

A date column can be read as written, day first or month first. When every date in it could go either way, like 03/11/2026, the choice is outlined until you make it. Number columns use a decimal point or a decimal comma; Freshline guesses from the values, and you can change it.

Blank cells leave the current value unchanged unless you choose Clear the value, so a half-filled spreadsheet never wipes data by accident.

When the mapping looks right, Check rows moves on to review.

Reviewing and Fixing

Every row is checked before anything is written, against the file and against your Freshline data.

Four layers of checks, before anything is saved

  1. 1

    Each cell

    Is it a number, a date, an email, one of the allowed options? Is it too long or below zero?

    • “abc” isn't a number.
    • “13/13/2026” isn't a date we can read.
    • The cell holds the spreadsheet error #REF!.
  2. 2

    Each row, and the file

    Fields a new record needs, values that would be cleared, and the same record appearing twice.

    • Product name is needed to create a new record.
    • Row 4 has the same Product ID.
  3. 3

    Your Freshline data

    Customers, SKUs, price lists, sales reps and tax codes are looked up, one query per column.

    • Nothing matches “Restaurant”.
    • “Acme” matches more than one record.
  4. 4

    What the import will do

    Whether each row creates or updates a record, what it changes, and whether Freshline would accept it.

    • Matched to the existing record named “Acme Bistro”.
    • Freshline couldn't save this row: …
Edits and fixes are checked again as you make them.

The results open in a spreadsheet, on the rows that need attention. Problems are grouped on the right, so a mistake repeated on fifty rows is one card, not fifty.

The review step with numbered callouts
  1. 1Filters. Needs attention, All, Fixed for you, Will change, New, No change and Skipped, each with a count.
  2. 2Your row numbers. Rows keep their numbers from the file, so you can find them in your spreadsheet.
  3. 3Row status. How many problems a row has, or whether it's new, will change or has nothing to change.
  4. 4Fixed for you. Green cells were cleaned up. Hover one to see what the file had.
  5. 5Problems. Red cells can't import yet. Hover for the reason, or click to edit the cell.
  6. 6One card per problem. Every row with the same problem, the values involved, and a fix for all of them.
  7. 7Remember for future imports. Keep the fix as a rule, so the next file is fixed on its own.
  8. 8Fix it in Excel. Download the rows with issues, fix them in your spreadsheet, and upload the file again.
  9. 9Ready and not ready. How many rows will import. Skip the rest, or carry on to the preview.

How cells are marked in review

Error

NET 30

The row can't import until this is fixed or the row is skipped. Hover for the reason.

Warning

Acme Bistro

The row will import, but check it, such as a record matched by its name.

Fixed for you

CA

Freshline cleaned the value. Hover to see what the file had, here “Canada”.

Unchanged

unchanged

The cell was blank, so the current value stays.

Skipped

Demo Diner

You skipped the row. Bring skipped rows back at any time before importing.

Fixes That Apply to Every Row

A card for Customer net terms must be a whole number on 7 rows, matching NET 30 to 30, Net 15 to 15 and 15 days to 15, with Remember for future imports ticked
Three spellings of payment terms, fixed on seven rows.

Each card offers the fix that suits its problem. Apply fixes every row in the group, and the rows are checked again right away.

  • Match values for anything that isn't an option or doesn't match a record. When something close exists, it's filled in for you, like Restaurant → Restaurants.
  • Day first or Month first for dates that read both ways.
  • A value to fill blank required fields, on rows that create records.
  • Leave the current values or Clear them when a blank cell would erase something.
  • Skip the rows, and deal with them another time.

You can also click any cell and type, or use Find and replace on a column. Fixes made during an import are listed with an Undo, so trying one costs nothing.

What Freshline Fixes by Itself

Some fixes don't need you. They're made before review and counted under Fixed for you, so nothing changes without you being able to see it.

Fixed for you, before you look

  • Spacing␣Acme Bistro␣␣Acme Bistro
  • Numbers$5,000.005000.00
  • Decimal comma1 200,501200.50
  • Money12.49912.50
  • Dates46329Nov 3, 2026
  • Month names1er janvier 2027Jan 1, 2027
  • CountriesUnited StatesUS
  • Email[email protected][email protected]
  • Phone(416) 555-0101+14165550101
  • Unitslbspound
  • Yes and noouiYes
  • IDs01M5ZK…buyr_01M5ZK…
Only fixes that can't change what the file meant. A date like 03/04/2026, which reads two ways, is left for you to decide.
Fixed for you, 75 cells: phone format, country names to codes, option names, number format, email case and your import rules
What was fixed, by column, and why.

The Fixed for you card lists every fix by column: how many cells, and what kind of fix it was, including the ones your own import rules made.

The Fixed for you filter shows the rows it touched, and each cell still shows what the file had when you hover it.

The review grid after fixing: every row New, phone numbers in international format, net terms as numbers, and a skipped duplicate row struck through
After the fixes: 13 rows ready, one duplicate skipped.

Fixing It in Your Spreadsheet

Some things are easier to fix in Excel. Download rows with issues gives you a workbook of the rows that need attention, with their original columns, a Row column and an Issues column, and the problem cells highlighted. Fix them, then Upload fixed file: rows are matched by their row number and each changed cell is applied as an edit.

Previewing and Importing

Preview import shows what the import will do: how many records will be updated, created, left unchanged and skipped, and for updates, every field that changes with an example.

Preview: 6 will be updated, 2 will be created, 7 are unchanged, 0 will be skipped, with What changes listing credit limit, billing email, status and net terms
The second customer file: six updates, each field listed with an example.
  • Values cleared counts any value the import would erase, and turns red when there are some.
  • Tick Only import if every row is ready when the file has to go in whole, or import the rows that are ready and deal with the rest later.
  • Import runs in the background. You can leave the page; the import keeps going, and its status on the Imports page changes when it's done.
Import results: 2 created, 6 updated, 7 unchanged, 0 not imported, with Go to customers and Import another file
Done. Anything that couldn't be saved is listed with its reason, and can be downloaded.

A few things are true of every import:

  • Each row is saved on its own. A row that fails changes nothing, and the rows around it still import. Rows that belong together, like the lines of one order, are saved together or not at all.
  • Unchanged rows aren't touched, so re-importing last week's file doesn't rewrite records that haven't changed.
  • Imports run one at a time for each account, so two imports never write over each other.
  • Every change is recorded as part of the import, by the person who ran it. The customers, products and price rules it touched show it in their activity.
  • Files are deleted after 30 days. The import stays in your history with its counts.
The Imports page listing each file with its type, status, rows, rows imported, who started it and when
Imports: every file, what it changed and who brought it in.

Fix It Once

Most spreadsheets come back. The same customer list every month, the same price sheet every season, the same export from the same system. Bulk imports remembers two things so the second file is easier than the first.

Fix it once

The first file

  • “NET 30” isn't a whole number, on 4 rows.
  • You match NET 30 → 30 and tick Remember for future imports.
  • You pick the field for each column the file names its own way.
Import ruleSaved mapping

Every file after

  • Same columns: the saved mapping is used, so there's nothing to match.
  • NET 30 becomes 30 on its own, under Fixed for you.
  • You review only what's actually new.
Rules and saved mappings are kept for your whole account, per import type, and listed in settings where you can turn them off, reorder them or delete them.

Saved mappings. When you confirm a mapping, it's saved against the file's columns. The next file with the same columns, in any order, is mapped the same way.

Map columns with a Saved mapping banner: This file has the same columns as one you imported before, so we used that mapping
The next month's customer list: every column mapped from last time.

Import rules. Tick Remember for future imports on a fix and it becomes a rule. Rules run on every file of that type, after Freshline's own clean-up, so in the next file “NET 30” is 30 before you see it.

Reviewing the second customer file: nothing needs attention, and six rows will change
The second file: nothing to fix. Remembered rules handled NET 30 and the price list names.

Rules are listed under Settings → Imports → Import rules, one tab per import type. Turn one off, move it up or down, delete it, or add one there with Add rule. Saved mappings lists your mappings, and Forget removes one.

Import rules for customers: three rules remembered from an import, for net terms, price list and status, each with arrows, an On switch and a delete button
Three rules, remembered from the first customer import.

Quick Reference

What You Can Import

ImportSheetsNotes
ProductsProducts, Variants, CategoriesNew categories are created as needed. Products match by ID, then by exact name.
CustomersCustomers, Locations, Contacts, Price rulesCustomers match by ID, then customer number, then exact name. Sales reps match by email or name.
OrdersOrders, one row per lineLines are grouped into orders by external ID, or by customer, delivery date and order number. Orders are staged for review on the Orders import page.
Price rulesPrice rulesFor a price list or a customer. A row that names neither uses the price list its sheet is named after.
InventoryLotAdd lots, update stock and lots, or create new stock. For stores that track inventory.

Custom fields import alongside the built-in ones for products, variants, customers, locations, contacts and price rules, under the same headers as your exports. Linked records, like a customer's price list or an order line's SKU, are found by ID first, then by number, email, SKU or name. When nothing matches, the closest name is suggested if it's close enough, 90% alike to start.

Fixes

FixWhen it's offered
Match valuesA value isn't one of the options, or doesn't match a customer, SKU, price list or other record.
Day first or Month firstDates in a column could be read either way.
Fill rowsA field a new record needs is blank.
Leave the current values or Clear themBlank cells would erase existing values.
Find and replaceAny column, any time. Not case-sensitive.
Skip rowsAny problem. Skipped rows can be brought back until you import.

Import Rules

RuleWhat it does
Match valuesTurns one value into another in a column, like NET 30 → 30.
DatesReads dates that could go either way as day first or month first.
NumbersReads numbers with a decimal comma or a decimal point.
Default when blankFills blank cells in a column, for new records only or for all.
Clean upRemoves or replaces text, or changes the case of a column.
Blank cellsMakes a blank cell clear the value instead of leaving it.
MatchingHow close a name must be to be suggested, from 50% to 100%. 90% to start.

Import Status

StatusWhat it means
Reading fileFreshline is opening the file.
Map columnsWaiting for you to confirm the columns.
CheckingEvery row is being checked.
In reviewWaiting for you to fix, skip and preview.
ImportingRows are being saved. You can leave the page.
ImportedEvery row was imported or had nothing to change.
Imported with skipsSome rows were skipped or couldn't be saved. Download them from the import.
Couldn't read fileThe file was damaged, too big or not a spreadsheet.
CancelledStopped before anything was saved.
ExpiredOlder than 30 days. The file and its rows are gone; the import stays in your history.

Limits

LimitValue
File size20 MB
Rows50,000 across all sheets
Sheets10, not counting hidden or empty ones
FormatsCSV, XLSX, XLS, ODS, or a Google Sheets link
Kept for30 days, then the file and rows are deleted

Who Can Import What

Each import follows the permission of the page it replaces. Staff who can edit products can import products, staff who can bulk-update customers can import customers, and the same goes for order imports, price lists and inventory. Import rules and saved mappings need access to settings.

Getting the New Importer

We're turning the new importer on account by account, one import type at a time. Once it's on, the import pages you use today point to it.

The existing customer import page with a notice: Imports open in the new importer, with an Import a file button
The import pages you know lead to the new importer. Export and Export template stay where they are.

If you'd like it for your team, or you have a file that's given you trouble before, email us at [email protected]. We'd like to see it.