What you'll build
A batch of shipping options created in one import step from a spreadsheet, saving you from clicking through the creation form dozens of times. After import, each option exists in Shipit and you can open them individually to add rules, translations, pickup settings, and pricing tiers.
Before you start
- You have a list of the shipping options you want to create, including their names, carrier service codes, and base prices.
- You have the
delivery_checkout_configuration_idfor the configuration these options belong to. Find this in the URL when you open the configuration in Shipit (e.g.,/configurations/abc-123→ the ID isabc-123). - You have a spreadsheet application (Excel, Google Sheets, Numbers) to prepare the CSV.
Step 1 — Export the template CSV
Navigate to Delivery Checkout → Shipping Options and click Import from CSV. In the import dialog, click Download Template. This gives you a CSV with the correct column headers pre-filled and one example row.
Open the template in your spreadsheet application. Do not rename or reorder the columns.
Step 2 — Fill in the CSV
The importable columns are:
| Column | Required | Description |
|---|---|---|
name | Yes | Customer-facing name shown in checkout |
description | No | Short description shown below the name |
service_code | Yes | Unique machine-readable slug (e.g., home-delivery-standard) |
base_price | Yes | Numeric price, no currency symbol (e.g., 4.90) |
currency | Yes | ISO 4217 code (e.g., EUR, SEK, NOK) |
enabled | No | true or false — whether the method appears as an option in checkout |
hidden | No | true or false — whether the method is hidden by default (requires an enable_method rule to surface it) |
delivery_checkout_configuration_id | Yes | The ID of the parent configuration |
Fill in one row per shipping option. For 20+ options, you can often start from an export of your carrier's rate card and transform it into this format using spreadsheet formulas.
Warning: Importing with
enabled = truemakes options live immediately. Any customer who reaches checkout after the import is completed will see these new options. Useenabled = falseif you want to review and configure each option before going live.
Step 3 — Validate your CSV before importing
Before uploading, check for these common mistakes:
- Duplicate service codes — each
service_codemust be unique within a configuration. If two rows share a code, only the first will import successfully. - Missing required fields — any row with an empty
name,service_code,base_price,currency, ordelivery_checkout_configuration_idwill fail. - Wrong configuration ID — all rows must reference a valid, existing configuration ID. A typo here will cause every row in the file to fail.
- Incorrect currency format — use three-letter ISO codes (
EUR, not€orEuro).
Step 4 — Import the CSV
In the Import from CSV dialog, click Choose File and select your prepared CSV. Click Import.
Shipit processes the file row by row. Import results appear immediately:
| Result | Meaning |
|---|---|
| ✓ Created | The row was imported and the option was created |
| ✗ Error: duplicate service_code | A service code already exists in this configuration |
| ✗ Error: invalid currency | The currency code is not a recognised ISO 4217 code |
| ✗ Error: configuration not found | The configuration ID does not exist or you do not have access |
Successful rows are created immediately even if other rows in the same file fail. You do not need to fix errors before the successful rows take effect.
Step 5 — Configure options individually after import
CSV import creates the skeleton of each option. The following settings cannot be imported via CSV and must be configured manually on each option:
- Rules — pricing rules, show/hide conditions, and discount actions
- Translations — locale-specific names and descriptions
- Pickup settings — pickup point types, listing mode, and map configuration
- Pricing tiers — weight-based price bands
- Carrier add-ons — extra services like insurance or doorbell instructions
- Parcel presets — box size and weight defaults
Open each imported option from the shipping options list and complete its configuration.
Tip: If many of your options share the same rule setup (for example, all standard options hide outside your delivery region), configure one option completely first, then use the Duplicate function to clone it and adjust only the name, service code, and price for each variant. This is faster than configuring rules manually on every imported option.
How it works
The CSV import endpoint validates each row independently against the same rules as the manual creation form. Valid rows are written to the database in the order they appear in the file. Because rows are processed independently, a malformed row does not block valid rows — you get partial success rather than an all-or-nothing import.
Testing it
- Import a small test file (3–5 rows) with
enabled = falsebefore importing your full list. - Verify the options appear in the shipping options list with the correct names and prices.
- Open one imported option and confirm the configuration ID is correct and the base price matches your spreadsheet.
- Once satisfied, import the full file or update the test options to
enabled = truevia bulk edit.
