The Import WP WooCommerce add-on includes a dedicated WooCommerce Customers template. It extends the core user importer with billing and shipping address fields, defaults new accounts to the customer role, and writes addresses through WC_Customer so they appear on the WooCommerce customer profile.
Use this template instead of the generic Users template when the records are store customers.
Requirements
- WordPress with WooCommerce installed and activated
- Import WP (free)
- Import WP WooCommerce add-on (free) — orders and customers
Import WP Pro is optional here (scheduling, remote files, custom fields). The customer template itself works with the free plugin.
Create a WooCommerce Customers importer
- Go to Import WP → Add Importer.
- Choose your file source (upload, URL, FTP, Google Sheets, and so on).
- On the template step, select WooCommerce Customers.
The first group is labelled Customer Fields (the same core user fields as the Users template). Billing Address and Shipping Address are added below. Hidden user fields can be toggled with Enable Fields.
Template sections
| Section | What it imports |
|---|---|
| Customer Fields | ID, username, email, first name, last name, website, role, password, nicename, display name, description |
| Billing Address | First name, last name, company, address 1/2, city, postcode, country, state, email, phone |
| Shipping Address | First name, last name, company, address 1/2, city, postcode, country, state, phone |
| Custom Fields | Extra user meta (Import WP Pro) |
Country must be a two-letter ISO code (for example GB or US), not the full country name.
If Role is not mapped, new customers are created with the WooCommerce customer role.
Minimum CSV example
| First Name | Last Name | Billing Address 1 | Billing City | Billing Postcode | Billing Country | |
|---|---|---|---|---|---|---|
[email protected] |
Alice | Smith | 10 High Street | London | SW1A 1AA | GB |
[email protected] |
Bob | Jones | 22 King Street | Manchester | M1 1AE | GB |
Suggested mapping:
| CSV column | Import WP field | Section |
|---|---|---|
| Customer Fields | ||
| First Name | First Name | Customer Fields |
| Last Name | Last Name | Customer Fields |
| Billing Address 1 | Address 1 | Billing Address |
| Billing City | City | Billing Address |
| Billing Postcode | Postcode | Billing Address |
| Billing Country | Country | Billing Address |
Map Email on every row. Username can be left unmapped if you generate it from email, or mapped if the export already has logins.
Unique identifiers
On Permissions, pick one unique identifier that is mapped and non-empty:
| Identifier | When to use |
|---|---|
Email (user_email) |
Default for migrations and re-imports |
Username (user_login) |
When email may change but login is stable |
Customer ID (ID) |
Updating existing WordPress users by ID only — IDs cannot be chosen on insert |
Use Email for a first migration. Changing the unique identifier after the first run can create duplicates. See Permissions.
Passwords and notification emails
Importer settings on this template:
| Setting | Default | Behaviour |
|---|---|---|
| Enable customer notification emails | Off | When on, WordPress and WooCommerce may send new-account, password, and email-change emails. When off, those WooCommerce customer emails are suppressed. |
| Generate user password | Off | Generates a password for the account (same option as the Users template). |
For a historical migration, leave notification emails off so thousands of customers are not emailed. For a live “create shop accounts from a list” import, turn notifications on and generate passwords if the file has none.
If you map Password, you are setting the password from the file. Prefer sending a reset email unless you have a defined password strategy.
Update existing customers
- Map Email (or Username / Customer ID).
- On Permissions, select that field as the unique identifier.
- Enable Update (and Create for new emails).
- Leave Password unmapped on re-imports unless you intend to reset it.
Unmapped billing/shipping fields are left alone. Mapped fields overwrite the WooCommerce address on that customer.
Recommended store-migration order
- Import products so SKUs exist — WooCommerce Products.
- Import customers with this template so emails exist.
- Import orders and link each order to a customer by email — Import WooCommerce Orders.
Do not mix a nightly stock feed with a one-off customer import. Unique keys stay separate: SKU for products, email for customers, order key for orders.
Filters
Customer address values pass through:
add_filter( 'iwp/woocommerce/customer_field', function ( $value, $field, $type ) {
// $type is billing or shipping; $field is e.g. country, postcode
return $value;
}, 10, 3 );
add_filter( 'iwp/woocommerce/customer_field/billing_country', function ( $value ) {
return strtoupper( $value );
} );
More snippets: WooCommerce Filters and Code Snippets.
Related
- Import WooCommerce Orders
- WordPress User Importer Template (generic users, no WooCommerce addresses)
- See the WooCommerce importer
- Orders and customers
Updated 2026-09-16