Risk Free, Backed By Our 90-Day Money Back Guarantee
 - 
Read More
Lifetime Licenses Are Ending Soon, Get Yours Before They're Gone
 - 
Read More
Risk Free, Backed By Our 90-Day Money Back Guarantee
Pricing

You may have seen some references on our site to annual licensing or renewals.

All plugins currently come with a lifetime license, no matter what the site says.

We’re currently running tests before we make the switch to annual pricing. Check the Discounts tab to purchase our other plugins and get a lifetime license before they’re gone.

I Understand I Have a Lifetime License
Now is your last chance to buy a lifetime license before we switch to annual pricing. Existing licenses will be unaffected.
Read More
200,000+ Active Installs
1500+ 5 Star Reviews
Pricing
Now is your last chance to buy a lifetime license before we switch to annual pricing. Existing licenses will be unaffected.
Read More
200,000+ Active Installs
1500+ 5 Star Reviews
Pricing

How to Import WooCommerce Customers from Google Sheets

Looking to import WooCommerce customers from Google Sheets?

Most stores start with a spreadsheet because it is fast, free, and everyone on the team knows how to use it. The catch is that the spreadsheet does not talk to the rest of the store. Importing the data into WooCommerce closes that gap and turns the spreadsheet into the source your team maintains rather than the source the store depends on.

In this guide, we'll walk you through the process of importing WooCommerce customers from Google Sheets and also cover some advanced cases.

What You Need to Get Started with WooCommerce Customer Import

There are two ways to make a Google Sheet accessible to WooCommerce Import, and the choice affects which sheet WP All Import reads by default. The Share Link option (Anyone with the link) is the recommended and fastest path for most customer imports. Copy the link and paste it into WP All Import's Download a file > From URL field, and the import will use the first sheet of the spreadsheet by default.

share google sheets to anyone

The Publish to the web option (File > Share > Publish to the web > CSV format) produces a direct CSV URL for a specific sheet. You can use this when you have multiple tabs in the spreadsheet, and the data you need is not on the first sheet. CSV publishing is per tab, so each sheet gets its own stable URL.

publish to the web share option Google Sheets

Before starting the import, make sure you have the following plugins installed and active on your WooCommerce site:

  • WP All Import Pro (the base plugin)
  • WooCommerce Import Add-On (recognizes the WooCommerce customer post type)
  • User Import Add-On (registers the WordPress user fields the customer record depends on)

Verify all three show as Active on the Plugins page before continuing.

Step 1: Set Up Your Google Sheet with Customer Data

Open Google Sheets and create a new spreadsheet. The first sheet is the one that WP All Import will read by default, so keep your customer data there if you have multiple tabs.

For a WooCommerce customer import, set up columns for each field you want to populate. The minimum set is:

  • Email (required, must be unique across every row)
  • First Name
  • Last Name

The more complete set typically includes:

  • Username (only needed if your store uses usernames for login; otherwise leave blank)
  • Phone
  • Billing Address fields (Address 1, Address 2, City, State, Postcode, Country)
  • Shipping Address fields (same as billing, or use the Copy from billing option in the import to auto-fill)
  • Role (default is Customer)
  • Any custom fields from plugins (marketing consent, customer tags, membership tier, and so on)
customer data in Google Sheets

One row per customer works best. The first sheet of the spreadsheet is the only sheet WP All Import reads unless you publish additional tabs as CSV URLs separately.

Customer passwords are an exception. The Password field in WP All Import expects either a WordPress-format hash or nothing, so leave the column blank in the Sheet and send a password reset email after the import completes, or use the Generate Password option on the customer account once it is in WooCommerce.

Once the data looks right, click Share, then under General Access choose Anyone with the link, and copy the link. That is the URL you will paste into WP All Import in the next step.

Step 2: Create a New Customer Import Using the Google Sheets URL

Once you've installed the required plugins, go to your WordPress admin and navigate to All Import > New Import. Choose Download a file, then From URL, and paste the Google Sheets share link into the URL field.

download from a URL Google Sheets WP All Import

WP All Import fetches the sheet automatically and detects the columns. The first sheet is imported by default.

Once the fetch completes, the WP All Import dropdown becomes active. Select WooCommerce Customers as the import target.

On the same page, you'll see two buttons:

  • Create Filters: Apply filter rules before mapping, useful for importing only specific segments
  • Set Up Import: Skip filters and go straight to the drag-and-drop mapping screen

For the basic import, click Set Up Import. The Review Import File screen shows a quick sample of the data WP All Import detected, including the column count and the CSV delimiter. Confirm the columns match what you set up in the Sheet, then click Continue to Setup Import to move to the drag-and-drop mapping screen.

Step 3: Map the Google Sheet Columns to WooCommerce Customer Fields

The Drag & Drop screen is where the Google Sheet columns get matched to WooCommerce customer fields. The left side shows the WooCommerce customer fields, organized into four collapsed panels. The right side shows the columns from your Google Sheet.

Wp All Import drag and drop screen customer import

Start by expanding Customer Account Info and map the core account fields:

  • First Name ← [First Name]
  • Last Name ← [Last Name]
  • Login (required) ← [Email]
  • Email ← [Email]
  • Password ← leave blank (the field expects a WordPress-format hash or nothing)
drag and drop shopify customers data into WP All Import

The Login field uses the Email column as the username, which is the most natural unique identifier for a customer import.

Next, expand Billing & Shipping Info and map the billing columns from your Sheet:

  • First Name ← [Billing First Name] (or fall back to [First Name] if you did not split billing from account)
  • Last Name ← [Billing Last Name]
  • Company ← [Billing Company]
  • Address 1 ← [Billing Address 1]
  • Address 2 ← [Billing Address 2]
  • City ← [Billing City]
  • Postcode ← [Billing Postcode]
  • Country ← [Billing Country]
  • State/County ← [Billing State]
  • Email ← [Billing Email] (or use [Email] if you did not split billing email)
  • Phone ← [Billing Phone]

For the shipping side, click Copy from billing instead of mapping each shipping field by hand. That single radio button handles every shipping field using the billing values.

Mapped billing fields in WP All Import

Expand Custom Fields last for any non-standard columns in your Sheet. You can use this to:

  • Map Tags to a custom field if you have customer tags
  • Map Notes to a custom field for internal notes
  • Map any marketing consent column to a custom field
  • Map any custom plugin data (loyalty points, membership tier, and so on) to a custom field

You can also map standard fields from Other Customer Info if your Sheet contains data that fits them, such as a Display Name or Role column.

Click Preview at the bottom of the screen to see how the first imported customer will appear in the WordPress admin view before running the import. This is the easiest way to catch a swapped Email and Username mapping or a billing address that landed in the wrong column.

WP All Import preview

Step 4: Configure the Import Settings

The Import Settings screen controls how the import behaves during this run and any subsequent runs of the same import.

shopify customer import advanced settings

Configure the most important options:

  • Unique Identifier: Click Auto-detect to let WP All Import pick a sensible default, or manually set it to the Email column. Email is the most reliable choice because every email address in the Sheet should be unique, and email is what WordPress uses to log in.
  • Email Notifications: Leave Block email notifications during import enabled so the WordPress welcome email is not sent to every imported customer.
  • Create new vs match existing: For most Google Sheets customer imports, keep the default Create new WooCommerce customers for each record. If you are syncing into an existing WooCommerce store that already has overlapping customers, switch to Attempt to match to existing WooCommerce customers before creating new ones and use Email as the matching field.
  • Update behavior on subsequent runs: Enable Update existing WooCommerce customers with the data in this import file and Skip WooCommerce customers if their data in this import file has not changed. The skip option keeps recurring imports fast when nothing has changed in the Sheet.
  • Choose which data to update: This option lets you restrict the update to specific fields. For a Google Sheets sync, you might only want to update the Billing Address column when customers change addresses, leaving tags, custom fields, and other data untouched.

Scroll down to Configure Advanced Settings if your Sheet is large. The defaults work for most imports, but a useful tweak for any file over a few hundred customers is to enable Split file up into 1000 record chunks so each chunk finishes within your server's max execution time.

WP All Import advanced settings for big files

Give the import a friendly name, then click Continue. The Confirm & Run screen shows an Import Summary. Read through each line, then click Confirm & Run Import.

Step 5: Verify the Imported Customers

When the import finishes, navigate to Users > All Users in the WordPress admin. The new customer accounts appear in the list with the role Customer (or whatever role you mapped to) and the email addresses that came across from the Google Sheet.

customer imported as users in WooCommerce

To confirm the import landed correctly:

  • Open the first few customers in the list and verify the names, emails, billing addresses, and custom fields are correct
  • Confirm any marketing consent, tags, or custom plugin data came across correctly

If your newly imported customer accounts do not show up under WooCommerce > Customers, that is expected. WooCommerce populates its customer report only after a customer places an order, so any account imported directly will appear under Users > All Users until they have placed their first order on the new store.

If anything looks off, adjust the mapping or the import settings, then re-run the import.

Advanced Google Sheets Customer Import Workflows

The basic 5-step process handles a one-time customer import, but most teams that manage customers in Google Sheets need more. The workflows below cover the cases the basic process does not address.

Run Automatic Imports from Google Sheets to WooCommerce

The basic process runs the import once. For a Google Sheet that your team updates regularly, scheduling makes the import run automatically so the WooCommerce customer list stays current.

WP All Import gives you two scheduling options:

  • Automatic Scheduling: It's the easiest option. From the Scheduling Options panel, choose Automatic Scheduling, set the import to run weekly or monthly, pick the day and time, and WP All Import handles the rest. The service is a paid add-on and is the right choice for most stores that want a recurring sync without managing server infrastructure.
  • Manual Scheduling: It gives you full control through cron jobs. The Import Settings screen provides two URLs once enabled: a trigger URL that fires whenever you want the import to run, and a processing URL that runs every two minutes to keep long imports moving. Most managed WordPress hosts have a cron interface that schedules these URLs without the command line.
scheduling options customer

A critical detail for Google Sheets specifically is that schedules are asynchronous, not triggered by Sheet edits. When your team adds a row to the Sheet, the import does not run immediately. It runs on the next scheduled interval. So if your customer list changes hourly, hourly scheduling is the right cadence. If it changes weekly, weekly is fine.

The full scheduling workflow is explained in the Schedule WordPress Imports documentation.

Update Only Specific Customer Fields on Subsequent Runs

The default import behavior is to update every field on every run, which works for the first import but causes problems for ongoing syncs. If your Sheet only contains name and email, running the import repeatedly erases the billing addresses, custom fields, and tags that customers have added since the last sync.

The fix is the Choose which data to update option in the Import Settings screen. After enabling it, tick only the fields your Sheet actually controls and leave the rest unticked. Some common configurations for customer Sheets include:

  • Sheet only has email and name: tick Email, First Name, Last Name, leave everything else alone
  • Sheet is a segment list used for tagging: tick Email and the Tags custom field, leave everything else alone
  • Sheet tracks addresses updated by a logistics team: tick Email plus the billing address fields, leave everything else alone
choose which fields to bulk edit during import

The other fields stay exactly as they are in WooCommerce, which is what you want for an ongoing sync.

Delete Customers Removed from Google Sheets

The default re-run behavior leaves the customer list alone when rows are removed from the Sheet. The Remove or modify records not present in this import file option changes that, by syncing deletions from the Sheet to WooCommerce. If a customer row is removed from the Sheet, the corresponding customer account in WooCommerce is removed or modified on the next import run.

Remove or modify WooCommerce customers

This is the right option for customer lists your team maintains in Google Sheets as the source of truth, since it keeps the two sides aligned. Test it carefully in a sandbox before turning it on, because a misconfigured filter that excludes most rows can result in WooCommerce deleting most of its customer accounts.

The customer-specific use cases are:

  • Removing test accounts created during QA
  • Removing inactive customers who have explicitly opted out of all marketing
  • Syncing a curated list (active subscribers only) where removal from the Sheet means removal from WooCommerce

Transform Customer Data On the Fly Using PHP

Most Google Sheets come from real-world data sources, which means the data is not always clean. Names have extra spaces, email addresses are in mixed case, and full names are sometimes in one column instead of two. The Function Editor inside the Add Field dialog lets you write a PHP snippet to fix these issues on the fly during the import.

Some of the common customer-specific transformations include:

  • Normalize email addresses: strtolower(trim( {Email[1]} )) to handle mixed case and stray whitespace
  • Split full name into first and last: explode(' ', {Full Name[1]}) to populate First Name and Last Name from a single column
  • Generate a username from email: strstr( {Email[1]}, '@', true) to derive a username when the Sheet only has emails
  • Set default role: 'customer' if the Sheet has no Role column

The full PHP pattern library is covered in the custom code overview.

Final Thoughts - Import WooCommerce Customers from Google Sheets

The Google Sheets customer import is distinct from most WooCommerce data imports because the Sheet is a live, team-managed source rather than a static file handed off once. The same spreadsheet your team updates one day is the source of truth for the customer list the next, and the import needs to handle that ongoing reality rather than a one-time move.

The most important mindset shift is that the Sheet, not the WooCommerce database, becomes the source for the customer data it covers. Once the import is set up, anyone on the team can edit the Sheet without touching WordPress, and the next scheduled run picks up the changes. That is the workflow most teams actually want, even if they only realized they wanted it after the first sync.

WP All Import's role is to handle the messy reality of Google Sheets data. Sheets have inconsistent capitalization, missing rows, and tabs in the wrong place. The drag-and-drop interface, the unique identifier, the selective field updates, and the inline PHP transformations all exist to make that reality manageable. The customer import will keep working as long as the Sheet has the columns the import expects, which is the only contract between the two systems that matters.

Frequently Asked Questions - Import WooCommerce Customers from Google Sheets

How do I update only specific customer fields?

In the Import Settings screen, enable the Choose which data to update option. After that, tick only the fields your Google Sheet actually controls and leave the rest unticked. This protects WooCommerce-side data from being overwritten by incomplete Sheets, which is the most common issue with recurring imports.

How do I handle customer passwords when importing from Google Sheets?

Leave the Password column blank in the Sheet. WordPress does not accept a plaintext password from a Google Sheet and hash it during import, so the field expects a WordPress-format hash or nothing. Use the WooCommerce Generate Password option on the customer account, or send a password reset email from your email marketing platform after the import.

How do I match imported customers to existing WooCommerce customers?

Set the Unique Identifier to the Email column in the Import Settings screen. WP All Import uses that field to match incoming rows to existing customer records on subsequent runs. The matching logic prevents duplicates and updates only the fields you have chosen to update.

How do I import and export WooCommerce customers in general?

Looking to handle other types of WooCommerce customer imports and exports? See our full walkthrough at How to Export and Import WooCommerce Customers.

Joe Guilmette
VP of WP All Import. Joe's an expert in WordPress & WooCommerce Imports and Exports.

The best import export plugin for WordPress & WooCommerce.

Complete, granular control of your data with an easy to use drag & drop interface.
  • 90 Day Money Back Guarantee
  • Unlimited Installs
  • Lifetime Licence
  • Fast, World-Class Support
Get Started
90 Day Money Back Guarantee

Unlimited Installs.
World-Class Support. Money Back Guarantee.

Packages
Standalone
Import
Pro Package
$199
.00
/yr
Save $494, 71% Discount
  • Import Pro
Import Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
  • Export Pro
Export Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
$693 If Purchased Individually
Buy Now
90 Day Money Back Guarantee
Import + Export Pro Package
$299
.00
/yr
Save $1087, 78% Discount
  • Import Pro
Import Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
  • Export Pro
Export Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
$1386 If Purchased Individually
Buy Now
90 Day Money Back Guarantee
WooCommerce Import Package
$169
.00
/yr
Save $29, 15% Discount
  • Import Pro
Import Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
  • Export Pro
Export Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
$198 If Purchased Individually
Buy Now
90 Day Money Back Guarantee
Lifetime License
$1299
One-Time Payment
  • Import Pro + Export Pro
  • All Current Add-Ons
  • All Future Add-Ons
  • Lifetime Support
  • Lifetime Updates
  • No Renewal Fees
Buy Now
90 Day Money Back Guarantee
Import Standalone
$99
.00
/yr
  • Import Pro
Import Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
  • Export Pro
Export Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
Buy Now
90 Day Money Back Guarantee
Import + Export Standalone
$169
.00
/yr
  • Import Pro
Import Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
  • Export Pro
Export Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
Buy Now
90 Day Money Back Guarantee
Export Standalone
$99
.00
/yr
  • Import Pro
Import Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
  • Export Pro
Export Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
Buy Now
90 Day Money Back Guarantee
Packages
Standalone
Import
Pro Package
$16.58
per month, billed annually
Save $494/yr, 71% Discount
  • Import Pro
Import Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
  • Export Pro
Export Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
$693/yr If Purchased Individually
Buy Now
90 Day Money Back Guarantee
Import + Export Pro Package
$24.92
per month, billed annually
Save $1087/yr, 78% Discount
  • Import Pro
Import Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
  • Export Pro
Export Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
$1386/yr If Purchased Individually
Buy Now
90 Day Money Back Guarantee
WooCommerce Import Package
$14.08
per month, billed annually
Save $29/yr, 15% Discount
  • Import Pro
Import Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
  • Export Pro
Export Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
$198/yr If Purchased Individually
Buy Now
90 Day Money Back Guarantee
Lifetime License
$1399
One-Time Payment
  • Import Pro + Export Pro
  • All Current Add-Ons
  • All Future Add-Ons
  • Lifetime Support
  • Lifetime Updates
  • No Renewal Fees
Buy Now
90 Day Money Back Guarantee
Import Standalone
$8.25
per month, billed annually
  • Import Pro
Import Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
  • Export Pro
Export Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
Buy Now
90 Day Money Back Guarantee
Import + Export Standalone
$14.08
per month, billed annually
  • Import Pro
Import Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
  • Export Pro
Export Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
Buy Now
90 Day Money Back Guarantee
Export Standalone
$8.25
per month, billed annually
  • Import Pro
Import Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
  • Export Pro
Export Add-Ons
  • Woo
  • ACF
  • Meta Box
  • JetEngine
  • Gravity Forms
  • Users
Buy Now
90 Day Money Back Guarantee
linkcross