Skip to main content

Shopware to iPaaS.com B2B Company Mapping Documentation

How Shopware B2B companies, addresses, and employee relationships are mapped to iPaaS.com.

Summary

This documentation describes how B2B Company records are transferred from Shopware to iPaaS.com, including the company identity, its addresses, and its B2B employees. The family creates and updates iPaaS.com Customer Company records when triggered by Shopware company webhook events or by Manual Sync, and stores several Shopware-specific values as iPaaS.com custom fields. Individual (non-company) customer records are transferred separately by the Add/Update Shopware Customer TO iPaaS.com collection.

ID Format

Manual Sync ID Format

Companies can be transferred from the iPaaS.com Manual Sync page by entering the Shopware company ID. A specific company is transferred together with its addresses and employees.

Example company ID: 01915630e5db7214ab1ab2dc71608955

External ID Format

After a successful transfer, each transferred record is linked in iPaaS.com using an external ID so it stays associated with the correct company across transfers:

  • The company is linked by its Shopware company ID.

  • Each address is linked using a composite external ID built from the Shopware address ID and its parent company ID, in the form {"id":"{address id}","customerId":"{company id}"}.

  • Each B2B employee relationship is linked using a composite external ID built from the employee ID, the relationship type, and the parent customer ID, in the form {"id":"{employee id}","Type":"B2BEmployee","businessPartnerCustomerId":"{customer id}"}.

Deleted Record Support

Deletions are not propagated by default. This family supports the Add and Update of B2B Company records, their addresses, and their B2B employee relationships; there is no Delete collection in this family, so removing a company, address, or relationship in Shopware does not remove the corresponding record in iPaaS.com.

Custom Field Support

This family supports Shopware custom fields. The parent collection can read Shopware company custom field values using the GetValueFromCustomField conversion function: a Dynamic Formula mapping calls GetValueFromCustomField with the company's custom fields and the technical name of the Shopware custom field to read. The function returns the value of the first custom field whose technical name matches, and returns nothing when no field matches. The value can be sent as-is to an iPaaS.com custom field or used inside a larger formula. The C5_Custom_Customer_Company mapping is a worked example that reads the Shopware custom field whose technical name is "customer comments".

The child address collection additionally retains the raw Shopware Country ID and Country State ID on iPaaS.com custom fields, alongside the human-readable Country and Region names produced by the resolution formulas.

Mapping Collection Status

Collection

Status

Add/Update Shopware B2B Company TO iPaaS.com

Enabled

Add/Update Shopware B2B Company Address TO iPaaS.com

Enabled

Add/Update Shopware B2B Company Relationship (B2B-Employee) TO iPaaS.com

Enabled

Trigger Events

  • company/created: a new Shopware company is created.

  • company/updated: an existing Shopware company is updated.

The child address and relationship collections have no independent trigger; they run automatically as part of the parent B2B company transfer.

Duplicate or Conflicting Mappings

This family transfers B2B Companies, their addresses, and their employees from Shopware to iPaaS.com. The following collections operate on the same records in the opposite direction:

  • Add/Update Shopware B2B Company FROM iPaaS.com: Creates or updates companies in Shopware from iPaaS.com data.

  • Add/Update Shopware B2B Company Address FROM iPaaS.com: Creates or updates company addresses in Shopware from iPaaS.com data.

Before enabling these inbound collections alongside the outbound "From iPaaS.com" collections, review and customize your mapping collection filters to prevent circular updates. Define clearly which system is the source of truth for company data. If both directions are active with default mappings, changes may propagate back and forth between systems. There is no opposite-direction collection for B2B company relationships at the time this documentation was written.

Unmapped Field Overwrite Risk

The iPaaS.com API performs a full record replace when updating records, and these collections handle both Add and Update. The fields below are not mapped in the default template mappings. Any existing value in these fields on the iPaaS.com record is overwritten with an empty value each time an Update transfer runs, unless an additional mapping is added to preserve it.

  • Customer Company (parent): AccountNumber, Department, Description, FaxNumber, ParentCompanyId, PhoneNumber, TaxIdNumber, Url

  • Customer Company Address (child): Company, PhoneNumber, Type

  • Company Relationship (child): StartDate, EndDate, IsPrimary

To preserve such values, split the combined Add/Update collection into separate Add and Update collections and, in the Update collection, add a Dynamic Formula mapping that uses the DestinationValue function to carry the existing iPaaS.com value forward — for example, DestinationValue.PhoneNumber mapped to the iPaaS.com PhoneNumber field. The DestinationValue function reads the current value from the iPaaS.com destination record before the replace and writes it back into the outgoing record, so the value is preserved. This is simpler than adding source-side mappings and works for every field, including those that originate in iPaaS.com and have no Shopware equivalent.

Supported Child Collections

  • Add/Update Shopware B2B Company Address TO iPaaS.com (Customer Company Address): Transfers the company's addresses as part of the company transfer. Each address is linked in iPaaS.com using a composite external ID built from the Shopware address ID and its parent company ID, in the form {"id":"{address id}","customerId":"{company id}"}.

  • Add/Update Shopware B2B Company Relationship (B2B-Employee) TO iPaaS.com (Company Relationship): Transfers the company's B2B employees and subsidiary companies as company relationships. Each relationship is linked in iPaaS.com using a composite external ID built from the employee ID, the relationship type, and the parent customer ID, in the form {"id":"{employee id}","Type":"B2BEmployee","businessPartnerCustomerId":"{customer id}"}.

Shopware Caveats

  • B2B Suite required: B2B Company records, their addresses, and their employees are provided by the Shopware Commercial (B2B Suite) extension, not the stock Admin API. Subscribers must have that extension installed for this family to transfer data. The relationships exist only in B2B-enabled Shopware environments.

  • Webhook workflow actions require Enterprise Shopware: The automatic-transfer workflows described under Setup Requirements can only be created on Enterprise editions of Shopware. Subscribers on other editions should rely on Manual Sync or order-driven company transfers.

  • Country and Region resolution: On the address collection, the Country and Region names are resolved from Shopware's country and country-state IDs and depend on those IDs existing in Shopware. The names are returned in the parent B2B company's language when available, falling back to the default language. If an ID cannot be resolved, the corresponding name is left empty.

iPaaS.com Caveats

  • Categories require a linked customer group: The Categories mapping only resolves to an iPaaS.com category when the corresponding Shopware customer group has already been linked between the two platforms. Customer groups that are not linked are omitted from the transferred categories rather than created on the fly.

  • Duplicate prevention by name and email: When a Shopware company is transferred and is not already linked to an iPaaS.com company, the integration looks for an existing iPaaS.com company with the same email address and name, and links to it instead of creating a duplicate. Keep company names and email addresses accurate in Shopware so this matching works as intended.

  • Subsidiary companies are created before their parents: When CompanyAddressesAsSubsidiaries is "true", each address becomes its own iPaaS.com Customer Company (a subsidiary) and is created during the prerequisite step, before the parent company. Subsidiary names are made unique by appending "Subsidiary {Number}". Because subsidiaries precede their parents, the Shopware B2B Parent Company Id mapping captures the parent ID for later use rather than resolving the iPaaS.com company ID at transfer time.

  • Employees are transferred as a prerequisite: A company's B2B employees are transferred into iPaaS.com before the company itself. If an employee record cannot be created or updated, the company transfer is stopped and an error is recorded so the company is not left partially linked.

  • Child collections cannot be triggered independently: The address and relationship collections run only as part of a parent B2B company transfer. They cannot be triggered from the Manual Sync page; transfer the parent B2B company to move its addresses and relationships.

  • Related party must exist first for relationships: A relationship's RelatedToId is resolved by looking up the iPaaS.com internal identifier of the related customer or company from its Shopware identifier. This requires that the related party has already been transferred to and linked in iPaaS.com.

Integration-Specific Caveats

  • Subscribers should stagger large manual jobs and rely on the configured API throttle limits exposed by the subscription when transferring many companies at once, to avoid overloading either platform.

Setup Requirements

For automatic transfers, subscribers or their MiSP must subscribe to Shopware company events on the Inbound Data Flows (External Webhooks) page of the Shopware subscription in iPaaS.com. Webhooks do not activate automatically — the relevant events must be subscribed before automatic transfers occur. Subscribing creates a workflow in Shopware that sends a webhook to iPaaS.com after the corresponding event; clearing the Inbound Data Flow toggle removes that workflow.

The supported company events are company/created and company/updated.

Webhook workflow actions are only available in Enterprise editions of Shopware. On non-Enterprise editions, use Manual Sync (or transfer companies as part of an order transfer) instead. The B2B Company feature requires the Shopware Commercial (B2B Suite) extension.

Integration Flow

  1. A Shopware company/created or company/updated webhook is received (or a company ID is entered on the Manual Sync page).

  2. The integration retrieves the full company record from Shopware.

  3. The prerequisite step transfers the company's B2B employees and, when CompanyAddressesAsSubsidiaries is "true", its subsidiary companies. Each related party is created and linked in iPaaS.com first.

  4. The company record is transformed and transferred to iPaaS.com — the name is built (falling back to first and last name when no company name is present), the customer group is resolved to an iPaaS.com category when linked, and the Shopware-specific values are stored as custom fields.

  5. The company's addresses are processed through the Add/Update Shopware B2B Company Address TO iPaaS.com child collection.

  6. The company's relationships (employees and subsidiaries) are processed through the Add/Update Shopware B2B Company Relationship (B2B-Employee) TO iPaaS.com child collection, after the related parties have been linked.

  7. Each transferred record is linked in iPaaS.com by its external ID (company ID for the company; composite IDs for addresses and relationships, see ID Format).

Companies are also transferred automatically as a dependency of an order transfer (see Additional Notes) without a company webhook being subscribed.

Mappings

Add/Update Shopware B2B Company TO iPaaS.com

Description. Transfers the B2B company identity from Shopware to iPaaS.com, links the customer group to a category, and stores Shopware-specific values as custom fields.

Mapping Type

Source Field (Shopware)

Destination Field (iPaaS.com)

Description

Dynamic Formula

Name formula

Name

required — supplies the iPaaS.com Company name from the Shopware company name, falling back to first and last name when no company name is present; also a key for duplicate detection.

Field

Email

EmailAddress

recommended — maps the Shopware company email; used with the name to match and link an existing iPaaS.com company and prevent duplicates.

Dynamic Formula

Categories formula

Categories

recommended — converts the Shopware company's group ID to an iPaaS.com category when the customer group is linked; unlinked groups are omitted.

Field

FirstName

First Name (custom field)

optional — stores the Shopware company contact first name; also feeds the Name fallback.

Field

LastName

Last Name (custom field)

optional — stores the Shopware company contact last name; also feeds the Name fallback.

Field

SalesChannelId

Sales Channel ID (custom field)

optional — stores the Shopware sales channel ID the company belongs to.

Field

LanguageId

Language ID (custom field)

optional — stores the Shopware language ID associated with the company.

Dynamic Formula

C5_Custom_Customer_Company formula

C5_Custom_Customer_Company (custom field)

optional — worked example that reads a Shopware custom field by technical name via GetValueFromCustomField.

Dynamic Formula

Shopware B2B Parent Company Id formula

Shopware B2B Parent Company Id (custom field)

optional — captures the Shopware parent company ID for subsidiary companies; stores nothing for any other company.

// Name
if(!string.IsNullOrEmpty(CompanyName))
    return CompanyName;
else
    return FirstName + " " + LastName;
// Categories
return await ConvertShopwareCategoryToiPaaS(GroupId);
// C5_Custom_Customer_Company
return await GetValueFromCustomField(CustomFields, "customer comments");
// Shopware B2B Parent Company Id
if(Id.Contains("_SubsidiaryCompany")){
  var parentId = Links.Self;
  var justParent = parentId.Split('/').Last();
  return justParent;
}
else {
 return null;
}

Placeholder value — replace during implementation: "customer comments" is an example Shopware custom field technical name; replace it with the technical name of the custom field you want to transfer, or remove this example mapping if it is not needed.

Add/Update Shopware B2B Company Address TO iPaaS.com

Description. Transfers a B2B company's addresses to iPaaS.com as part of the parent company transfer, resolving country and region names from Shopware identifiers.

Mapping Type

Source Field (Shopware)

Destination Field (iPaaS.com)

Description

Field

Street

Address1

recommended — the primary street line, for deliverable addresses.

Field

AdditionalAddressLine1

Address2

optional — the second street line.

Field

AdditionalAddressLine2

Address3

optional — the third street line.

Field

City

City

recommended — the address city.

Dynamic Formula

Country formula

Country

recommended — resolves the country name from the Shopware Country ID via CountryNameFromId, in the parent company's language with default-language fallback; empty if unresolved.

Field

CountryId

Country ID (custom field)

optional — stores the raw Shopware Country ID alongside the resolved Country name.

Field

CountryStateId

Country State ID (custom field)

optional — stores the raw Shopware Country State ID alongside the resolved Region name.

Field

FirstName

FirstName

recommended — the recipient first name on the address.

Field

IsPrimaryBilling

IsPrimaryBilling

optional — flags whether this is the company's primary billing address.

Field

IsPrimaryShipping

IsPrimaryShipping

optional — flags whether this is the company's primary shipping address.

Field

LastName

LastName

recommended — the recipient last name on the address.

Field

ZipCode

PostalCode

recommended — the postal/ZIP code, for deliverable addresses.

Dynamic Formula

Region formula

Region

recommended — resolves the region name from the Shopware Country ID and Country State ID via StateNameFromId, in the parent company's language with default-language fallback; empty if unresolved.

// Country
var country = await CountryNameFromId(CountryId,Parent.LanguageId);
if (!string.IsNullOrEmpty(country))
  return country;
return await CountryNameFromId(CountryId);
// Region
var state = await StateNameFromId(CountryId, CountryStateId, Parent.LanguageId);
if(!string.IsNullOrEmpty(state))
    return state;
return await StateNameFromId(CountryId, CountryStateId);

Add/Update Shopware B2B Company Relationship (B2B-Employee) TO iPaaS.com

Mapping Filter

string tableName = string.Empty;
if(Id != null && Id.Contains("_SubsidiaryCompany"))
    tableName = "Company";
else
    tableName = "Customer";
var iPaaSEntityId = await GetSpaceportIdAsync(Id.Split("|")[0], tableName, SpaceportSystemId);
if(iPaaSEntityId != null && !string.IsNullOrWhiteSpace(iPaaSEntityId.ToString()))
    return true;
throw new Exception("Can not create this company relationship (id: "+ Id +") as its employee/subsidiary_company because it does not exist or interlinked with iPaaS customer/company");

Filter Description. Before a relationship is transferred, the filter determines the related party's type from the Shopware Id: an ID containing _SubsidiaryCompany is treated as a Company, otherwise as a Customer. It then calls GetSpaceportIdAsync to look up the related party's iPaaS.com internal ID from its Shopware ID. If a matching, linked iPaaS.com record is found, the relationship passes and the transfer proceeds. If the related employee or subsidiary company does not yet exist or is not yet linked on iPaaS.com, the filter throws "Can not create this company relationship (id: "+ Id +") as its employee/subsidiary_company because it does not exist or interlinked with iPaaS customer/company" and the transfer fails. In practice the related employee or subsidiary company must be transferred to iPaaS.com before the relationship that points at it.

Description. Transfers the relationships that connect a Shopware B2B company to its employees and subsidiary companies, setting the relationship type and resolving the related party's iPaaS.com identifier.

Mapping Type

Source Field (Shopware)

Destination Field (iPaaS.com)

Description

Dynamic Formula

Type formula

Type

recommended — classifies the relationship as Subsidiary Company (ID contains _SubsidiaryCompany) or Employee; tells iPaaS.com how to interpret the related party.

Dynamic Formula

RelatedToId formula

RelatedToId

recommended — resolves the related party's iPaaS.com internal ID via GetSpaceportIdAsync (a Company for subsidiaries, a Customer otherwise); ties the relationship to the correct iPaaS.com record.

// Type
if(Id != null && Id.Contains("_SubsidiaryCompany"))
    return "Subsidiary Company";
else
    return "Employee";
// RelatedToId
string tableName = string.Empty;
if(Id != null && Id.Contains("_SubsidiaryCompany"))
    tableName = "Company";
else
    tableName = "Customer";
return await GetSpaceportIdAsync(Id.Split("|")[0], tableName, SpaceportSystemId);

Error Handling

  • "Can not create this company relationship (id: ...) as its employee/subsidiary_company because it does not exist or interlinked with iPaaS customer/company": the relationship's related employee (Customer) or subsidiary company (Company) has not yet been transferred to and linked in iPaaS.com. Resolution: transfer the related party first, then re-trigger the relationship transfer. Errors surface in Dashboard / Integration Monitoring / Error Logs.

  • Shopware API temporarily unavailable: if Shopware is unreachable when a transfer is triggered, the transfer fails and an error appears in Dashboard / Integration Monitoring / Error Logs. Resolution: retry by triggering a new webhook event or by using Manual Sync (for child records, re-trigger the parent B2B company transfer).

  • Employee prerequisite failure: if a company's B2B employee record cannot be created or updated, the company transfer is stopped and an error is recorded so the company is not left partially linked. Resolution: correct the underlying employee record, then re-trigger the transfer.

Testing & Validation

Test Scenarios

  • Create a new B2B company in Shopware and confirm a corresponding iPaaS.com Customer Company is created with the expected name and email.

  • Update an existing B2B company in Shopware and confirm the linked iPaaS.com Company is updated rather than duplicated.

  • Transfer a company with no company name and confirm the Name falls back to the company contact's first and last name.

  • Transfer a company whose Shopware customer group is linked and confirm the iPaaS.com Categories value resolves; transfer one whose group is not linked and confirm the category is omitted.

  • Transfer a company with multiple addresses and confirm each address is created and linked under the company with resolved Country and Region names.

  • Transfer a company with employees and confirm each employee relationship is typed Employee and linked to the correct iPaaS.com customer.

  • With CompanyAddressesAsSubsidiaries set to "true", confirm subsidiary companies are created with unique "Subsidiary {Number}" names and linked through Subsidiary Company relationships.

  • Attempt a relationship transfer before the related employee/subsidiary is linked and confirm the validating filter rejects it with the documented error.

  • Perform a Manual Sync using a Shopware company ID and confirm the company, addresses, and employees transfer together.

Validation Checklist

  • The iPaaS.com Customer Company has a non-empty Name and the expected EmailAddress.

  • Duplicate detection links to an existing iPaaS.com company by name and email rather than creating a duplicate.

  • Custom fields (First Name, Last Name, Sales Channel ID, Language ID, C5_Custom_Customer_Company, Shopware B2B Parent Company Id) carry the expected values.

  • Addresses are linked with the composite external ID and show resolved Country/Region names, with raw Country ID and Country State ID retained.

  • Relationships are linked with the composite external ID and carry the correct Type and RelatedToId.

  • The example custom field technical name ("customer comments") has been replaced or the example mapping removed before production use.

  • Where preserving unmapped fields matters, separate Add and Update collections with DestinationValue mappings have been configured.

Additional Notes

  • When an order is transferred from Shopware to iPaaS.com for a business customer, a B2B company transfer occurs automatically to capture the company on the order — even if company webhooks are disabled. To prevent company records from being created or updated during order transfers, disable the B2B company transfer mapping collections.

  • These limitations are inherent to the current design of the integration and the capabilities of the Shopware API, and they apply to all subscribers at the time this documentation was written.

Did this answer your question?