Latest posts Visit blog
In plain words: what is this page about?

Many companies have bought from you for years. Their data is in your business software. A new shop for companies needs these customers. They do not have to sign up again. You create the accounts for them. Then they only choose a password. We show how this works. We also show how to measure the result.

Anyone launching a B2B shop rarely starts with an empty customer base. The business customers have been in the ERP for years, with a debtor number, terms and delivery addresses – they just do not exist in the shop yet. The web channel has long been a channel for business customers: 33.80% of German wholesale enterprises with 10 or more employees sold to other businesses or public bodies via websites, apps or marketplaces in 2024 (Eurostat). This guide shows how to bring existing customers into the B2B shop without making them register a second time, and how to measure activation stage by stage. How registration works for unknown companies, including verification of business status, is covered in our article on B2B onboarding with business verification. This one is about the customers you already know.

Why existing customers should not register again

The obvious route is a circular: “Our new shop is live, please register.” For companies you have supplied for years, that is a detour with consequences. The data the customer types into the form has long been in the ERP, just spelled differently. Duplicates appear that someone later has to match to the right debtor number by hand. And anyone who registers in Shopware through the form of a dedicated customer group does not land there right away: the customer is not assigned to the customer group directly, an approval is required (Shopware documentation). For new customers, this check makes sense. For a regular customer with a running framework agreement, it is a waiting period that tells you nothing new.

The European survey on ICT usage in enterprises shows how widely wholesalers already use their own web channel. 32.75% of German wholesale enterprises with 10 or more employees sold via their own website or app in 2024 (Eurostat). In the same year, 80.78% of the web sales turnover of wholesale enterprises with 10 or more employees came from businesses and public bodies (Eurostat). The wholesale web channel is therefore mainly a channel for business and public-sector buyers, and the seller already knows many of them from existing sales.

Take over instead of registering again

In a takeover, the seller creates the customer account, with the debtor number, customer group and addresses from the ERP. The customer only has to do one thing: set a password. If customer prices are linked to the ERP, the customer sees their own terms after the first login, as we describe in our article on customer prices from the ERP.

Which debtors belong in the shop

Not every debtor is a candidate for a shop account. Over the years, an ERP collects one-time customers, blocked accounts, debtors for credit notes and internal clearing accounts. Importing everything loads dead records into the shop and later sends invitations to companies that no longer exist. Selection therefore starts with a list that sales and accounting go through together, and with rules that can be expressed as filters in the ERP.

  • Active customers: debtors with sales within a period that sales and accounting define together.
  • Blocks and dunning levels: accounts with a delivery block or an open dunning notice get no shop account for now, or one in which only prepayment is available.
  • EDI customers: anyone who already orders straight into the ERP via EDI tends to use the shop for spare parts, samples or small quantities.
  • Collective debtors: accounts for walk-in and cash sales are a bookkeeping aid and do not belong in the shop.
  • Branches and groups: several debtors with the same company but their own delivery address and their own billing unit need a decision on whether they get a shared shop account or separate ones.

The EDI point is not a corner case. 18.07% of German wholesale enterprises with 10 or more employees had EDI-type sales in 2024 (Eurostat), and these sales accounted for 14.64% of the total turnover of all wholesale enterprises of that size (Eurostat). Customers who order like this have already automated their process. An invitation to the shop is an additional offer for them, not a replacement, and it should be worded accordingly.

Data quality: what the customer base needs before the import

An ERP is built for invoices, not for logins. The e-mail address shows this. The debtor record often holds a shared accounting address for sending invoices, and for purchasing a person who left long ago. Shopware logs customers in by their e-mail address, and the source code states that real customer accounts should only occur once per address (Shopware source code). An address that appears on three debtors therefore leads to a decision, not to three accounts.

  • One contact person per debtor with a personal e-mail address for orders, separate from the address used for invoices.
  • Resolve duplicates: the same company under two debtor numbers, the same e-mail address on several accounts.
  • Billing and delivery addresses in separate fields, consistent country values, postal codes without extra text.
  • VAT IDs in a consistent format with the country prefix and without spaces.
  • Treat customer numbers as text so that leading zeros are preserved.
  • Map each debtor’s price group and payment terms to the customer groups and payment methods of the shop.

The point about leading zeros sounds trivial and can cost an entire import run. The Shopware documentation notes that some spreadsheet programs change separators or leading zeros in CSV files (Shopware documentation). Debtor number 0012045 then becomes 12045, and the sync with the ERP no longer finds the customer. The import file should therefore be produced directly from the ERP or from a script.

Data protection also argues for a lean takeover. Personal data must be adequate, relevant and limited to what is necessary for the purpose (GDPR Art. 5(1)(c)). For a shop account, that means the name and business e-mail address of the person ordering, addresses and terms. Dates of birth, private phone numbers or notes from sales stay in the ERP. The data must also be accurate and, where necessary, kept up to date (GDPR Art. 5(1)(d)). That is another reason to review the contact persons before the import.

From debtor to customer account: the field mapping

For the import, Shopware sets a minimum requirement: a customer profile can only be saved if it contains seven required fields, namely id, defaultBillingAddressId, defaultShippingAddressId, customerNumber, firstName, lastName and email (Shopware documentation). The id may stay empty for new records because the system assigns it (Shopware documentation). Everything else is a question of mapping: which ERP field ends up in which shop field, and where is a translation needed because the ERP knows a price group and the shop a customer group?

Data in the ERPField in the shopNote
Debtor numberCustomer number (customerNumber)carry over as text, keep leading zeros
Company nameCompany on the customer and on the billing addressspelled as on the invoice
Account kindAccount type businessbusiness account instead of private account
VAT IDVAT ID on the customer and on the billing addressconsistent, with country prefix
Price groupCustomer groupcontrols net or gross display, among other things
Payment termsTag or customer group plus availability rule of the payment methodinvoice payment only for approved accounts
Contact personFirst name, last name, e-mail addressone person per login
Billing and delivery addressDefault billing and default shipping addressfurther delivery addresses into the address book
Delivery blockStatus active or inactiveleave out blocked debtors or create them inactive

Two rows of the table deserve a second look. In Shopware, the customer group determines, among other things, whether a customer sees net or gross prices (Shopware documentation). Payment terms have no fixed counterpart on the customer in the shop. Instead, the availability rule of a payment method determines when it is available (Shopware documentation). A tag “invoice payment approved” on the customer account and a matching rule reproduce the payment terms from the ERP. How invoice payment and credit limits can be controlled is shown in our article on purchase on account in the B2B shop. We describe the connection of the systems themselves on our pages about SAP Business One, Microsoft Dynamics and JTL-Wawi.

debtor-mapping.yaml
# Mapping ERP debtor to shop customer (example, custom import script)
source: erp.debtors
selection:
  status: active
  delivery_block: no
  collective_debtor: no
fields:
  customerNumber: debtor_no           # as text, leading zeros stay
  accountType: business
  company: company_name
  vatIds: [vat_id]
  firstName: contact.first_name
  lastName: contact.last_name
  email: contact.purchasing_mail
  groupId: price_group -> customer_group
  tags: payment_terms -> tag
  password: null                      # set by the customer
before_run:
  mail_delivery: off
  test_run: yes

One login per contact person or a company account

In B2B, it is rare for only one person to order. Purchasing, the workshop and branch management use the same terms, and the invoice still goes to head office. In standard Shopware, a customer account is one login with one e-mail address and one customer number. There are two clean ways to handle several people per company, and which one fits depends on the size and organization of the customer.

One account per person

Every person who orders gets their own account with their own e-mail address. In all accounts, a custom field points to the same company debtor in the ERP, which is also where the orders go. That is enough for customers with few buyers and can be created directly with the import.

Company account with users

A company account bundles addresses and terms, with users underneath who have their own permissions, for example only filling the cart or also placing orders. We build this structure as a custom extension in our development work, tailored to the roles your customers have.

The decision is made before the import, because anyone who later switches from individual accounts to company accounts has to move orders and addresses. Sellers with separate shops for consumers and business customers can also bind customers to a sales channel (Shopware documentation). The same e-mail address can then belong to separate accounts in both shops.

The import: test run, mail delivery and repeatability

For a one-off takeover, the Import/Export module in the administration is enough in many cases (Shopware documentation). Tags and custom fields are not part of the default customer profile and need a profile of their own. For an ongoing sync, the takeover belongs in the ERP integration so that new debtors get an account without manual work. Large volumes then run through the shop’s API instead of CSV files. How a bulk import from the ERP with the Shopware Sync API is set up is described by our ERP integration agency in its article on bulk import via the Sync API. Both routes share the same precautions.

Turn off mail delivery before the import

The Shopware documentation advises deactivating e-mail delivery under Settings > System > Mailer before importing customers from version 6.4.9.0 onward, so that no registration e-mail goes to every single customer after the import (Shopware documentation). Such a mail to the entire customer base, unannounced and with a standard text, is an unfortunate start for a new shop.

  1. Test environment: the documentation recommends checking an import in the staging system first and creating a database backup before importing into the live system (Shopware documentation). Restrict access and mail delivery of the copy as described in our article on Shopware staging without real customer data.
  2. Test run: it performs the same steps as the import but writes no data to the database tables (Shopware documentation).
  3. Evaluate the error file: Shopware collects faulty records in a separate CSV file with a column for the reason (Shopware documentation). Corrections are made at the source in the ERP.
  4. Import in waves: first a small group of well-known customers, then the rest.
  5. Reconcile: count accounts and customer numbers against the selection in the ERP, then switch mail delivery back on.

One property of the module shapes the planning: the import can only add information, not remove it (Shopware documentation). A wrongly assigned customer group is fixed by a second run. A wrongly created account or a surplus address does not disappear that way. For corrections to many accounts at once, such as customer group, active status or tags, the administration also offers bulk edit for customers (Shopware source code). How it works for orders is shown in our article on bulk edit after sales events.

Passwords: why migrated accounts start without one

An ERP knows no shop passwords. The obvious shortcut would be to generate a password for each account and send it by e-mail. We advise against that: the password then sits in the mailbox, often a shared mailbox of the purchasing department, and it frequently stays unchanged afterwards. An account without a password is the better choice. Shopware does not allow such an account to log in as long as no password is set (Shopware source code). How shops protect themselves against abusive login attempts is covered in our article on defending against account takeover.

The situation is different when customers come from an old shop that stored password hashes. For this case, the customer profile has the fields legacyPassword for a foreign, encrypted password and legacyEncoder for the matching method (Shopware documentation). In its core, Shopware ships methods for MD5 and SHA-256 (Shopware source code). When a customer logs in with the old password, Shopware checks it with the named method, then stores it in its own format and clears both legacy fields (Shopware source code). Other methods need a custom encoder. Which other pitfalls a shop switch involves is shown in our guide to migrating from WooCommerce to Shopware.

Double opt-in for migrated accounts

If an imported account is marked as a double opt-in registration and the confirmation date is missing, Shopware refuses the login and sends the confirmation mail again (Shopware source code). Migrated accounts are therefore created without this flag. If a customer sets their password via the password recovery link, Shopware fills in a missing confirmation date by itself (Shopware source code).

The invitation: set a password instead of sending one

In Shopware, the way to the first password leads through password recovery. It has a property that is easily overlooked in an invitation: the link in it is valid for 2 hours from its creation (Shopware source code). For a customer who clicks “forgot password” and opens the mail right away, that fits. An invitation to the customer base, on the other hand, is often opened the next morning, after a vacation or after being forwarded by head office. A mass mailing of recovery links therefore often misses its mark, and the customer sees an error message instead of a form.

VariantLink validityEffortSuitability
Recovery link directly in the invitationlimited from creationlowonly for small groups combined with a call
Invitation pointing to “forgot password”customer requests the linklowsolid standard solution
Custom invitation link with longer validityfreely defined, single usedevelopment requiredlarge customer bases, sending in waves

The second variant needs no development: the invitation leads to the page where the customer requests the link for setting a password themselves. The link is then fresh when it is needed. The third variant is more convenient because one click is enough. The rules of any access link apply to it: random, single use, with an expiry date and without a plain-text password. Only an active account can request the link (Shopware source code), so debtors created as inactive stay out until they are activated. In both cases, the invitation should come from a sender the customer knows, such as the responsible person in sales.

  • What changes: the shop complements phone, fax and field sales, it does not replace them.
  • What is already set up: customer number, addresses and terms have been taken over, nothing needs to be entered again.
  • What the customer has to do: set a password once, via “forgot password”.
  • Who helps: a contact person with a direct line, not a general support address.
  • Who the mail is for: the person who orders, not the accounting mailbox.

Whether an invitation to the shop counts as advertising depends on its content. A mail mainly intended to encourage orders in the new shop is close to advertising. For advertising by e-mail, the UWG generally requires the prior express consent of the recipient (Section 7(2) no. 2 UWG), and this also applies to businesses. For existing customers, there is an exception that depends on four conditions: the address comes from a sale, it is used for the seller’s own similar goods or services, the customer has not objected, and the customer is clearly informed of the right to object when the address is collected and each time it is used (Section 7(3) UWG). Factual information about a new ordering route is to be assessed differently from an advertising mailing with promotional offers.

Under data protection law, taking over contact persons is usually based on legitimate interests. Processing is then lawful insofar as it is necessary for the purposes of the legitimate interests of the controller and the interests of the data subject do not override them (GDPR Art. 6(1)(f)). The contact person is usually not a contracting party themselves but an employee of the customer. The balancing of interests therefore belongs in the documentation, and the shop’s privacy notice should mention the takeover from the existing customer relationship.

Have the text and mailing list reviewed

This section provides orientation and is not legal advice. The wording of the invitation, the mailing list and the privacy notice should go to your legal counsel and your data protection officer before sending. Much can be prepared technically, such as an objection flag from the ERP that removes the customer from the mailing list.

Measuring activation: one rate per stage

A takeover is not finished when the accounts have been created, but when customers order in the shop. In between lie five stages, which the graphic above shows as a funnel: debtors in the ERP, accounts created, invitations sent, activated accounts and first orders. Each stage has its own rate, and each rate relates to the stage before. The measurement thus shows where customers drop out. We deliberately give no values: they depend on the industry, customer structure and invitation.

StageRateData source
Accounts createdaccounts created ÷ selected debtorsimport log and count in the shop
Invitation sentinvitations sent ÷ accounts createdsending log, minus bounces
Account activatedactivated accounts ÷ invitations sentlast login field on the customer
First orderfirst-time buyers ÷ activated accountsorder count field on the customer
Overallfirst-time buyers ÷ selected debtorslink via the customer number

The data for this is already in the shop. For the customer object type, Import/Export offers the fields last login, number of orders and date of the last order (Shopware documentation), though only in an export profile of your own. Shopware rewrites the last login with every login (Shopware source code). A weekly export, linked to the selection from the ERP via the customer number, yields the rates without additional tracking, evaluated separately per wave.

Following up: when customers do not activate

Some customers do not activate their account after the first invitation, often a question of timing or recipient. The rates per wave show where follow-up is needed, and the customer number shows who in sales is responsible. Follow-up works when the first contact in the shop brings a benefit that phone and fax do not offer: a reorder from the order history, an order list for recurring items or entry by item number, as we describe in our article on quick order for regular customers.

  • Reminder: a second, shorter mail to those in a wave who have not activated.
  • Call from inside sales: for important customers, with help with the first login.
  • Note on documents: a sentence about the shop on order confirmations and invoices.
  • Check the address: evaluate bounces and correct the contact person in the ERP.

New debtors keep appearing in the ERP after the takeover. An ongoing sync in the integration writes them to the shop without a new import run and passes orders back to the ERP with the correct debtor number. How such an integration is set up is described in our article on ERP integration of Shopware with SAP and Microsoft Dynamics.

How we support the takeover

Taking over existing customers combines three disciplines: data maintenance in the ERP, configuration and extension of the shop, and communication with customers. We support all three, as part of a B2B shop project or as a separate project for an existing shop. The basis is usually Shopware, which we use as a Shopware agency to build B2B shops.

This is how your B2B portal could look:

B2B Commerce Demo

B2B Spare Parts Portal

This design example shows how a B2B portal for business customers with a customer account, price lists and quick entry can look. We develop individual solutions that bring your existing customers on board with their terms from the ERP.
Existing customers Customer account ERP integration Price lists
Discuss your project
Sources and studies

This article draws on the Eurostat survey on ICT usage in enterprises (datasets isoc_ec_eseln2 and isoc_ec_evaln2, wholesale with 10 or more employees in Germany, reference year 2024), on the Shopware documentation (Import/Export, login and registration, customer groups, payment methods), on the Shopware source code in version 6.7.15.1 (login, password recovery, legacy encoders, customer definition, bulk edit), on Section 7 UWG as published on gesetze-im-internet.de and on Art. 5 and Art. 6 GDPR. All information retrieved on October 21, 2026.

Usually not. Customers who already exist as debtors in the ERP can be created as accounts with their customer number, customer group and addresses. The customer then only sets a password. Registration with verification remains for companies you do not know yet.

An ERP holds no shop passwords, so migrated accounts start without one. Stored hashes from an old shop can be carried over via the fields legacyPassword and legacyEncoder (Shopware documentation). In its core, Shopware supports MD5 and SHA-256 for this, other methods need a custom encoder (Shopware source code).

In Shopware, the password recovery link is valid for 2 hours from its creation (Shopware source code). Anyone who opens the invitation later sees an error message. An invitation that points to “forgot password”, or a custom invitation link with a longer validity, typically works better.

That depends on the content. Advertising by e-mail generally requires consent (Section 7(2) no. 2 UWG), and for existing customers there is an exception with four conditions (Section 7(3) UWG). The text and mailing list should be reviewed legally before sending.

In the standard setup, a customer account is one login with one e-mail address. For several buyers, either each person gets their own account that points to the same debtor in the ERP, or we build company accounts with users and permissions as a custom extension.

That depends mainly on data quality in the ERP, less on the import itself. Cleanup, mapping and the test run typically take up most of the time. We give a reliable estimate after a look at your customer base, contact us via our contact page.