When do I need a callback?

Callbacks get used to converting found values of a CSV file into the required types, which must then get stored in the database.

The default CSV format of Magento 2 allows, e.g., the following values:
  • Catalog

  • Search

  • Catalog, Search

  • Not Visible Individually

Visibility column:

The Visibility column expects integer values, those values cannot get stored in the corresponding database column.

  • A callback converts the string to the correct value type; for the Visibility column, the class TechDivision\\Import\\Product\\Callbacks\\VisibilityCallback already exists.

Default callbacks to convert the standard Magento 2 attributes found in a CSV file get provided by default.

When a new custom attribute gets added, e.g., a setup script, Pacemaker Import Community tries to find the best matching callback depends on the attributes frontend_input value.

Pacemaker Import Community provides the following frontend_input type callbacks by default:
  • select

  • multiselect

  • boolean

Callbacks for additional input types will be part of upcoming releases and can be used or implemented by developers using Pacemaker Import Community in their project at any time.

A callback is necessary to manipulate a VALUE of a specific column per row of a CSV file.

Please note that a custom callback replaces the default callback and is not appended.

How to implement a callback?

To implement a callback, extend the abstract class TechDivision\Import\Callbacks\AbstractCallback.

The callback handle() method expects the calling observer as a parameter; in return providing the getAttributeValue() method allows you to access the value to be processed.


The callback must return the processed value so that the following callbacks can also process it:

namespace TechDivision\Import\Product\Callbacks;

use TechDivision\Import\Observers\AttributeCodeAndValueAwareObserverInterface;

 * A callback implementation that converts the passed visibility.
 * @author    Tim Wagner <>
 * @copyright 2016 TechDivision GmbH <>
 * @license Open Software License (OSL 3.0)
 * @link
 * @link
class VisibilityCallback extends AbstractCallback

     * Will be invoked by a observer it has been registered for.
     * @param \TechDivision\Import\Observers\AttributeCodeAndValueAwareObserverInterface|null $observer The observer
     * @return mixed The modified value
    public function handle(AttributeCodeAndValueAwareObserverInterface $observer = null)

        // set the observer

        // replace the passed attribute value into the visibility ID
        return $this->getSubject()->getVisibilityIdByValue($observer->getAttributeValue());
  • The callback key is the column name; this callback must get called.

  • The callback gets called for each column visibility for each row of the processed CSV file.