Backoffice webshop: Filament naast Magento of Shopify
Terug naar blog

Backoffice webshop: Filament naast Magento of Shopify

9 min leestijd

Een Filament-backoffice naast je webshop is zinvol zodra je team meer tijd kwijt is aan Excel, mail en handwerk dan aan de webshop-admin zelf. De webshop blijft verkopen. Een Laravel-applicatie met Filament neemt de processen over die niet in Magento- of Shopify-admin passen: B2B-offertes,...

Een Filament-backoffice naast je webshop is zinvol zodra je team meer tijd kwijt is aan Excel, mail en handwerk dan aan de webshop-admin zelf. De webshop blijft verkopen. Een Laravel-applicatie met Filament neemt de processen over die niet in Magento- of Shopify-admin passen: B2B-offertes, retouren, inkoop en maatwerkrapportages.

Wat is een backoffice naast je webshop precies?

Een backoffice is een aparte applicatie waarin je team werkt aan alles wat ná of naast de verkoop gebeurt. De webshop blijft de bron voor catalogus, checkout en orders. De backoffice wordt de plek waar die orders verder verwerkt worden.

Magento-admin en Shopify-admin zijn gebouwd voor één ding: een webshop beheren. Producten, categorieën, prijzen, orders, klanten. Dat doen ze goed. Maar zodra je bedrijf processen heeft die buiten "product verkopen, order verzenden" vallen, loopt het vast.

Dan zie je in de praktijk dit patroon:

  • Een gedeelde Excel voor offertes aan zakelijke klanten
  • Een mailbox met retourverzoeken die iemand handmatig afvinkt
  • Inkoopadvies op basis van een export die elke maandag opnieuw gemaakt wordt
  • Rapportages die alleen de developer kan draaien, via een SQL-query

Dat is geen software. Dat is een verzameling workarounds. Een backoffice op Laravel met Filament maakt er één applicatie van, met rechten, logging en een interface die je team zelf gebruikt.

Welke processen passen niet in Magento-admin of Shopify-admin?

Alles wat meerdere systemen raakt, eigen statussen heeft of buiten het standaard orderproces valt. Vijf voorbeelden komen we steeds weer tegen.

Orderverwerking met uitzonderingen

Standaard orderflow werkt prima voor 90% van de orders. Het probleem zit in de andere 10%. Orders die op fraude gecontroleerd moeten worden. Orders met een product dat bij een leverancier besteld moet worden. Orders die gesplitst geleverd worden vanuit twee magazijnen.

In Magento los je dat op met extensies of een custom module per uitzondering. In Shopify met apps en Shopify Flow. Dat werkt tot het niet meer werkt. In een backoffice bouw je één orderscherm met de statussen die jouw bedrijf echt gebruikt.

B2B-offertes

Een zakelijke klant vraagt 400 stuks met een afwijkende levertijd en staffelprijs. Dat past niet in een winkelwagen. Magento heeft B2B-functionaliteit, inclusief quotes in Adobe Commerce. Maar de goedkeuringsflow, marges per accountmanager en een PDF in jouw huisstijl wil je meestal toch zelf bepalen.

In een Filament-backoffice is een offerte een resource met regels, statussen en een action "omzetten naar order". Die action maakt via de API een order of draft order aan in de webshop.

Retouren

Een retour raakt de webshop (creditnota of refund), het magazijn (ontvangst en keuring) en de klantenservice (communicatie). Standaard retourfuncties in de admin dekken één van die drie. Gespecialiseerde tools zoals Returnless doen het klantportaal goed. De interne keuring en de afspraken met leveranciers blijven vaak toch handwerk. Daar past een backoffice.

Inkoop

Inkoop is per definitie iets wat buiten de webshop gebeurt. Je wilt verkoopcijfers uit de shop, voorraad uit je WMS en levertijden van leveranciers combineren tot een inkoopvoorstel. Geen van beide webshop-admins is daarvoor bedoeld.

Maatwerkrapportages

Marge per kanaal, retourpercentage per leverancier, omzet per accountmanager. De standaard rapporten tonen omzet en orders. Zodra je data uit ERP, WMS en webshop wilt combineren, heb je een eigen datalaag nodig. Filament-widgets en tabellen met filters geven je team daar zelf toegang toe, zonder SQL.

Wat houd je in de webshop en wat haal je eruit?

De vuistregel: alles wat de klant ziet of de checkout raakt, blijft in de webshop. Alles wat intern is en meerdere systemen combineert, gaat naar de backoffice.

ProcesIn Magento/Shopify houdenNaar Filament-backoffice
Catalogus en productcontentJa (of een PIM)Alleen als je een eigen PIM bouwt
Checkout en betalingenAltijdNooit
Prijsregels voor B2CJaNee
B2B-offertes en goedkeuringAlleen bij simpele flowsJa, bij afwijkende flows
Orderstatus en uitzonderingenStandaardflowUitzonderingen en interne statussen
Retourkeuring en afhandelingRefund en creditnotaKeuring, leveranciersclaims, statussen
InkoopvoorstellenNeeJa
Rapportages over meerdere systemenNeeJa
Klantaccount en orderhistorieJaAlleen voor interne inzage

De eerlijke versie: een backoffice is geen excuus om de webshop uit te kleden. Bouw nooit je eigen checkout of prijslogica in de backoffice als de webshop dat al goed doet. Je verdubbelt dan je onderhoud. Het doel is de webshop ontlasten, niet vervangen.

Wanneer is het juist geen goed idee? Als je ordervolume laag is en de uitzonderingen op twee handen te tellen zijn. Dan is een goed ingerichte Shopify Flow of een paar Magento-extensies goedkoper. Een backoffice verdient zich terug op volume en herhaling.

Hoe ziet de architectuur eruit?

Een Laravel-applicatie met Filament als interface, gekoppeld aan de webshop via API en webhooks, met queues voor alles wat niet direct hoeft. De webshop blijft de bron van waarheid voor orders. De backoffice voor alles wat je zelf toevoegt.

Concreet bestaat het uit vier lagen:

  1. Koppeling: REST of GraphQL naar Magento, de GraphQL Admin API naar Shopify.
  2. Events: webhooks of polling om wijzigingen binnen te halen.
  3. Queues: jobs die syncen, verrijken en terugschrijven, gemonitord met Laravel Horizon.
  4. Interface: Filament-resources, actions en widgets voor je team.

Meer over het koppelen van systemen staat op onze pagina over Laravel-integraties.

Webhooks: Shopify versus Magento

Shopify en Magento verschillen hier flink. Shopify stuurt webhooks voor vrijwel elk event: order aangemaakt, betaald, geannuleerd, product gewijzigd. Volgens de Shopify-documentatie moet je app binnen vijf seconden antwoorden. Faalt dat, dan probeert Shopify het tot acht keer binnen vier uur. Blijft het falen, dan verwijdert Shopify de webhook-subscription.

Wat dit betekent: ontvang de webhook, valideer hem, zet hem op een queue en antwoord direct met een 200. Doe nooit het echte werk in de request zelf. De HMAC-check is kort:

php
$calculated = base64_encode(
    hash_hmac('sha256', $request->getContent(), config('services.shopify.webhook_secret'), true)
);

abort_unless(
    hash_equals($calculated, (string) $request->header('X-Shopify-Hmac-Sha256')),
    401
);

ProcessShopifyWebhook::dispatch($request->header('X-Shopify-Topic'), $request->all());

return response()->noContent();

Magento Open Source heeft geen ingebouwde uitgaande webhooks. Adobe Commerce Webhooks bestaat als Adobe-extensie, maar alleen voor Adobe Commerce. Voor Open Source heb je twee routes:

  • Polling: elke paar minuten orders ophalen via de REST API met een filter op updated_at. Simpel en robuust.
  • Eigen events: een kleine Magento-module met een observer die bij een orderwijziging een bericht op de queue zet of een call naar de backoffice doet. Sneller, maar meer code in Magento.

Wij kiezen meestal polling als basis en events alleen waar seconden ertoe doen. Polling herstelt zichzelf na een storing. Een gemist event niet. Hoe je inkomende webhooks robuust verwerkt, lees je in webhooks verwerken in Laravel.

Queues en Horizon

Alles wat met een externe API praat, hoort in een queue. API's zijn traag, hebben rate limits en vallen af en toe om. Shopify rekent bij de GraphQL Admin API met query cost per plan. Wie dat negeert, krijgt bij Black Friday throttling op precies het verkeerde moment.

Laravel-queues met Redis en Horizon geven je:

  • Retries met backoff bij een API-fout
  • Aparte queues voor urgent (orders) en bulk (voorraad, rapportages)
  • Inzicht in mislukte jobs, zonder logbestanden door te spitten

Een uitgewerkt voorbeeld staat in Laravel queues voor e-commerce orderverwerking.

Sync: wat kopieer je en wat lees je live?

Kopieer alleen wat je nodig hebt om te filteren, te rapporteren of eigen data aan te koppelen. Lees de rest live uit de webshop.

DataStrategieWaarom
Orders (kopvelden, status, totaal)Lokaal kopiërenFilteren, rapporteren, eigen statussen koppelen
OrderregelsLokaal kopiërenNodig voor retouren, inkoop en marge
KlantgegevensMinimaal kopiërenAVG: alleen wat je echt gebruikt
ProductcatalogusAlleen SKU, naam, inkoopprijsVolledige content blijft in shop of PIM
VoorraadUit WMS of ERP, niet uit de shopDe shop is zelden de bron van voorraad
BetaalgegevensNooitBlijft bij de PSP en de webshop

Twee regels houden de sync beheersbaar:

  • Eén bron van waarheid per veld. Orderstatus komt uit de shop, retourstatus uit de backoffice. Nooit allebei schrijven op hetzelfde veld.
  • Idempotente jobs. Een webhook die twee keer binnenkomt, mag geen twee retouren aanmaken. Werk met unieke sleutels op extern ID.

Waarom Filament en niet een standaard admin of SaaS-tool?

Filament geeft je een complete admin-interface op Laravel, zonder licentiekosten en zonder dat je bij een vendor-roadmap vastzit. Je bouwt precies de schermen die je team nodig heeft.

Filament is open source (MIT), gebouwd op Livewire, Alpine.js en Tailwind CSS. De huidige 5.x-lijn draait op PHP 8.2+ en Laravel 11.28+. Resources, tabellen met filters, formulieren, actions, notificaties en dashboard-widgets zitten erin. Wat je bouwt, is het domein: offertes, retouren, inkoop.

Onze eigen backoffice draait ook op Filament: blog, leads, afspraken, cases en een database met Magento-shops. Dezelfde aanpak gebruiken we voor backoffices naast webshops.

Alternatieven bestaan. Een low-code tool zoals Retool is sneller voor een eerste dashboard, maar je betaalt per gebruiker en je logica zit verspreid over een externe tool. Een Magento-module of Shopify-app houdt alles in de webshop, maar maakt die zwaarder en upgrades lastiger. Een vergelijking met Laravel Nova staat in Laravel Nova vs Filament.

OptieSterk inZwak in
Uitbreiding in Magento-adminData direct beschikbaarUpgrades zwaarder, admin trager
Shopify-app of FlowSnel voor simpele automationsBeperkt bij eigen statussen en schermen
Low-code (Retool e.d.)Snel eerste versieKosten per gebruiker, logica buiten je codebase
Laravel + FilamentVolledig maatwerk, eigen data, geen licentieVraagt developers voor bouw en onderhoud

Wat kost een Filament-backoffice?

Dat hangt af van het aantal processen en koppelingen, niet van Filament zelf. Filament is gratis. Je betaalt voor bouwtijd, hosting en onderhoud.

De rekenstap, als rekenvoorbeeld: stel dat drie medewerkers elk een uur per dag kwijt zijn aan retouren en offertes in Excel en mail. Dat is ruim 700 uur per jaar. Bij een interne kostprijs van €40 per uur is dat zo'n €28.000 per jaar. Plus de fouten die niemand meetelt.

Begin klein. Eén proces, één koppeling, live binnen een paar weken. Breid daarna uit. Een backoffice die in één keer alles moet doen, wordt nooit af. Wil je klanten ook toegang geven tot offertes of retouren, dan ligt een klantportaal in Filament voor de hand als volgende stap.

Samengevat

  • Houd catalogus, checkout, betalingen en B2C-prijslogica in Magento of Shopify.
  • Verplaats processen met eigen statussen en meerdere systemen naar een Filament-backoffice: offertes, retouren, inkoop, rapportages.
  • Shopify: webhooks binnen vijf seconden accepteren en verwerken via een queue.
  • Magento Open Source: polling via REST als basis, eigen events alleen waar het nodig is.
  • Eén bron van waarheid per veld en idempotente jobs voorkomen sync-chaos.
  • Start met één proces en bouw uit op basis van gebruik.

Veelgestelde vragen

Vervangt een Filament-backoffice mijn ERP?

Nee, meestal niet. Een backoffice vult het gat tussen webshop en ERP met processen die in geen van beide passen. Boekhouding, facturatie en voorraadwaardering blijven in het ERP. Voor kleinere bedrijven zonder ERP kan een backoffice wel een deel van die rol overnemen.

Kan Filament direct op de Magento-database werken?

Technisch kan het, maar wij raden het af. Je omzeilt dan Magento's businesslogica, indexers en caches. Werk via de REST- of GraphQL-API en sla in de backoffice alleen je eigen data op. Lezen uit een replica voor rapportages is wel een optie.

Werkt dit ook met Shopify Plus?

Ja. De koppeling loopt via de GraphQL Admin API en webhooks, op elk Shopify-plan. Plus geeft vooral meer API-ruimte en B2B-functies in Shopify zelf. Dat verschuift de grens van wat je in de shop houdt, niet de architectuur.

Hoe lang duurt het om een backoffice te bouwen?

Een eerste proces met één koppeling staat in de praktijk binnen enkele weken live. Elk volgend proces gaat sneller, omdat koppeling, rechten en queues er al liggen. Het grootste werk zit in de sync-logica, niet in de schermen.

Wat gebeurt er als de webshop-API even niet bereikbaar is?

Dan blijven jobs in de queue staan en worden ze later opnieuw geprobeerd. Daarom draait alle communicatie met de webshop via queues met retries. Je team kan in de backoffice gewoon doorwerken met de data die er al is.

Wil je weten welke processen bij jou in een backoffice horen? Neem contact op, dan kijken we er samen naar.

Ruthger Idema

Geschreven door Ruthger Idema

15+ jaar ervaring in e-commerce development. Gespecialiseerd in Magento, Shopify en Laravel maatwerk.

Meer over ons team →
Deel dit artikel:

Wil je jouw e-commerce naar het volgende niveau?

Plan een vrijblijvend gesprek met onze experts over Magento, Shopify of Laravel maatwerk.

Plan een Tech Check