How to import WooCommerce data into Freshsales
Import your WooCommerce customers into Freshsales. This template maps name, email, phone, billing_company, and the full billing address to Freshsales's snake_case contact fields. Freshsales splits phone numbers into Work and Mobile; WooCommerce exports a single billing_phone column, so we map it to mobile_number since checkout phones are typically mobile.
Field-by-field mapping
This is the complete column mapping from WooCommerce to Freshsales. The left column is the header in your CSV export. The right column is the Freshsales field it should map to.
| first_name | First Namefirst_name | |
| last_name | Last Name*last_name | |
| Emailemail TransformLowercased and trimmed | ||
| billing_phone | Mobile Numbermobile_number Freshsales splits phone into Work and Mobile. WooCommerce checkout phones are typically mobile, so we map billing_phone to mobile_number by default. TransformStandardized to international format (+1, +44, etc.) | |
| billing_company | Company Namecompany_name | |
| billing_address_1 | Addressaddress | |
| billing_city | Citycity | |
| billing_state | Statestate | |
| billing_postcode | Zip Codezipcode | |
| billing_country | Countrycountry |
Required by Freshsales.
Columns we don't use
Your WooCommerce export includes 7 columns this template doesn't map. Each one below explains why, plus the workaround if you want the data in Freshsales.
- shipping_address_1, shipping_city, shipping_state, shipping_postcode, shipping_country
WooCommerce exports a full shipping address block alongside the billing block. Freshsales's address fields already hold the billing address from this template.
If you need it. If shipping is the more useful address, swap the mapping after upload. To keep both, add custom address fields on the Freshsales Contact (e.g. Shipping Street) and re-run this template.
- order_count
Freshsales contacts don't have a default order-count field.
If you need it. Add a custom number field on the Freshsales Contact called Order Count, then re-run this template to map it.
- total_spent
Freshsales contacts don't have a default lifetime-value field.
If you need it. Add a custom currency field on the Freshsales Contact called Total Spent, then re-run this template to map it.
Formatting and cleanup
WooCommerce exports rarely match the format Freshsales expects. Fix these before you import.
- 1.Lowercases and trims email addresses
- 2.Standardizes phone numbers to international format (+1, +44, etc.)
- 3.Renames WooCommerce columns to Freshsales's snake_case API names
- 4.Maps billing_phone to mobile_number (WooCommerce checkout phones are typically mobile)
- 5.Maps WooCommerce's billing address block to Freshsales's address, city, state, zipcode, country fields
Or skip the manual work
Operelio runs this cleanup and mapping for you. Upload your WooCommerce export and download a clean, import-ready file for Freshsales.
WooCommerce to Freshsales FAQ
How do I export customers from WooCommerce?
In your WordPress admin, go to WooCommerce > Customers, then click the Download button at the top-right of the page to export to CSV. You can also use WooCommerce > Reports > Customers for the legacy export view.
Why does billing_phone go to mobile_number?
Freshsales splits phone numbers into Work and Mobile. WooCommerce customers enter their phone at checkout, typically a mobile. Remap to work_number after upload if your customer phones are consistently office numbers.
Can I use shipping address instead of billing?
Yes. See 'Columns we don't use' below for the swap pattern. Most WooCommerce customers have a billing address since it's required at checkout, so we default to billing.
What about WooCommerce order data?
Order count and total spent appear in the export but don't have default Freshsales contact fields. See 'Columns we don't use' below.
Will this create duplicate contacts in Freshsales?
Freshsales uses email as the unique identifier on contacts. Customers with matching emails update the existing record. New emails create new contacts.