Waarom integraties essentieel zijn
Een webshop staat niet op zichzelf. Je hebt te maken met:
- ERP voor boekhouding en orderbeheer
- PIM voor productinformatie
- WMS/Fulfilment voor warehouse operaties
- Payment providers
- Marketing tools
Handmatig data overzetten tussen systemen schaalt niet. Integraties automatiseren deze datastromen.
Integratie-architectuur kiezen
Direct vs Middleware
Directe koppeling:
Magento communiceert rechtstreeks met het externe systeem.
- ✓ Eenvoudiger te implementeren
- ✓ Minder componenten
- ✗ Tight coupling
- ✗ Moeilijker te onderhouden
- ✗ Elk systeem vereist custom code
Via Middleware (iPaaS):
Een tussenlaag (Alumio, Channable, Make) orchestreert de datastromen.
- ✓ Loose coupling
- ✓ Centrale monitoring
- ✓ Herbruikbare transformaties
- ✓ Makkelijker nieuwe systemen toevoegen
- ✗ Extra kosten
- ✗ Extra complexiteit
Onze aanbeveling: Voor enterprise setups en meerdere integraties is middleware de betere keuze. Voor eenvoudige, single-purpose koppelingen kan direct prima werken.
Magento 2 API basics
REST API
Magento biedt een uitgebreide REST API voor alle standaard operaties:
- Products: CRUD, inventory, media
- Orders: Create, update, ship, invoice
- Customers: CRUD, addresses, groups
- Categories: CRUD, assignments
Endpoint structuur:
``
GET /rest/V1/products/{sku}
POST /rest/V1/products
PUT /rest/V1/products/{sku}
DELETE /rest/V1/products/{sku}
`
GraphQL API
Nieuwer en efficiënter voor frontend toepassingen:
- Vraag alleen data op die je nodig hebt
- Minder requests nodig
- Sterk getypeerd
API Authenticatie
Integration tokens (aanbevolen voor system-to-system):
Ga naar System > Integrations
Maak nieuwe integration
Wijs benodigde permissions toe
Activeer en bewaar tokens
OAuth (voor third-party apps):
Complexer maar veiliger voor apps die namens users handelen.
Admin/Customer tokens:
Tijdelijke tokens, minder geschikt voor integraties.
Synchronisatie strategieën
Real-time vs Batch
Real-time (event-driven):
- Trigger bij wijziging in bron-systeem
- Data direct beschikbaar
- Hogere infrastructuur load
- Complexere error handling
Batch (scheduled):
- Periodieke sync (elk uur, dagelijks)
- Efficiënter voor grote volumes
- Data niet direct up-to-date
- Eenvoudiger error handling
Hybride aanpak:
- Kritieke data (orders, voorraad) real-time
- Minder kritieke data (product content) batch
Push vs Pull
Push: Bronsysteem stuurt data naar Magento
Pull: Magento haalt data op uit bronsysteem
De beste aanpak hangt af van welk systeem de "source of truth" is voor welke data.
ERP integratie implementeren
Typische datastromen
Magento → ERP:
- Orders (na betaling of altijd)
- Klantgegevens (bij registratie/wijziging)
- Returns/credit memos
ERP → Magento:
- Voorraad updates
- Prijzen (indien ERP leading is)
- Orderstatus updates
- Factuur/pakbon data
Order export voorbeeld
`php
// Observer bij order placement
public function execute(Observer $observer)
{
$order = $observer->getEvent()->getOrder();
// Transform naar ERP formaat
$erpOrder = $this->orderTransformer->transform($order);
// Queue voor async processing
$this->messagePublisher->publish('erp.order.export', $erpOrder);
}
`
Voorraad import voorbeeld
`php
// Console command voor batch import
public function execute(InputInterface $input, OutputInterface $output)
{
// Haal data uit ERP
$stockData = $this->erpClient->getStockLevels();
foreach ($stockData as $item) {
// Update MSI source item
$sourceItem = $this->sourceItemFactory->create();
$sourceItem->setSku($item['sku']);
$sourceItem->setSourceCode('default');
$sourceItem->setQuantity($item['quantity']);
$sourceItem->setStatus($item['quantity'] > 0 ? 1 : 0);
$this->sourceItemsSave->execute([$sourceItem]);
}
}
`
PIM integratie implementeren
Wat synchroniseer je?
PIM → Magento:
- Product attributen (naam, beschrijving, specs)
- Afbeeldingen en media
- Categorie toewijzingen
- Vertalingen
Magento → PIM (optioneel):
- Sales data voor analytics
- Review/rating data
Product import strategie
Delta sync: Alleen gewijzigde producten
Timestamp tracking: Bijhouden wanneer laatst gesyncet
Checksum vergelijking: Hash van data vergelijken
Attribute mapping
PIM attributen matchen niet altijd 1:1 met Magento:
`php
$attributeMapping = [
'pim_product_name' => 'name',
'pim_description_long' => 'description',
'pim_description_short' => 'short_description',
'pim_brand' => 'manufacturer',
// Custom attributes
'pim_material' => 'material',
'pim_care_instructions' => 'care_instructions',
];
`
Fulfilment integratie
Typische datastromen
Magento → WMS:
- Orders (voor picking)
- Product master data
- Returns voor verwerking
WMS → Magento:
- Shipment confirmaties
- Tracking informatie
- Voorraad updates
- Return status
Shipment creatie voorbeeld
`php
// Webhook ontvangen van WMS
public function processShipmentConfirmation(array $data)
{
$order = $this->orderRepository->get($data['order_id']);
// Create shipment
$shipment = $this->shipmentFactory->create($order);
// Add tracking
$track = $this->trackFactory->create();
$track->setCarrierCode($data['carrier']);
$track->setTitle($data['carrier_name']);
$track->setTrackNumber($data['tracking_number']);
$shipment->addTrack($track);
$this->shipmentRepository->save($shipment);
// Send shipping email
$this->shipmentNotifier->notify($shipment);
}
`
Error handling best practices
Retry mechanisme
Niet elke API call slaagt direct. Implementeer retries:
`php
public function callWithRetry(callable $operation, int $maxRetries = 3)
{
$attempt = 0;
$lastException = null;
while ($attempt < $maxRetries) {
try {
return $operation();
} catch (TemporaryException $e) {
$lastException = $e;
$attempt++;
sleep(pow(2, $attempt)); // Exponential backoff
}
}
throw $lastException;
}
``
Dead letter queue
Berichten die na X retries nog falen, verplaats naar dead letter queue voor handmatige analyse.
Logging en monitoring
Log elke integratie actie:
- Timestamp
- Richting (in/uit)
- Systemen betrokken
- Payload (geanonimiseerd indien nodig)
- Resultaat (success/failure)
- Error details
Veelvoorkomende valkuilen
1. Geen idempotency
Als een bericht twee keer wordt verwerkt, moet het resultaat hetzelfde zijn. Check altijd of een order/product al bestaat voor je aanmaakt.
2. Tight coupling op data formaat
Externe systemen wijzigen hun API. Bouw transformaties flexibel zodat kleine wijzigingen niet alles breken.
3. Geen rate limiting
API's hebben limieten. Respecteer deze en bouw throttling in je sync processen.
4. Synchrone verwerking
Zware operaties in synchrone requests maken je shop traag. Gebruik queues.
5. Geen monitoring
Als een integratie stopt met werken, moet je dit snel weten. Implementeer health checks en alerts.
Testing strategie
Unit tests
Test transformaties en business logic geïsoleerd.
Integration tests
Test tegen sandbox/staging omgevingen van externe systemen.
End-to-end tests
Volledige flow testen: order in Magento → verwerking in ERP → voorraad update terug.
Monitoring in productie
Continu monitoren van:
- Sync lag (hoe oud is de data?)
- Error rates
- Throughput
- API response times
Conclusie
Integraties zijn complex maar essentieel. Plan zorgvuldig, kies de juiste architectuur, en investeer in monitoring en error handling. Een goed geïmplementeerde integratie bespaart uren handmatig werk en voorkomt fouten.