Import Customers via CSV
How to import customers into your online store using a CSV file: which columns Shoporama reads, how duplicates are handled via email, and what to watch out for along the way.
Are you switching to Shoporama from another platform, or do you just need to correct the phone numbers for 800 customers all at once? With the customer import feature, you can upload a CSV file that both creates new customers and updates the ones you already have—without having to open each profile one by one.
CSV is a common spreadsheet format that Excel, Numbers, and Google Sheets can all save. Here, you’ll find the exact column names, the file rules, what happens to existing customers, and the pitfalls you need to be aware of.
How to Find the Customer Import Feature
- Click Customers in the menu in your Shoporama admin panel.
- Select Registered Customers.
- Scroll down below the customer list and click the “Import Customers” button.
The page is called “Upload Customer Database.” On the customer list, the “Download All Customers ” button is right next to the import button, and it’s worth its weight in gold: it gives you a file in the format the import function expects. If you already have customers, the fastest way is therefore to download the export, edit it, and send it back. You don’t need to delete anything first. The `points_balance` column, which contains customers’ point balances, isn’t read by the import tool, so no one will receive their points twice.

Here’s what the file should look like
- Semicolon as the separator. Columns are separated by ;, not by commas or tabs. This is the standard in Danish Excel, so it usually works automatically.
- The first row contains the column names. If you omit the header row, your first customer’s data will be interpreted as column names and will not be created.
- Use the English field names. The column with email addresses must be named “email,” not “E-mail” or “Mail.” Upper- and lowercase letters, however, do not matter.
- The order is flexible. You decide which columns the file contains and in what order. Columns that Shoporama doesn’t recognize are skipped.
- Save as UTF-8. If you select “CSV UTF-8,” you can be sure that æ, ø, and å will be included correctly.
- A semicolon within a value requires quotation marks. If a field itself contains a semicolon, the entire value must be enclosed in double quotation marks.
- One file at a time. The import process reads only one file per upload, so split a large dataset into multiple runs.
An example with the most commonly used columns:
email;name;company;vat_number;own_id;address;zipcode;city;phone;country_name anna@eksempel.dk;Anna Hansen;;;K-1042;Vestergade 12;5000;Odense C;12345678;Denmark bo@eksempel.dk;Bo Jensen;Bo Jensen ApS;DK12345678;K-1043;Havnegade 3;8000;Aarhus C;87654321;Denmark
The file doesn’t need to be that wide at all. If you only need to correct phone numbers, here’s a fully valid import:
email;phone anna@eksempel.dk;12345678 bo@eksempel.dk;87654321
The columns Shoporama reads
Customer and billing address
- "email " is the only required column. Rows without an email address are skipped.
- "name " becomes " Name," and " phone " becomes " Phone."
- "company " becomes " Company Name," and " vat_number " becomes " CVR Number."
- "own_id " becomes " Your ID." This is where you enter your own customer number from accounting or your old system.
- "address," " zipcode," and "city " become "Address," " Zip Code," and " City."
- "country_name" is the country’s name, written exactly as it appears in your store.
Shipping Address
If the customer has a delivery address different from the billing address, fill in `shipping_name`, `shipping_address`, `shipping_zipcode`, `shipping_city`, and `shipping_country_name`.
Points and Your Own Profile Fields
- "points " awards points to the customer. This column only works if your loyalty program is enabled. If it is not active, the column is ignored without an error message.
- If you’ve created custom fields under Customers> Profile Fields, they can also be imported. The column must have the same name as the field. Uppercase and lowercase letters don’t matter here—so if the field is named “Birthday,” both “Birthday” and “birthday” will work.
The import cannot handle the following
Passwords cannot be imported. The same applies to creation date, last login, EAN number, customer group, and association with a business account. New customers will have the import date as their creation date, and their last login will not be filled in until they log in to your store. These details are added to the customer profile or via the relevant features, such as customer groups and B2B prices. The import also does not subscribe anyone to the newsletter. You do that under Newsletter, Recipients, which has its own import function.
Step by Step
- Get a fresh export using “Download All Customers.” This gives you both a template and a copy of the data as it appeared before the import.
- Set up the file in the spreadsheet with English field names in the header row and one email address per row.
- Save as a CSV file using UTF-8 encoding and semicolons as delimiters.
- Test with a small file first. Select three to five customers, run the import, and check if the result is as expected.
- Go to Customers, Registered Customers, Import Customers, and select the file under Upload CSV File.
- Decide whether to “Send a welcome email when the customer is created.” Only check this box if you want customers to receive a message immediately.
- Click Import, wait for the confirmation, and look up a few customers to check the results. Do not close the tab during the process.
What happens to customers who already exist?
The email address is the key. If the address already exists in your store, the existing customer will be updated. This means no duplicate entries are created, and order history, points, and other data are carried over. If the address isn’t found, the customer is created as a new entry. Customers not listed in the file remain unaffected, and the import never deletes anything.
Important detail: empty fields do not overwrite anything. If you include the “phone” column but leave it blank for a customer, the customer retains their current number. Therefore, you can safely create a file containing only the columns you want to change. The downside is that you cannot clear a field via the import. If an address needs to be deleted, this must be done in the customer profile.
The summary: how to read the numbers
- The green box shows how many users were imported. This number includes both newly created and updated customers.
- A yellow box indicates rows that were skipped because they were missing an email address. Empty lines at the bottom of the file are included in this count, so a small number isn’t necessarily a problem.
- The yellow box also shows rows with an invalid email address. This check applies only to new customers, so an existing customer with an incorrect address can still be updated.
If you receive a notification about invalid email addresses, correct the addresses and run the file again. It’s safe to run the same file twice, with one exception: points.
Five things to watch out for
1. Country names must be written exactly
If the name in ` country_name ` isn’t among the store’s countries, a new country will be created with the exact name contained in the file. If you enter “DK,” “danmark,” and “Danmark” in the same file, you’ll end up with three countries, and a new country has no shipping rates. Check your country names under Shipping, Countries, and copy them down. Read more about countries and currencies.
2. Points are added each time
The “points” column creates a new, approved points entry with the note “Assigned via import.” It appends rather than replaces, so if you run the same file twice, the customer will receive the points twice. If you continue working in the file from “Download All Customers,” leave the “points_balance” column as is. It shows the customer’s current balance, is intentionally named something else, and is not read by the import. If you rename it to “points,” the entire balance will be added again. If the damage has already been done, click the customer’s number in the “Active Points ” column on the customer list, select the entries, and use “Delete Selected.”
3. Only new customers receive a password
Passwords cannot be imported. Newly created customers are assigned a random password, and existing customers keep the one they have, so their login will continue to work no matter how many times you run a file through the system. If a new customer wants to log in, they must either have the welcome email with their password or use the store’s “forgot password” feature to have a link sent to them. The same applies to customers who were created during an order without selecting a password.
4. The welcome email is sent only to new customers
If you check the box for “Send welcome email when customer is created,” newly created customers will receive an email with their password, while existing customers will not receive anything. The emails are sent the moment you click “Import,” so be sure to check first that the email looks correct. This is the user-welcome-mail.html file from your theme.
5. Large files may run out of time
The import runs while you wait, and very large files may hit the server’s limit for upload size or processing time. If it gets stuck, split the file into chunks of, say, 1,000 to 2,000 rows. Since the email is the key, you can safely run multiple files in a row.
How you can use this in practice
- Migrating from another platform. Transfer your entire database. Customers keep their email addresses as their login credentials, so you can build on the customer relationships you already have instead of starting from scratch.
- Bulk updates. New phone numbers, corrected addresses, or business registration numbers for business customers. A two-column file can handle in one minute what would otherwise take an afternoon of clicking.
- Customer numbers from accounting. Enter your own numbers in ` own_id` so your online store and accounting system speak the same language during reconciliation.
- Points for loyal customers. If you’re launching a loyalty program, you can give your loyal customers a starting balance so the program feels active from day one.
Should customers’ old orders be included as well?
The customer import only includes the customers, not their orders. You can import your previous orders separately as historical orders using Claude or via the REST API. Import the customers first and the orders afterward. This way, each order is linked to the customer with the same email address, and customers can see their past orders when they log in. The orders are included in the customer’s order history and customer statistics, and no emails are sent.
For those with a technical background
- The file is read with a semicolon as the field separator and double quotation marks as text delimiters. The byte order mark is automatically removed, and the content is converted to UTF-8 based on the detected character set. Detection is not infallible, so it’s best to save the file as UTF-8 yourself.
- Column names are converted to lowercase, and both names and values are trimmed of spaces. Unknown columns are ignored, which is why the export file’s `id`, `created`, `last_login`, and `points_balance ` simply pass through when you reimport your own export. This also means that the customer’s “Last Login” cannot be set via the import.
- Only non-empty values are written to the customer record. This explains why empty cells do not overwrite existing data.
- New customers trigger the same `customer_created` webhook as a regular creation in the store, so be prepared for fluctuations in your integrations during large imports. See the article on webhooks in Shoporama.
Frequently Asked Questions
I use Excel. How do I save the file correctly?
Select “Save As” and one of the CSV UTF-8 formats. The menu option is often labeled “comma-separated,” but Danish Excel will still use a semicolon because the semicolon is the list separator in the Danish settings. Therefore, you typically don’t need to do anything else. If you want to be absolutely sure, open the file in a text editor afterward and check a line containing “æ,” “ø,” or “å.”
Can I just update a single field for several thousand customers?
Yes, and that’s the best way to do it. Create a file with the “email” column and the single column you want to change. Everything else in the customer profile remains unchanged, because empty and omitted fields do not overwrite anything.
What happens to customers who aren’t in the file?
Nothing. The import creates and updates records, but it never deletes them. If you need to remove customers, select them from the customer list and use “Delete Selected.”
Can I transfer our customer numbers from the accounting system?
Yes. Use the `own_id` column, and the number will be entered into the “Own ID” field on the customer profile. This makes it easier to reconcile the online store with the accounting system when a customer needs to be located across systems.
I got an “invalid email” error on some rows. What should I do?
Those rows weren’t created; the rest were. Correct the addresses in the spreadsheet and run the file again. You can easily re-upload the entire file; customers who have already been created will simply be updated. If you added the “points” column yourself, remove it first—otherwise, customers will receive points twice. The “points_balance” column from the export can remain.
Can I assign customers to a customer group via the import?
No, “customer group” is not one of the fields the import reads. You assign the group to each individual customer profile under “Customer Group,” or you can work with company accounts if you’re running a B2B business. The same applies to the EAN number and linking to a company account.
Will my imported customers be subscribed to the newsletter?
No. The customer import does not affect the newsletter. If you want to add people to the list, you do so under “Newsletter,” “Recipients,” where there is a separate import option. Remember that you must have a legal basis for sending marketing materials to them.
Can I create orders for the imported customers afterward?
Yes. From the customer list, you can create an order directly for a customer, so their name and address are pre-filled. This is handy for phone orders and B2B. See the guide on creating orders directly from the customer overview.
If you’re having trouble with the file or have questions about a specific dataset, please email support@shoporama.dk with a few sample rows, and we’ll take a look.
Related articles
Loyalty programme
Complete guide to the Shoporama loyalty program - setting up the points system, earning, redemption and customer communication.
Kundegrupper og B2B-priser: giv forskellige kunder forskellige priser
Countries and Currency: Delivery Countries, Sales Tax, and Shipping
Set up delivery countries under Delivery → Countries with VAT rates, VAT zones, shipping options, and free shipping, and see how they relate to...
Webhooks in Shoporama
Complete guide to webhooks in Shoporama. Get automatically notified on a URL when something happens in your online store. List of all events,...
Create orders directly from the customer overview
Create orders directly from your customer overview with customer details automatically populated.
Import products via CSV
Complete guide to importing products with a CSV file in Shoporama - including format, fields and tips.
Export customers who have purchased a specific product
Guide to export a list of customers who have purchased a specific product and send them an email.
Related features
Import features - move your shop or update thousands of products
Import via CSV or migrate from Shopify, DanDomain and Magento 2. Products, categories, prices, stock and extra fields.
Customer database
Complete customer database with profiles, order history, segmentation, customer groups and exports. Identify your best customers and communicate in...
DanDomain alternative
Are you thinking about switching from DanDomain? Find out what the import process includes, what will happen to your URLs and Google rankings, and...
Move your online store to Shoporama and keep your URLs
How to migrate your online store from DanDomain, Shopify, WooCommerce, or CSV using 301 redirects so your Google rankings can keep up. A...