Create dozens or hundreds of shipments at once by uploading a simple CSV file. No API integration required — just a spreadsheet.
Perfect for businesses that manage orders in spreadsheets, ERPs, or any system that can export CSV.
Export your orders into a CSV with recipient name, address, city, province, and postal code. Add optional fields like phone, quantity, or notes.
Upload the file from your Weels dashboard. We’ll validate every row, show you zone pricing, and flag any errors before you confirm.
Confirm and all shipments are created instantly. Download labels, print them, and your packages are ready for pickup.
Import up to 100 shipments in a single CSV file. Need more? Upload multiple files back-to-back.
Every row is validated before creating shipments. Missing fields, bad postal codes, or out-of-zone addresses are flagged with clear error messages.
Each postal code is matched to the correct delivery zone and priced automatically. Volume discounts are applied if you qualify.
After import, download all labels at once as a combined PDF. Print and attach — packages are pickup-ready.
Add age verification (18+/19+/21+), signature required, or identity verification per row or as a default on your account.
Preview pricing and validate your file before committing. Fix any errors, then import when you’re ready.
Your CSV needs a header row. Column names are case-insensitive.
| Column | Required | Description |
|---|---|---|
destination_fname |
Yes | Recipient first name |
destination_lname |
No | Recipient last name |
destination_address1 |
Yes | Street address |
destination_address2 |
No | Unit, suite, or apartment number |
destination_city |
Yes | City (e.g. Toronto, Mississauga) |
destination_province |
No | Province code (defaults to ON) |
destination_postalcode |
Yes | Canadian postal code (e.g. M5V 1J2) |
destination_phone |
No | Recipient phone for SMS tracking notifications |
destination_email |
No | Recipient email for tracking updates |
qty |
No | Number of identical packages (defaults to 1) |
weight |
Yes | Package weight in lbs |
width |
Yes | Package width in inches |
length |
Yes | Package length in inches |
height |
Yes | Package height in inches |
reference |
No | Internal reference or order number |
order_num |
No | Customer-facing order number (printed on label) |
age_verification |
No | 0, 18, 19, or 21 — minimum age for ID check |
signature_required |
No | 1 to require signature on delivery |
identity_verification |
No | 1 to require government ID verification at delivery |
fragile |
No | 1 to flag the shipment for fragile handling |
delivery_date |
No | Requested delivery date (YYYY-MM-DD) |
The base columns (qty, weight, width, length, height) define your first package type. To add additional distinct package sizes in the same shipment, use prefixed columns with incrementing numbers:
| Package | Columns |
|---|---|
| Package 1 | qty, weight, width, length, height |
| Package 2 | pkg2_qty, pkg2_weight, pkg2_width, pkg2_length, pkg2_height |
| Package 3 | pkg3_qty, pkg3_weight, pkg3_width, pkg3_length, pkg3_height |
| Package n | pkgn_qty, pkgn_weight, pkgn_width, pkgn_length, pkgn_height |
No limit on package types. Extra package columns are optional — only include them if a shipment has multiple distinct package sizes. Use qty to specify multiples of the same size.
Five example rows covering common scenarios. Download the template and fill in your own data.
| # | destination_fname | destination_lname | destination_address1 | destination_address2 | destination_city | destination_postalcode | destination_phone | qty | weight | width | length | height | reference | age_verification | signature_required | identity_verification | fragile | notes | pkg2_qty | pkg2_weight | pkg2_width | pkg2_length | pkg2_height |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Jane | Doe | 250 Yonge St | Suite 300 | Toronto | M5B 2L7 | 647-555-0200 | 1 | 2.5 | 12 | 10 | 8 | ORD-1001 | 0 | 0 | 0 | 0 | Standard delivery | |||||
| 2 | Bob | Wilson | 55 Commerce Valley Dr | Markham | L3T 7N9 | 905-555-0300 | 2 | 5.0 | 16 | 14 | 12 | ORD-1002 | 19 | 1 | 0 | 0 | Age-restricted product | ||||||
| 3 | Alice | Chen | 789 Dundas St W | Suite 200 | Mississauga | L5B 1T6 | 416-555-0400 | 1 | 1.5 | 10 | 13 | 3 | ORD-1003 | 0 | 1 | 1 | 0 | Legal docs — verify ID | |||||
| 4 | Sarah | Park | 30 Eglinton Ave W | Unit 12 | North York | M2N 5S3 | 647-555-0500 | 1 | 3.0 | 14 | 14 | 10 | ORD-1004 | 0 | 0 | 0 | 1 | Fragile — glass items | |||||
| 5 | David | Lee | 1200 Bay St | Toronto | M5R 2A5 | 416-555-0600 | 1 | 8.0 | 20 | 18 | 14 | ORD-1005 | 0 | 0 | 0 | 1 | Multi-package order | 1 | 2.0 | 10 | 10 | 6 |
Scrolls horizontally — all columns are included in the download.
Download Template CSVGo to weels.ca/account and select your organization.
Click Create Shipment from the sidebar or top navigation.
Click the Import CSV tab at the top of the shipment form. Drag and drop your file or click to browse.
Check the preview table for errors. Fix any flagged rows, then click Import All to generate labels.
Download all labels as a combined PDF. Print, attach, and your packages are ready for same-day pickup.
Standard per-package pricing applies. Upload as many files as you need. No monthly fees, no minimums.
Standard CSV (comma-separated values) with a header row. Column names are case-insensitive. At minimum you need: destination_fname, destination_address1, destination_city, and destination_postalcode.
Up to 100 rows per CSV file. Need more? Just upload multiple files back-to-back. There’s no daily limit.
Yes. The import tool shows a full preview with zone matching, pricing, and validation errors. You can fix issues before confirming the import.
Rows with errors (missing address, out-of-zone postal code, etc.) are flagged and skipped. Valid rows are imported normally. You can fix and re-upload the failed rows.
Yes. Add an age_verification column with values 0, 18, 19, or 21. You can also set a default on your account that applies to all shipments.
Yes. The base columns (weight, width, length, height) define your first package. To add more, use prefixed columns like pkg2_weight, pkg2_width, pkg3_weight, etc. — no limit on package types. Use qty / pkg2_qty to send multiples of the same size.
Absolutely. In Google Sheets, go to File → Download → CSV. In Excel, use Save As → CSV (Comma delimited). Just make sure the header row matches our column names.