Skip to main content

iPaaS.com to Adobe Commerce/Magento 2 Simple Product Mapping Documentation

How standalone products transfer from iPaaS.com into Adobe Commerce/Magento 2 as simple products, with their per-location inventory and alternate units of measure.

Summary

Standalone products are transferred from iPaaS.com into Adobe Commerce/Magento 2 as simple products. The product record carries the SKU, name, price, status, tax class, weight, stock figures and category assignments, and two child collections write the product's per-location inventory and its alternate units of measure onto the same product.

The family ships as an add-only collection paired with an update-only collection, each with its own inventory and unit children. Creation and maintenance can therefore be filtered and enabled independently. The transfer is unidirectional — products move from iPaaS.com into Adobe Commerce/Magento 2 only.

Configurable products and their variants are covered by a separate family; this documentation covers standalone products only.

ID Format

Manual Sync ID Format

Enter the iPaaS.com Product record identifier — the internal numeric identifier of the product in iPaaS.com, for example 58231.

This is not the product SKU. Entering a SKU will not resolve a product record.

External ID Format

After a successful transfer, iPaaS.com stores the Adobe Commerce/Magento 2 product SKU as the external ID on a record linking the iPaaS.com product to its Magento counterpart. That record is what routes later transfers of the same product to the existing Magento product for an update rather than creating a duplicate, and it is what the standalone inventory collections read to resolve the SKU.

Deleted Record Support

Outbound delete is supported for products through a separate delete mapping, which is not part of this family and is not included in the default templates. Removing a product in iPaaS.com does not remove it from Adobe Commerce/Magento 2 through the collections documented here.

Custom Field Support

This family reads several iPaaS.com product custom fields, which must exist by these exact names for the behavior they control to work:

  • Kit Item: a value of True switches the stock quantity and status calculations to total the kit's components rather than sum the product's own inventory.

  • Parent Item: a value of True makes the category mapping leave the product's existing Magento category assignments untouched.

  • Parent Always In Stock: forces the product to remain in stock regardless of the calculated quantity.

  • Parent URL Key Method: controls how the product's storefront URL key is generated in Magento.

  • Parent Last Cost: supplies the product's cost attribute.

  • Parent Alternate Unit Barcode: supplies an alternate barcode written by the unit child collection.

A catalog that does not use these behaviors does not need the fields; the standard calculations then apply.

Mapping Collection Status

Status: Enabled. All six collections in this family ship enabled.

Trigger Events: Creation or update of Product records in iPaaS.com, plus Manual Sync on demand.

Automatic outbound transfers are enabled on the subscription's Outbound Data Flows page. Until that flow is enabled, no products are sent automatically. Manual Sync is always available regardless.

Duplicate or Conflicting Mappings

  • The add and update parent collections write the same seventeen shared destination fields to the same Magento product. Because they do, any change made to a mapping, a static value, or a Lookup Translation on one of them should be mirrored on the other. Divergence between the pair produces products whose values change the first time they are updated.

  • Update Adobe Commerce/Magento 2 Simple Product Inventory Totals FROM iPaaS.com writes product-level stock quantity and stock status only. It ships disabled, but where a subscriber enables it, that collection and this pair both write the product's stock fields.

  • The standalone product inventory collections write the same per-source inventory rows as the inventory children here, without a product transfer above them.

Subscribers or their MiSP should review the filters and the sync settings on all of these collections together before enabling or modifying any of them.

Duplicate matching

This integration implements no selectable collision-handling methods, and the behavior is not configurable on these collections. The link between the iPaaS.com product and its Magento SKU decides whether a transfer creates or updates; where no link exists, the add collection creates a new product.

Unmapped field overwrite risk

When a product is re-transferred, the fields this family maps are written again over the existing Magento product. Values edited directly in the Magento admin on any mapped field will be replaced.

The integration provides no guarantee that unmapped or blank fields are preserved on a product update. Subscribers or their MiSP should validate in a staging environment which fields are affected on their own store before relying on manual edits to any product this family transfers.

The CategoryIds mapping is the one deliberate exception: for a product flagged as a parent item, it instructs the integration to leave existing Magento category assignments untouched.

The fields at risk are every field the parent collections map — Sku, Name, AttributeSetId, Price, Status, Visibility, TypeId, Weight, StockItemQty, StockItemIsInStock, TaxClassId, Cost, SpecialPrice, CategoryIds, AlwaysInStockOverride and UrlKeyMethodOverride — plus the per-source quantity and status written by the inventory child and the unit values written by the unit child.

The mitigation is a DestinationValue. Where a Magento field must hold a specific value that the source system does not supply, set a DestinationValue on that mapping so the integration writes the value chosen there instead of taking it from the source. Values that must be maintained only in Magento should be kept on fields these collections do not map.

Supported Child Collections

The parent collections are Add Adobe Commerce/Magento 2 Simple Product FROM iPaaS.com and Update Adobe Commerce/Magento 2 Simple Product FROM iPaaS.com. Each is the parent of two child collections, which write onto the Magento product created or updated by their parent and do not transfer independently of it.

Each row below is a pair of collections — one add-only and one update-only. In the iPaaS.com interface they appear under their own names, beginning Add and Update respectively (for example Add Adobe Commerce/Magento 2 Simple Product Inventory FROM iPaaS.com and Update Adobe Commerce/Magento 2 Simple Product Inventory FROM iPaaS.com). They are documented together here because their mappings are identical.

  • Add / Update Adobe Commerce/Magento 2 Simple Product Inventory FROM iPaaS.com: distributes the product's inventory across the individual Magento inventory sources, translating each iPaaS.com location into its matching Magento source code and writing the per-source quantity and status.

  • Add / Update Adobe Commerce/Magento 2 Simple Product Unit FROM iPaaS.com: writes the product's alternate units of measure, carrying the unit name, its conversion factor, its price, and an optional barcode override.

System Caveats

Adobe Commerce/Magento 2 Caveats

  • The attribute set must already exist and cannot be changed later. The integration does not create attribute sets. An attribute set cannot be changed on a product after creation; correcting a wrong one later requires a reindex and cache flush in Magento, and the product can otherwise become unusable. Choose the correct set before the first production run.

  • Custom attributes must exist with global scope before transfer. An attribute that does not exist, or that is not configured with global scope, causes the product transfer to fail.

  • Tax class IDs are store-specific. The shipped IDs are correct only for a store using the stock tax classes. Custom tax classes created in Magento receive their own IDs and must be confirmed against the store.

  • Inventory source codes are case-sensitive. A case mismatch causes the Magento inventory indexer to fail, and a failed inventory index can hide all products in the Magento admin until it is corrected and reindexed.

  • Product writes are subject to Magento's API limits. Larger catalogs and large catch-up runs can encounter Adobe Commerce/Magento 2 request-array and page-size limits. Stagger large manual catch-up runs rather than issuing them concurrently.

iPaaS.com Caveats

  • Categories must exist in Magento before products are transferred. Category resolution matches each iPaaS.com category to a Magento category ID. A category that cannot be matched simply is not assigned, and the product transfers without it.

  • An unmatched status or tax class is handled silently. A product status with no translation row sends no status value, and Magento applies its own default. A tax class with no row is caught by the translation's final fallback and taxed as Taxable Goods. Neither outcome raises an error.

  • The custom fields listed above must exist by their exact names. A missing field leaves the behavior it controls unset rather than raising an error.

Integration-Specific Caveats

  • The add and update collections must not be configured as add-and-update. Each is deliberately one half of a pair, and the split is what lets creation and maintenance carry different filters and be enabled independently.

  • The update collection excludes secondary updates. An inventory-only movement is deliberately not allowed to re-send the complete product payload; those records are handled by the inventory totals collection, which ships disabled.

  • Every product in a collection lands in the same attribute set and the same visibility. Both are static values. Routing different products to different attribute sets or visibility settings requires separate mapping collections with distinct filters, each carrying its own static value.

  • Weight falls back to 1. A product with no weight recorded in iPaaS.com is sent with a weight of 1 rather than being left blank.

  • Cost must be supplied on both collections. A cost provided on the add does not carry over to the update. Where cost matters, the mapping must be present and populated on both halves of the pair.

Setup Requirements

Adobe Commerce/Magento 2 Configuration

  • Confirm the attribute set the products should use, and note its numeric ID.

  • Create any custom attributes the catalog requires, with global scope.

  • Confirm the tax class IDs in the store and note them for the tax class translation.

  • Create every required inventory source under Multi Source Inventory, confirming exact spelling and casing.

iPaaS.com Configuration

  • Replace the static attribute set ID with the store's own, and confirm the static visibility value is the intended default.

  • Review the product status and tax class Lookup Translations and add a row for every value the catalog uses.

  • Review the inventory source code Lookup Translation so that there is exactly one row per iPaaS.com location.

  • Replace or remove the excluded example SKUs in the parent and unit filters.

  • Create the product custom fields listed under Custom Field Support where the behaviors they control are required.

  • Transfer the category structure before running product transfers.

  • Mirror any mapping change across both the add and the update collection.

  • Enable the outbound flow for Adobe Commerce/Magento 2 products on the subscription's Outbound Data Flows page.

Full step-by-step setup instructions are in the Adobe Commerce/Magento 2 Installation Instructions article.

Integration Flow

  1. The iPaaS.com product record is evaluated against the parent collection's mapping filter. Products that do not pass are skipped without error.

  2. The parent mappings build the Magento simple product payload, including the calculated stock quantity and stock status, the resolved category assignments, and the translated status and tax class values.

  3. The simple product is created or updated in Adobe Commerce/Magento 2, and iPaaS.com records the link between the iPaaS.com product and the Magento product.

  4. The child collections are evaluated against the product's related records. The inventory child distributes quantity across the individual Magento inventory sources, and the unit child writes the product's alternate units of measure onto the same product.

Because the product and its children are written as one sequence, a subscriber troubleshooting a product that arrived in Magento with no per-location inventory or no alternate units should check the child collections' filters before concluding the product transfer failed.

Mappings

Subsections headed Add / Update cover an add-only and an update-only collection that share the same mappings. Where the pair differs, both filters are shown and the differing rows are marked.

Add / Update Adobe Commerce/Magento 2 Simple Product FROM iPaaS.com (Parent)

iPaaS.com data type: Product

Mapping Filter — Add collection

TrackingMethod =="Product" && !(Sku  ==  "GC-TEST-100")

Mapping Filter — Update collection

TrackingMethod =="Product" && !(Sku  ==  "GC-TEST-100") && SecondaryUpdate != true

Both collections process iPaaS.com product records whose tracking method is Product, which restricts them to standalone products and excludes variant records handled by the associated product variant collections. Both also exclude one specific SKU. The update collection adds a third condition excluding records flagged as a secondary update, so that an inventory-only movement does not re-send the complete product payload — those records are the subject of the inventory totals collection instead. Records that do not pass are skipped without error.

Placeholder value — replace during implementation: the excluded SKU GC-TEST-100 is a test gift-card record carried over from the template environment. Replace it with the SKUs the store actually needs to exclude, or remove the exclusion if it has no meaning in the catalog.

The two collections map the same seventeen shared fields. The only difference is the date stamp: the add collection writes CreatedAt, the update collection writes UpdatedAt. Both rows are shown in the table below and marked accordingly.

Mapping Type

Source Field (iPaaS.com)

Destination Field (Adobe Commerce/Magento 2)

Description

Field

Sku

Sku

Required. The product's SKU, and the value stored as the external ID linking the two systems.

Field

Name

Name

Required. The product name shown in the catalog and on the storefront.

Static

"4"

AttributeSetId

Required. Placeholder value — replace during implementation: the ID of the stock Default attribute set in a standard Magento installation. Confirm it is the correct set for the store and replace it if not. The set must already exist, and cannot be changed on a product after creation.

Dynamic Formula

CoalesceToDecimal(DefaultPrice,SalePrice)

Price

Required. The product's regular selling price, taken from the default price and falling back to the sale price.

Static

"simple"

TypeId

Required. Fixed for every product created by this collection.

Dynamic Formula

if ( GetCustomFieldValue(CustomFields, "Kit Item") == "True" ) { var result = await SumKitParentQuantityAsync("available",Id); var result2 = Floor(result); (result2 <= 0 ? return false; : return true;) } else { var result = await SumInventoryForProductAsync(Id); var result2 = Floor(result); (result2 <= 0 ? return false; : return true;) }

StockItemIsInStock

Required. Whether the storefront treats the product as in stock, derived from the kit component total for kits and from the summed inventory otherwise.

Lookup Translation

Lookup Translation: M2 Product Status From iPaaS

Status

Recommended. Whether the product is enabled or disabled in Magento. An unmatched status sends no value and Magento applies its own default, silently.

Static

"4"

Visibility

Recommended. Magento's Catalog, Search setting, so the product appears in both category browsing and search results. Applies to every product in the collection.

Dynamic Formula

Coalesce(Weight, "1")

Weight

Recommended. The product weight, falling back to 1 when the source product has no weight recorded.

Dynamic Formula

if ( GetCustomFieldValue(CustomFields, "Kit Item") == "True" ) { return await SumKitParentQuantityAsync("available",Id); } else { var result = await SumInventoryForProductAsync(Id); return Floor(result); }

StockItemQty

Recommended. The product's on-hand quantity: the kit component total for kits, otherwise the summed inventory rounded down to a whole number.

Lookup Translation

Lookup Translation: M2 Product Tax Class From iPaaS

TaxClassId

Recommended. The product's tax class. A class with no explicit row is caught by the translation's fallback row and taxed as Taxable Goods. Confirm the IDs against the store.

Dynamic Formula

var keepExisting = new List<int> { -1 }; var exCategories = await ConvertCategoriesToMagentoIdsAsync(Categories); (GetCustomFieldValue(CustomFields, "Parent Item") == "True" ? return keepExisting; : return exCategories;)

CategoryIds

Optional. Resolves the product's iPaaS.com categories to Magento category IDs. When Parent Item is True, existing Magento category assignments are left untouched instead. A category that cannot be matched is simply not assigned.

Dynamic Formula

(SalePrice < DefaultPrice && SalePrice > 0) ? SalePrice : null

SpecialPrice

Optional. The promotional price, set only when the sale price is both below the default price and greater than zero.

Dynamic Formula

GetCustomFieldValue(CustomFields, "Parent Last Cost")

Cost

Optional. The product's cost attribute. A cost supplied on the add collection does not carry over to the update — map it on both halves of the pair where cost matters.

Field

Parent Always In Stock

AlwaysInStockOverride

Optional. Forces the product to remain in stock regardless of the calculated quantity.

Field

Parent URL Key Method

UrlKeyMethodOverride

Optional. Controls how the product's storefront URL key is generated in Magento.

Field

Magento PriceTier_FormattedData

Pricing_6 (custom field)

Optional. Carries customer-group tier pricing. Placeholder value — replace during implementation: the destination field Pricing_6 targets Magento customer group 6 in the store the template was built from. Create one Pricing_ field per customer group in your own store that should receive tier pricing, named for that group's own identifier; a store with no group 6 never receives these prices.

Dynamic Formula

CurrentDateTime()

CreatedAt

Optional. Add collection only. Stamps the product's created date with the time the transfer ran.

Dynamic Formula

CurrentDateTime()

UpdatedAt

Optional. Update collection only. Stamps the product's updated date with the time the transfer ran.

Add / Update Adobe Commerce/Magento 2 Simple Product Inventory FROM iPaaS.com (Child)

iPaaS.com data type: Product Inventory

Neither the add nor the update child carries a mapping filter, and both map the same three fields identically. They inherit the product from the transfer above them, so they need no product-existence condition of their own — that condition belongs only to the standalone inventory collections, which have no transfer above them.

Mapping Type

Source Field (iPaaS.com)

Destination Field (Adobe Commerce/Magento 2)

Description

Lookup Translation

Lookup Translation: M2 Product Inventory Source Code From iPaaS

SourceCode

Required. Resolves which Magento inventory source the quantity is written to. An inventory row cannot be written without a valid source code.

Dynamic Formula

if ( GetCustomFieldValue(Parent.CustomFields, "Kit Item") == "True" ) { return await SumKitParentQuantityForSingleLocationAsync("available", Parent.Id, LocationId); } else { return Floor(QtyAvailable.Value); }

Quantity

Required. The quantity at the location being processed, rounded down to a whole number. For a product whose Kit Item custom field is True, the figure is instead totalled from the kit's components at that same single location.

Dynamic Formula

decimal result = 0M; if ( GetCustomFieldValue(Parent.CustomFields, "Kit Item") == "True" ) { result = await SumKitParentQuantityForSingleLocationAsync("available", Parent.Id, LocationId); } else { result = QtyAvailable.Value; } (Floor(result) <= 0 ? return 0; : return 1;)

Status

Required. The in-stock flag at that source, derived from the same figure used for the quantity. 0 is out of stock, 1 is in stock.

Add / Update Adobe Commerce/Magento 2 Simple Product Unit FROM iPaaS.com (Child)

iPaaS.com data type: Product Unit

Mapping Filter

!(Parent.Sku  ==  "ADM-TL2")

Both the add and the update child carry this identical filter and map the same four fields. The filter excludes units belonging to one specific parent SKU.

Placeholder value — replace during implementation: the excluded parent SKU ADM-TL2 is an example exclusion carried in the template. Replace it with the SKUs the store actually needs to exclude, or remove the exclusion if it has no meaning in the catalog.

Mapping Type

Source Field (iPaaS.com)

Destination Field (Adobe Commerce/Magento 2)

Description

Field

Name

UnitName

Required. The unit's name, for example Each, Case, or Pallet.

Field

Conversion

UnitConversion

Required. How many stocking units make up one of this unit.

Field

DefaultPrice

UnitPrice

Recommended. The price for this unit of measure.

Dynamic Formula

var customOverride = GetCustomFieldValue(CustomFields, "Parent Alternate Unit Barcode"); if (customOverride != null && customOverride != "" && Parent.TrackingMethod != "Variant") { return ChildBarcodeOverrideField("upc_code",customOverride); } else { return null; }

UnitBarcodeParentOverride

Optional. Writes an alternate barcode onto the Magento product this unit belongs to, when the Parent Alternate Unit Barcode custom field is populated and the parent is not a variant record. Placeholder value — replace during implementation: the target attribute code upc_code — replace it with the attribute code the store actually uses for barcodes, if it differs. That attribute must already exist in Magento with global scope.

Lookup Translations

M2 Product Status From iPaaS

Used by the Status mapping on both parent collections.

Source Value

Destination Value

Notes

Preorder

1

Enabled — preorder items are published to the storefront.

Active

1

Enabled.

Disabled

2

The product exists in the catalog but is not shown on the storefront.

In Adobe Commerce/Magento 2, 1 means Enabled (visible and purchasable, subject to visibility and stock) and 2 means Disabled. A status with no matching row is not translated: no status value is sent, and the product is created with Magento's own default status rather than the state intended by the source record. This is silent rather than reported, so complete the translation before the first production run.

M2 Product Tax Class From iPaaS

Used by the TaxClassId mapping on both parent collections.

Source Value

Destination Value

Notes

None

0

The non-taxable class in a standard installation.

Taxable Goods

2

The stock Taxable Goods class.

Fallback row (always matches, placed last)

2

Catches every tax class not matched above.

The final row is entered as a formula whose value is always true and placed last, so any tax class not matched by the rows above it is mapped to Taxable Goods. A tax class that has no row of its own — including one that is misspelled or newly added in iPaaS.com — is therefore not skipped, it is taxed as Taxable Goods.

Subscribers or their MiSP must verify these destination IDs against their own store: custom tax classes created in Magento receive their own IDs, and the IDs above are correct only for a store using the stock classes. Add an explicit row for every tax class the catalog uses, above the fallback row, and review whether Taxable Goods is the right default.

M2 Product Inventory Source Code From iPaaS

Used by the SourceCode mapping on both inventory children. This is the same translation used by the standalone inventory collections, so a change made here affects those transfers too.

The source side is not a plain location name — each row matches the inventory record's location by resolving an iPaaS.com location name to its identifier and comparing it to the location on the record.

Source Value

Destination Value

Notes

Location matches the iPaaS.com location named MAIN

MAIN

Example row — replace both sides.

Location matches the iPaaS.com location named EAST

EAST

Example row — replace both sides.

Location matches the iPaaS.com location named STORAGE

STORAGE

Example row — replace both sides.

Placeholder value — replace during implementation: the shipped location names and the Magento source codes they point at are example values. Replace the location name inside the match condition on the source side and the source code on the destination side, editing each row in place rather than replacing the row as a whole — a bare location name on the source side breaks the lookup. Ensure exactly one row per iPaaS.com location, and confirm the mapping is one-to-one.

Error Handling

The full catalog of messages this integration produces, with causes and resolutions, is in the Adobe Commerce/Magento 2 Error Messages article. The conditions most often seen on this transfer are:

  • Error message: Attribute Set is required for new products. No attribute set ID was supplied. Resolution: confirm the static attribute set mapping is present and populated.

  • A product rejected for an unknown attribute set. The supplied ID does not exist in the target store. Resolution: correct the static value to an attribute set that exists in Magento.

  • A custom attribute that must be created with global scope. An attribute referenced by the transfer does not exist in Magento, or is not configured with global scope. Resolution: create the attribute with global scope before re-running.

  • An inventory row rejected for a missing or invalid source code. Resolution: correct the source code translation and confirm the source exists with exactly that code and casing.

  • A product transferred with no categories. The referenced categories could not be matched in Magento. Resolution: transfer the category structure first, then re-run the product.

Errors are reported under Dashboard / Integration Monitoring / Error Logs.

Testing & Validation

Test Scenarios

  1. Create a product in iPaaS.com with a tracking method of Product and confirm it arrives in Magento as a simple product with the correct SKU, name, price, status, tax class and visibility.

  2. Manually sync using the iPaaS.com Product record identifier and confirm it resolves; confirm a SKU does not.

  3. Update the product in iPaaS.com and confirm the same Magento product is updated rather than a duplicate created.

  4. Confirm the product lands in the intended attribute set, and that the set is correct before any production load, since it cannot be changed afterwards.

  5. Transfer a product with no weight and confirm it arrives with a weight of 1.

  6. Transfer a product whose iPaaS.com status has no translation row and confirm it is created with Magento's default status and no error is raised.

  7. Transfer a product whose tax class has no explicit row and confirm it is taxed as Taxable Goods through the fallback.

  8. Transfer a product with a sale price below its default price and confirm the special price is set; raise the sale price above the default and confirm it is cleared.

  9. Set Parent Item to True and confirm existing Magento category assignments are left untouched.

  10. Set Kit Item to True and confirm the stock quantity is the component total rather than the product's own inventory.

  11. Confirm the inventory child distributes quantity across every expected Magento inventory source.

  12. Confirm the unit child writes alternate units, and that a populated Parent Alternate Unit Barcode reaches the intended Magento attribute.

  13. Trigger an inventory-only movement and confirm the update collection does not re-send the full product payload.

Validation Checklist

  • The static attribute set ID matches an attribute set that exists in the store, and is the intended one.

  • The static visibility value is the intended default for every product in the collection.

  • The product status and tax class translations cover every value the catalog uses, and the tax class IDs match the store.

  • The inventory source code translation has exactly one row per iPaaS.com location, one-to-one, with match conditions intact.

  • The example excluded SKUs have been replaced or removed in both the parent and the unit filters.

  • The barcode target attribute code matches the store's own, and that attribute exists with global scope.

  • Every mapping change has been mirrored across both the add and the update collection.

  • The category structure has been transferred before products.

Additional Notes

  • The add and update collections are deliberately split and must not be configured as add-and-update. Mirror every change across the pair; divergence produces products whose values change the first time they are updated.

  • Cost does not carry over from the add collection to the update collection. Where cost matters it must be supplied on both.

  • An unmatched product status and an unmatched tax class both resolve silently rather than raising an error, so both translations should be audited against the catalog before go-live.

  • Validate dynamic formulas, static values and translation changes in a staging environment before enabling automatic transfers in production.

Related Documents

Did this answer your question?