UpChannels
  • 价格
  • 文档
联系我们登录免费试用
← 全部指南
系统迁移·阅读约9分钟

Move your stock off spreadsheets without losing serial numbers

Your stock comes across as a CSV. Your customer history does not. Clean the file before you import, run catalog and quantities as two passes, and count on day one.

UpChannels Team · 发布于 September 12, 2026

You have a workbook called Inventory. A tab per year, two columns only you understand, and a serial number column where half the cells end in a space because of how they were pasted in. It has worked for six years. Now you are moving to a real system, and the question is not whether the software can hold your stock — it can — but what happens to the six years.

What comes across, and what does not

Decide this first, because it changes how much work the move is.

  • Stock on hand: yes. One row per unit, or one row per product with a quantity.
  • Cost and price: yes, in the same rows.
  • Serial numbers: yes, one per row, and they become the identity of the unit from then on.
  • Open orders, deposits and scheduled deliveries: yes, by hand. Nobody imports these. There will be fewer than you fear; count them before you dread them.
  • Closed sales from previous years: no, and you do not need them. Keep the old workbook read-only on a shared drive. You will open it four times in the first year, then stop.
  • Customers: mostly no. There is no customer CSV importer in UpChannels today. Products and purchase orders both have one; customers do not. Plan around that rather than discovering it in week two.

The cleanup is the hard part, not the import

Importing a clean file takes minutes. Getting the file clean is the job, and almost every problem people blame on an import was already in the spreadsheet. Four passes over your own data, in this order:

  1. Duplicate SKUs. Sort by SKU and conditional-format the duplicates. You will find two kinds: a product typed twice with slightly different names, and the same SKU once per delivery because the sheet was really a receiving log. The first needs merging; the second needs turning into one product with several units. Do it here, where the fix is a delete key.
  2. Blank costs. Filter the cost column for blanks. A blank cost imports as zero, and a zero cost makes every sale of that item look like pure profit for as long as you own it. Put in the real number or your best honest estimate, and write "cost estimated" in the note column so you know which ones to fix when the invoice turns up.
  3. Units that left months ago. The row for the dryer sold in March that nobody deleted. The rule is physical: if you cannot walk over and put a hand on it, it does not go in the file. This is the biggest single source of a day-one count nobody trusts.
  4. Serials with typos and trailing spaces. Run TRIM down the column and paste the values back. Then sort it and read down: transposed digits sit next to their neighbours and jump out. Check length too — most manufacturers use a fixed serial length per model, so the one that is two characters short was typed off the carton, not the plate.

Two mechanical fixes before you export: unmerge every merged cell, which otherwise exports as one value and a pile of blanks, and strip 12 ea and 2 cases out of the quantity column.

The columns that matter

Fewer than you think. The catalog import will not write a product row without six of them — name, sku, model, category, brand and msrp — and names the missing one on the row. The stock import is looser: sku, name, category, costPrice and retailPrice are the ones it insists on, with model, brand and msrp recommended rather than required. Fill all eight anyway. Every filter and margin report you run later is built on the fields you were allowed to skip.

| Column | What it is for | |---|---| | sku | Your code, the key every other row joins to. It never has to match anyone else's. | | name | What you call it on the floor. | | model | The manufacturer's model number — what a customer reads off the plate when they call. | | brand, category | Every filter and report you run later is built on these two. | | msrp | List price. Sets what a discount looks like beside it. | | costPrice | Margin, and the value of stock you own. | | retailPrice | The ticket price. | | serialNumber | One unit, one serial. Serials and barcodes are unique inside your business. | | condition | NEW, USED or REFURBISHED, in capitals. | | quantity | Bulk rows only — things you count rather than track one by one. |

Leave out on day one: photos, long descriptions, dimensions, weights, vendor lead times. Those get added from the product screen on quiet afternoons. Do not hold up a migration for a photo.

Do it in two passes

One pass that does everything is one pass you cannot unwind.

  1. Catalog pass. Products only — no quantities, no serials. Wrong categories, doubled brands and a price column that drifted a decimal are all obvious here, and all cheap to fix.
  2. Stop and read it. Sort by cost, then by price. Anything at 0.00 or 99999 is a bad cell, not a bargain.
  3. Quantity pass. Now the units: one row per physical unit with its serial, or bulk rows with a quantity, against a location.

The order buys you recovery. A mistake in pass one is a product record you edit. A mistake in pass two is stock — a number a sale can already draw against, which has to be corrected rather than retyped.

Count on the day, not next month

An imported number is a claim. A counted number is a fact. Close the gap while you still remember what you did.

  1. Freeze receiving for the afternoon. Nothing comes in the back door.
  2. Import, one location at a time.
  3. Count that location the same day. Count on hand — units physically present. Do not try to count "available"; that is on hand minus what is promised to somebody, and the system works it out.
  4. Post the count. Each variance becomes a recorded adjustment rather than a silent overwrite, so in March you can still see the discrepancy came from the migration and not from a person.
  5. Write down the total variance. That is your honest starting accuracy.

Parallel for a fortnight, or cut over on a Sunday

Both are defensible. Pick one deliberately.

Cutting over means the spreadsheet goes read-only at close on Sunday and Monday runs on the new system. It is uncomfortable for about four days, and the numbers are true from the first hour because there is only one place to put them.

Running parallel means keeping both for two weeks. It feels safer. The honest cost is that it is double entry, and double entry decays — by day five somebody has posted to one and not the other, and you have two sets of numbers that disagree with no way to tell which is right. Parallel only works if one person owns the reconciliation and does it daily.

Under a few hundred units, cut over. Reserve parallel running for a real dependency: a lender, an accountant mid-close, a landlord's inventory clause.

What goes wrong

Importing the same file twice. Serialized rows are refused: the importer looks for that serial or barcode anywhere in your business and skips the row, naming the unit that already exists. Bulk rows have no serial, so a second upload of a bulk file adds the quantity again. Check your order list before re-running anything.

Everything lands at one location. Import per location, or the second store shows zero and the first shows double. Spotting it is easy; unwinding it is a day.

Zero costs everywhere. The symptom is margin reports that look fantastic. Sort cost ascending in week one.

The spreadsheet stays open "just in case." This is the real failure. Both files are authoritative, neither is right, and the argument about which to believe happens in front of a customer. Set a date, make the old file read-only on that date, and hold it.

A serial typed off the carton. Carton and plate disagree more often than you would expect, and when a warranty claim is refused in eighteen months, this is why. Photograph the plate instead.

How UpChannels handles this

There are two importers, matching the two passes above.

The product import creates catalog records only — no stock. Download a sample CSV, fill it, and every row is previewed before anything is written, marked Create, Merge or Skip against what you already have. SKU and barcode matching ignores case, so WD-4410 and wd-4410 are one product rather than quietly two.

The procurement import creates the stock. Two formats: trackable, one row per physical unit, which keeps the serial, condition and grade and forces the quantity to one; and bulk, one row per product with a quantity. It asks for a vendor, a vendor invoice number and a location first, so imported stock arrives as a receipt you can trace rather than a number that appeared — and re-using an invoice number is refused outright. It ships filled-in sample files for thirteen trades — a trackable one and a bulk one each — from appliance and furniture retail to HVAC, plumbing and landscaping, and offers you the pair matching your own, so the example rows already look like your stock. Both importers read CSV only: an .xlsx is rejected with a message rather than parsed into junk, so save as CSV first.

Afterwards, count sessions run per location and post variances as adjustments, and an integrity audit checks stock levels against the movement history, flagging drift, negatives and serial counts that do not match.

The limit, said plainly: there is no customer CSV importer. Most stores start with an empty customer list and let it fill as they ring up sales, because every order captures the customer. Moving thousands of customer records is a conversation to have before you switch, not a self-serve import — the customers page says the same in its own FAQ.

本文涉及的 UpChannels 功能

  • inventory
  • procurement

接着阅读

  • How to cycle count a two-person store without closing the floor

    Count a slice of the floor every week instead of everything once a year — which slice, how often, and what to do when the number is wrong.

  • How to grade, photograph and price a scratch-and-dent unit

    No industry-standard scale exists, so write your own — a three-grade definition built on where the damage is, five photos per unit, and pricing off today's street price.

  • Serialized or bulk: which of your stock needs a serial number

    Serialize a unit when it is individually different, individually warrantied or individually expensive. Count everything else in bulk. Three questions decide it.

全部指南

产品的更新比本页更快。 UpChannels 几乎每周都会发布更新,因此这里的描述可能落后于软件中已有的功能。两者不一致时,以正在运行的产品为准——如果您发现不一致之处,请告诉我们,我们会更正页面。

UpChannels

助力小企业蓬勃发展。借助专为增长打造的强大工具,释放您的潜力。

产品

  • POS 收银台
  • 销售管理
  • 订单管理
  • 客户门户
  • 商品管理
  • 库存管理
  • 采购管理
  • 价签
  • 扫码盘点
  • 服务工单与派工
  • 配送路线
  • 客户管理
  • 集成支付
  • 每日现金结账
  • 销售税
  • 财务与支出管理
  • 供应商账单与应付款
  • 银行对账
  • 经营速览与待办
  • 智能仪表盘
  • 综合报表
  • 每日日志
  • 流失销售与到店客户
  • 沟通中心
  • 短信营销活动
  • 评价管理
  • 广告洞察
  • 竞争对手监测
  • 会员积分计划
  • 合作伙伴网络
  • 员工管理与考勤打卡
  • 团队、权限与审计
  • 多地点管理

行业

销售商品

  • 家电店
  • 自行车店
  • 服装店
  • 电子产品店
  • 家具店
  • 园艺店
  • 礼品店
  • 珠宝店
  • 清仓店

销售服务

  • 家电维修
  • 清洁服务
  • 承包商服务
  • 电工服务
  • 家居维修服务
  • 暖通空调服务
  • 草坪养护
  • 管道服务
  • 树木养护

公司

  • 关于我们
  • 价格
  • 为效率而优化
  • 为增长而设计
  • 全部功能
  • 对比
  • 预约演示
  • 指南
  • 供 AI 助手使用(llms.txt)
  • 我们的团队
  • 联系我们
  • 短信订阅

法律信息

  • 隐私政策
  • 使用条款

Copyright © 2026 Micro Cube Innovation Inc.(DBA UpChannels)。保留所有权利。

10080 N Wolfe Rd, Cupertino, CA

(408) 409-4646 · team@upchannels.com

隐私条款