Supplier catalogue imports — Home Depot Pro Xtra and Lowe's for Pros
Turn a supplier order history or price list into Clavoz rates, so parsed scope arrives priced instead of needing a figure typed against every line.
Supplier catalogue imports
Your Rate Catalog is the price list the app quotes from: the parser matches
carrier scope against it, and the quote builder offers it as you type. Supplier
exports are the fastest way to fill it — nobody wants to type forty stud and drywall
prices.
Where imports live
Open Rate Catalog and use its supplier import; upload the file there. CSV, TSV and
Excel (.xlsx) are all accepted.
There is one import flow, not a choice of modes: rows that match an item you already
have update that item, and rows that match nothing become new items.
Getting a file out of each supplier
The Home Depot — Pro Xtra
Order history and price lists both export to Excel. Two things to know:
- The file opens with a title block above the real header row. The importer
expects that and skips it — do not hand-edit it away, and do not delete the first
rows "to clean it up". - Item numbers come under names like Internet #, Item # or Store SKU.
All three are recognised.
Lowe's for Pros
Same shape: an exported spreadsheet with a title block and its own column names. Save
it as .xlsx or .csv and upload it directly.
Anything else — a distributor price list, a quote from your rep, your own
spreadsheet — works if it has a header row naming the item, and ideally a unit price,
unit of measure and item number.
What the importer handles for you
Supplier exports are not tidy CSVs, and the importer is built around that:
| What arrives | What happens |
|---|---|
Prices like $1,234.56 |
Parsed as a number, currency symbol and all |
| Dates in several formats | US strings, ISO strings and Excel day numbers are all read |
| A supplier's own category ("Drywall & Paint") | Kept as your market's category, not forced onto the app's trade list |
| Slightly different item names | Matched on item number, name, or the words in common |
Name matching is deliberately tolerant — a reordered name like "1/2 in PEX pipe coil"
against "PEX pipe 1/2 in" still matches — but it is not magic. A name that shares too
little with the catalog entry is left as a new item rather than guessed at.
The one rule worth knowing
A purchase never overwrites your base rate downward.
A store's promotion or one cheap order is evidence about that purchase, not a new
price for everybody. So:
- the purchase is recorded as evidence for that market, and
- the base rate is only filled in when it was empty.
If you genuinely want to move a price, edit the catalog item — that is a decision, and
the importer is careful not to make it for you.
Using your own price list instead
If you price from a spreadsheet only you maintain, put it in the same shape: one row
per item, with columns for the name, unit, and price. Then upload it the same way.
Re-uploading a corrected file is safe; it converges the items rather than duplicating
them.
Job costs are a different ledger
Supplier files fill in rates — what you charge from. What a job actually cost
is recorded per quote, on the quote's expenses card, against the categories the app
tracks (materials, labour, and so on). Keeping the two apart is what makes
estimate-versus-actual mean anything: one is your price list, the other is what
happened on Tuesday.
If an import looks wrong
- Nothing matched — check the header row names the item and a price, and that the
file is not a PDF. Re-export as CSV or.xlsx. - A price did not move — that is the rule above: the base rate was already set.
Edit the item, or check the purchase was recorded for the right market. - Two items for one material — the names differed enough to be treated as
separate. Merge them by editing one item's name, or add the other's wording as a
synonym so the next import matches.
Found something out of date? The guides live in the repository's
docs/ directory — fixing the guide is part of fixing the feature.