Summary
This documentation family creates or updates individual Customer records in Shopware from iPaaS.com data. When an iPaaS.com customer is transferred to the Shopware subscription, the integration builds a Shopware customer record from the mapped fields and creates it, or updates the matching record when one already exists. The parent customer transfer also drives two child collections that write the customer's addresses and, where the Shopware Commercial (B2B Suite) extension is installed, create the customer's B2B employees.
ID Format
Manual Sync ID Format
Customer records are transferred from iPaaS.com to Shopware when an iPaaS.com customer transfer targets this Shopware subscription. A single customer can be pushed from the iPaaS.com Manual Sync page by supplying the iPaaS.com customer identifier — for example, an iPaaS.com customer ID such as 123456. The mapped fields are then applied to create the Shopware customer record, or to update it when a matching record already exists.
External ID Format
After a successful transfer, each Shopware customer is linked back to its iPaaS.com source so subsequent transfers update the same record rather than creating duplicates. The child collections carry their own external-id formats:
Customer Address addresses are linked using a composite external ID built from the address ID and its parent customer ID, so each address stays associated with the correct customer across transfers.
Customer Relationship B2B employees are linked back to the source relationship so the duplicate check can recognize an employee that already exists in Shopware.
Deleted Record Support
This family supports Add and Update operations only. There is no Customer delete collection in this family, so customer deletions performed in iPaaS.com are not propagated to Shopware by default. Subscribers or their MiSP who require delete propagation should validate an approach in a staging environment before relying on it in production.
Mapping Collection Status
All collections in this family are Enabled.
Trigger Events
The parent Add/Update Shopware Customer FROM iPaaS.com collection runs when an iPaaS.com customer transfer targets the Shopware subscription, either automatically through an Outbound Data Flow or manually from the iPaaS.com Manual Sync page.
The child Customer Address and Customer Relationship collections have no independent trigger. They run automatically as part of the parent customer transfer.
Duplicate or Conflicting Mappings
This family creates or updates Customers, customer addresses, and B2B employees in Shopware from iPaaS.com data. The following collections operate on the same data in the opposite direction:
Add/Update Shopware Customer TO iPaaS.com: Transfers individual customers from Shopware to iPaaS.com.
Add/Update Shopware Customer Address TO iPaaS.com: Transfers customer addresses from Shopware to iPaaS.com.
Shopware B2B Company Relationship TO iPaaS - (B2B-Employee): Transfers Shopware B2B employee relationships to iPaaS.com.
Before enabling these inbound "FROM iPaaS.com" collections alongside the outbound "TO iPaaS.com" collections, subscribers or their MiSP should review and customize their mapping collection filters to prevent circular updates, and define clearly which system is the source of truth for customer data. If both directions are active with default mappings, changes may propagate back and forth between the systems.
Supported Child Collections
Add/Update Shopware Customer Address FROM iPaaS.com (Customer Address): Creates or updates the customer's addresses in Shopware as part of the customer transfer. Addresses are linked using a composite external ID built from the address ID and its parent customer ID.
Add/Update Shopware Customer Relationship FROM iPaaS.com (Customer Relationship): Creates B2B employees associated with the customer in Shopware. This child collection is effective only when the Shopware Commercial (B2B Suite) extension is installed, and each employee is linked back to its source relationship so the duplicate check can recognize an existing employee.
Shopware Caveats
B2B employee creation requires the Shopware Commercial (B2B Suite) extension. The B2B employee fields on the parent collection and the entire Customer Relationship child collection only take effect when the Shopware Commercial (B2B Suite) extension is installed. On stores without it, those values have no effect.
Named Shopware records must exist. The default payment method, sales channel, customer group, and language are resolved from names as they appear in Shopware. Each named record referenced by a required field must exist in the target Shopware store. If a required lookup finds no matching record, the value resolves to nothing and customer creation fails, with an error recorded in Dashboard / Integration Monitoring / Error Logs.
Customer addresses require recipient name, street, city, and country. If the country ISO code supplied to the country formula does not resolve to a Shopware country, the address write fails for that record. If the state short code does not resolve to a Shopware state, the state is left unset and the rest of the address is still written.
B2B employee identity comes from the related iPaaS.com customer. The employee's first name, last name, and email are read from the related iPaaS.com customer rather than from the relationship record itself. If that related customer cannot be resolved, the corresponding values are empty.
iPaaS.com Caveats
This family transfers customer data into Shopware. When the opposite-direction "TO iPaaS.com" collections are also enabled, define which system owns customer, address, and B2B employee relationship data so updates do not circulate between the two platforms.
The child Customer Address and Customer Relationship collections run only as part of a parent customer transfer. They cannot be triggered independently from the Manual Sync page; transfer the parent customer to write its addresses and create its employee relationships.
For large manual jobs, subscribers or their MiSP should stagger the transfers and rely on the subscription's configured API throttle limits to avoid overwhelming the Shopware API.
Integration-Specific Caveats
Category-driven customer group. The customer group can be derived from the customer's linked iPaaS.com category. For this path to work, the subscription setting TransferCategory must be set to True so iPaaS.com categories are linked to their Shopware customer groups. When it is not enabled, or the category is not linked, the integration falls back to the named customer group.
Language by custom field. The language is read from the iPaaS.com custom field named Language ID when present, otherwise from the named-language fallback. The fallback accepts only Latin-character language names; for non-Latin languages, supply the Shopware language ID through the Language ID custom field. A valid Shopware language name can be found under Settings > Languages in the Shopware admin.
Setup Requirements
For automatic transfer, configure an iPaaS.com Outbound Data Flow that targets this Shopware subscription so that iPaaS.com customer changes are pushed to Shopware. Before enabling the family, confirm that every named Shopware record referenced by a required field — the default payment method, sales channel, customer group, and language — exists in the target Shopware store, and replace the example names in the mappings with names that exist in the store. If B2B employees are required, confirm the Shopware Commercial (B2B Suite) extension is installed.
Integration Flow
An iPaaS.com customer transfer is triggered, either automatically through an Outbound Data Flow or manually from the Manual Sync page.
The integration fetches the iPaaS.com customer record and its related data (categories, addresses, and relationships).
The parent mapping resolves the Shopware-specific identifiers a customer record requires — default payment method, sales channel, customer group, and language — from iPaaS.com names and values to the matching Shopware IDs.
The integration creates the Shopware customer record, or updates the matching record when one already exists.
Each of the customer's addresses is processed through the Customer Address child collection and written to Shopware, linked using a composite external ID built from the address ID and its parent customer ID.
Each qualifying employee relationship is processed through the Customer Relationship child collection; where the Shopware Commercial (B2B Suite) extension is installed, a B2B employee is created from the related iPaaS.com customer's name and email.
The created or updated Shopware customer is linked back to its iPaaS.com source, and the child records are linked by their respective external IDs, so subsequent transfers update the same records.
Mappings
Add/Update Shopware Customer FROM iPaaS.com
Mapping Filter
1==1
Filter Description. This filter evaluates to a constant true (1==1), so every iPaaS.com customer record reaching this collection passes the filter and is processed. There are no skipped or rejected branches and the formula does not throw. Subscribers or their MiSP can replace this with a restricting expression if only a subset of iPaaS.com customers should be transferred to Shopware.
Description. Creates or updates the individual Shopware customer record, resolving the Shopware identifiers a customer requires from iPaaS.com names and values.
Mapping Type | Source Field (iPaaS.com) | Destination Field (Shopware) | Description |
Field | FirstName | FirstName | Required — the customer's first name; Shopware requires a first name to create a customer, and a transfer without one is rejected. |
Field | LastName | LastName | Required — the customer's last name; Shopware requires a last name to create a customer, and a transfer without one is rejected. |
Field | EmailAddress | Required — the customer's email address and primary human-readable identifier in Shopware; a record with no email is rejected. | |
Field | CustomerNumber | CustomerNumber | Recommended — carries the iPaaS.com customer number forward to keep the customer identifiable across both platforms; when omitted, Shopware assigns its own customer number. |
Dynamic Formula |
| DefaultPaymentMethodId | Required — resolves the default payment method by name using GetPaymentIdByName; the named method must exist in Shopware or creation fails. |
Dynamic Formula |
| SalesChannelId | Required — assigns the customer to a sales channel by name using GetChannelIdByName; the named channel must exist in Shopware or creation fails. |
Dynamic Formula | Customer group resolution (see formula below) | GroupId | Required — derives the Shopware customer group from the linked iPaaS.com category, falling back to a named group with GetGroupIdByName. |
Dynamic Formula | Language resolution (see formula below) | LanguageId | Required — sets the language from the Language ID custom field with GetCustomFieldValue, falling back to GetLanguageIdByName. |
Static |
| Type | Optional — sets the Shopware account type; |
Static |
| B2B_Email | Optional — email for a B2B employee created alongside the customer; effective only with the Shopware Commercial (B2B Suite) extension. |
Static |
| B2B_FirstName | Optional — first name for a B2B employee created alongside the customer; effective only with the Shopware Commercial (B2B Suite) extension. |
Static |
| B2B_LastName | Optional — last name for a B2B employee created alongside the customer; effective only with the Shopware Commercial (B2B Suite) extension. |
The GroupId mapping uses the following formula:
if (Categories != null && Categories.Count > 0)
{
var categoryId = Categories[0].CategoryId; if (categoryId != null && categoryId > 0)
{
var externalCustomerCategory = await GetExternalIdAsync(categoryId, "Customer Category", SpaceportSystemId); if (externalCustomerCategory != null)
{
return externalCustomerCategory;
}
}
}
return await GetGroupIdByName("B2B");The LanguageId mapping uses the following formula:
var value = GetCustomFieldValue(CustomFields, "Language ID");
if (!string.IsNullOrEmpty(value)){
return value;
}
return await GetLanguageIdByName("English");Placeholder value — replace during implementation: "Vorkasse" (payment method), "Food & Beverage" (sales channel), "B2B" (fallback customer group), and "English" (fallback language) are example Shopware names. Each named record must exist in the target Shopware store whenever its lookup is reached; if a required lookup finds no match, the value resolves to nothing and customer creation fails. The B2B employee static values "simrab2bTest@gmail.com", "sins", and "testtb2" are test values — replace them with real B2B employee details, or remove those mappings if no B2B employee should be created.
Add/Update Shopware Customer Address FROM iPaaS.com
Description. Creates or updates the customer's addresses in Shopware as part of the parent customer transfer.
Mapping Type | Source Field (iPaaS.com) | Destination Field (Shopware) | Description |
Field | FirstName | FirstName | Required — the recipient first name; Shopware requires a recipient name on every customer address. |
Field | LastName | LastName | Required — the recipient last name; Shopware requires a recipient name on every customer address. |
Field | Address1 | Street | Required — the primary street line; Shopware requires a street on every customer address. |
Field | City | City | Required — the address city; Shopware requires a city on every customer address. |
Dynamic Formula |
| CountryId | Required — resolves the Shopware country by ISO code using GetCountryIdByIso; if the country cannot be resolved the address write fails for that record. |
Field | PostalCode | ZipCode | Recommended — the postal/ZIP code for deliverable addresses. |
Dynamic Formula |
| CountryStateId | Optional — resolves the Shopware state by short code using GetStateIdByShortCode; if it cannot be resolved the state is left unset and the rest of the address is still written. |
Field | Address2 | AdditionalAddressLine1 | Optional — the second street line. |
Field | Address3 | AdditionalAddressLine2 | Optional — the third street line. |
Field | IsPrimaryBilling | IsPrimaryBilling | Optional — flags whether the address should be the customer's primary billing address. |
Field | IsPrimaryShipping | IsPrimaryShipping | Optional — flags whether the address should be the customer's primary shipping address. |
Placeholder value — replace during implementation: The "US" country ISO code and "US-NY" state short code in the formulas are hardcoded examples. Replace them with values driven from the iPaaS.com address data — ideally a dynamic mapping — so each address resolves to its own country and state. Because the country is required by Shopware, an unresolved country ISO code causes the address write to fail for that record.
Add/Update Shopware Customer Relationship FROM iPaaS.com
Mapping Filter
if(!string.IsNullOrEmpty(Type) && Type.ToLower() == "employee"){
var email = await GetiPaaSCustomerData(RelatedToId, "Email");
if(!string.IsNullOrWhiteSpace(email)){
bool duplicateFound = await B2BEmployeeDuplicateCheck(email);
if(!duplicateFound)
return true;
}
}
return false;Filter Description. This filter admits only employee relationships that do not already exist in Shopware. A relationship passes only when its Type is "employee" (case-insensitive). For an employee relationship, the integration resolves the related iPaaS.com customer's email with GetiPaaSCustomerData(RelatedToId, "Email"); if an email is found, it runs B2BEmployeeDuplicateCheck(email) against Shopware and the relationship is transferred only when no Shopware B2B employee already exists with that email. Every other case is skipped: non-employee relationships, employee relationships with no resolvable email, and employee relationships whose employee already exists in Shopware. This prevents duplicate B2B employees from being created. The filter does not throw.
Description. Creates B2B employees in Shopware from qualifying iPaaS.com customer relationships, taking the employee's identity from the related iPaaS.com customer.
Mapping Type | Source Field (iPaaS.com) | Destination Field (Shopware) | Description |
Dynamic Formula |
| FirstName | Required — the employee's first name from the related iPaaS.com customer; Shopware requires a first name to create a B2B employee. |
Dynamic Formula |
| LastName | Required — the employee's last name from the related iPaaS.com customer; Shopware requires a last name to create a B2B employee. |
Dynamic Formula |
| Required — the employee's email from the related iPaaS.com customer; required to create the employee and used as the duplicate-check key. | |
Dynamic Formula | Language resolution (see formula below) | LanguageId | Required — sets the employee language from the Language ID custom field with GetCustomFieldValue, falling back to GetLanguageIdByName. |
Static |
| Active | Optional — marks the new employee as active on creation. |
The LanguageId mapping uses the following formula:
var value = GetCustomFieldValue(CustomFields, "Language ID");
if (!string.IsNullOrEmpty(value)){
return value;
}
return await GetLanguageIdByName("English");Placeholder value — replace during implementation: the fallback language name "English" is an example default. Replace it with a language name that exists in the subscriber's Shopware instance — GetLanguageIdByName resolves only Latin-character names and returns nothing for a name it cannot find — or supply the Language ID custom field on the source record so the fallback is not needed.
Error Handling
Errors surface in Dashboard / Integration Monitoring / Error Logs.
A required customer lookup that resolves to nothing — for the default payment method, sales channel, customer group, or language — causes customer creation to fail. Resolution: confirm each named record exists in the target Shopware store and replace the example names with names that exist in the store.
A required address country that does not resolve from its ISO code causes the address write to fail for that record. Resolution: supply a country ISO code that resolves to a Shopware country, ideally driven dynamically from the iPaaS.com address data.
If the Shopware API is temporarily unavailable when a transfer is triggered, the transfer fails. Resolution: re-trigger the transfer from iPaaS.com; for child records, re-trigger the parent customer transfer.
Testing & Validation
Test Scenarios
Transfer a new iPaaS.com customer and confirm the Shopware customer record is created with the mapped first name, last name, email, and customer number.
Transfer an existing customer again with changed values and confirm the matching Shopware record is updated rather than duplicated.
Transfer a customer missing a required field (for example, no email) and confirm the record is rejected with an error in Dashboard / Integration Monitoring / Error Logs.
Transfer a customer whose payment method, sales channel, customer group, or language name does not exist in Shopware and confirm the required lookup fails and creation is rejected.
Transfer a customer with one or more addresses and confirm each address is written, linked to the correct customer, with the country resolved and the primary billing/shipping flags applied.
On a store with the Shopware Commercial (B2B Suite) extension, transfer a customer with an employee relationship and confirm a B2B employee is created from the related iPaaS.com customer's details.
Re-transfer a customer whose B2B employee already exists in Shopware and confirm the duplicate check skips the relationship so no duplicate employee is created.
Validation Checklist
The created or updated Shopware customer shows the expected first name, last name, email, and customer number.
The default payment method, sales channel, customer group, and language on the Shopware customer resolved to the intended records.
The category-driven customer group path behaved as expected when TransferCategory is True, and fell back to the named group otherwise.
Each transferred address appears on the correct Shopware customer with the country resolved and the additional lines and primary flags set as expected.
B2B employees were created only for employee relationships with a resolvable email and no existing duplicate, and only on stores with the Shopware Commercial (B2B Suite) extension.
Re-running a transfer updates the same customer and child records rather than creating duplicates.
