Skip to content

Import customers, branches, products and prices

Load many records from a spreadsheet saved as CSV. Slflo checks the whole file first and imports it only if every row is right. Who: administrator · Where in the cycle: Set up.

  • Add and change customers (CUSTOMER_MANAGE) for the Customers and Branches tabs; Manage products and prices (CATALOG_MANAGE) for Products and Prices. Placing branches on routes also needs Manage people (USER_MANAGE).
  • Import in this order: customers before their branches; units before products; products and price lists before prices.
  • A route named in the file must already exist (a draft is enough) — create it on Routes first. Import can’t create routes.
  • Save the file as CSV UTF-8, comma-separated, with a header row.

The screen lists each tab’s columns with what to write. Column names ignore case, spaces and underscores.

Tab Required Optional
Customers name code, namear, creditlimit, currency, pricelist, latitude, longitude, geofenceradius, address, blocked, channel, paymentterms, deliverydays, contact, phone, opendays, area, route, visitdays, visitevery, effectivefrom
Branches customer, code, name as customers, for that branch
Products name, baseuom code, namear, category
Prices pricelist, product, uom, unitprice, validfrom validto

A blank cell keeps what is already stored. A code that exists updates that record, so a file with codes can be imported twice without changing anything; a row without a code always makes a new record, so importing it again makes duplicates. A new customer with a blank creditlimit is cash only (0); write no limit for no limit. Days are written Sat Wed (or in Arabic); visitevery is week, 2 weeks, weeks 1 3 or month.

  1. Open Setup › Import and pick the tab.
  2. Choose the CSV file.
  3. Press Check file. Nothing is saved yet.
  4. Read the result. Ready to import shows the counts (Rows, Would create, Would update, Unchanged), Routes this file touches and What each row does. Not imported lists each problem with its spreadsheet line.
  5. Fix the problem rows in your spreadsheet, save, choose the file again and Check file again.
  6. When the check is clean, press Import. It says “Done. Devices pick this up on their next sync.”
The Import page on the Customers tab: the required name column, the optional columns, an empty file picker, and the Columns table explaining what to write in each.
  1. What to import
Open the full-size picture (new tab)
Import after checking customers-with-mistakes.csv: Not imported, 4 rows, 1 would be created, 3 problems and nothing written; line 2 names a price list WHOLESALE2 that doesn't exist, line 3 has 5000 EGP as the credit limit, and line 5 repeats line 4's code.
  1. Line
  2. Problem
  3. Detail
Open the full-size picture (new tab)

Nile Fresh first saves route CAIRO-03 as a draft, then imports its four customers in one file:

name,creditlimit,pricelist,channel,geofenceradius,route,visitdays,visitevery
Nile Market,5000,RETAIL,Retail,150,CAIRO-03,Sat Wed,week
Delta Kiosk,300,RETAIL,Retail,150,CAIRO-03,Sat Wed,week
Zamalek Corner,3000,RETAIL,Retail,150,CAIRO-03,Sat Wed,week
Garden City Grocer,2000,RETAIL,Retail,150,CAIRO-03,Sat Wed,week

Check file → Ready to import: Rows 4, Would create 4; Routes this file touches: CAIRO-03, Added 4. Import → CUST-00001 to CUST-00004 are created, each with its Main branch on CAIRO-03. (Add latitude and longitude columns to give them pins.)

  • Records are created or updated together, in one go; branches placed on routes get day plans from their date.
  • Reps get the changes at their next sync.
  • One audit row per imported file (“Imported a file”).

One bad row stops the whole file: nothing is imported until every row checks clean.

What you seeWhat to do
There's no route with that code. Create the route under Routes first, then import again.UNKNOWN_ROUTECreate the route on Customers › Routes first (a draft is enough), then check again.
There's no customer with that code. Import the customers first, then their branches.UNKNOWN_CUSTOMERImport the customers file before the branches.
This line repeats the code of an earlier line in the file. Keep one of them.DUPLICATE_IN_FILETwo lines have the same code. Keep one.
A number can't be read. Write digits only, for example 5000.INVALID_NUMBERWrite digits only in number columns.
The visit days can't be read. Write days like Sat Tue, and how often as week, 2 weeks, month or weeks 1 3.IMPORT_VISIT_PATTERNWrite the days like Sat Wed and how often as week, 2 weeks, weeks 1 3 or month.
There's no price list with that code. Check the code under Catalogue, Price lists.UNKNOWN_PRICE_LISTUse the price list's code, as on Catalogue › Price lists.
Putting branches on routes needs the user-management permission. Ask an administrator, or leave the route columns empty.IMPORT_ROUTE_NOT_ALLOWEDPlacing branches on routes needs Manage people. Leave the route columns blank, or ask an administrator.
A required column is empty on this line. Fill it in and check the file again.MISSINGA required column is empty on that line.
This file is split by semicolons…Save it again as CSV UTF-8, comma delimited.
That file could not be readSave it as UTF-8 text. Very large files (around 1 MB and more) may be refused: split them.
A removed customer came backA code that belonged to a removed customer brings it back, with its history. Use a new code for a new shop.

Catalogue-only users (without Add and change customers) don’t see Import in the menu; they open it at /admin/import.