# elgentos commerce & configurators > Magento 2 e-commerce bureau gespecialiseerd in webshop ontwikkeling, B2B productconfigurators en Hyvä Themes. Gevestigd in Groningen, Nederland. ## Pagina's ### [Team | elgentos commerce & configurators](https://elgentos.nl/team) Ontdek onze 3 teams, elk met een eigen project manager. Leer de unieke eigenschappen van onze teamleden kennen en ervaar ons persoonlijke aanpak. Team Alleen ga je sneller, samen kom je verder Ons bedrijf is opgedeeld in 3 teams, met elk hun eigen project manager. Zo heb je altijd een vast team met een vast aanspreekpunt! Ontdek hieronder welke teamleden welke eigenaardigheden, euh, eigenschappen bezitten. ### [Magento Total Care: vast tarief webshop onderhoud](https://elgentos.nl/magento-total-care-update-abonnement) Ontdek ons Magento Total Care abonnement: vast tarief voor webshop onderhoud, gescheiden van feature development. Zorgeloos en kosteneffectief. Magento Total Care abonnement Magento-onderhoud dat volledig gescheiden is van feature-ontwikkeling. Een duidelijke scheidslijn tussen operationele kosten en kapitaalinvesteringen, aangeboden voor een vast maandbedrag. Met het Magento Total Care abonnement voeren we alle Magento & extensie updates, security patches en infra upgrades maandelijks uit — tegen een vaste prijs per maand. Door onderhoud te scheiden van feature development blijft het development team gefocust op nieuwe, omzetverhogende functionaliteit, terwijl we separaat zorgen dat de basis stabiel en veilig blijft. In de meeste e-commerce organisaties vloeien onderhoud en ontwikkeling door elkaar. Het gevolg: ontwikkelteams raken overbelast met onderhoudstaken, nieuwe features lopen vertraging op, en tech debt stapelt zich op. Magento Total Care voorkomt dat. Wij zorgen dat de codebase altijd up-to-date is. Feature development behoudt zijn eigen ritme en snelheid, zonder dat onderhoudsissues de planning blokkeren. De voordelen op een rijtje: Voorspelbare maandlasten - vaste prijs per maand, geen losse facturen voor de operatie Altijd up-to-date - alle Magento-core- en extensie-updates worden zo snel mogelijk verwerkt Snellere time-to-market - feature development loopt niet meer vast op onderhoud Security hoog in het vaandel – proactief monitoren en direct patchen van kwetsbaarheden om risico’s te minimaliseren Transparantie - elke aanpassing zichtbaar in GitLab, volledig traceerbaar Wanneer kunnen we starten? Voordat we dit abonnement kunnen starten moeten we eerst een compleet beeld hebben van de huidige situatie. Tijdens de tweede fase, discover & build, van ons proces voeren we een uitgebreide audit uit van de bestaande situatie. Of, als het gaat om een new build, dan bepalen we de MVP. Op basis van de audit of MVP bepalen we op vier pijlers de staat van de shop als het abonnement in gaat. Deze vier pijlers zorgen dat de maandprijs objectief en eerlijk wordt vastgesteld. Ook is het zo dat we gedurende de looptijd kunnen werken aan de vier pijlers. Door de shop minder complex te maken, of dichter bij onze bekende stack, kan de prijs van het abonnement omlaag gaan. Dit evalueren we jaarlijks. Dit zijn de vier pijlers waarop wij de staat van het project beoordelen: Hoeveel code, producten, klanten en orders bevat de shop? Kwantiteit Hoe goed is de bestaande codebase opgebouwd? Kwaliteit Hoeveel maatwerk, integraties en afwijkingen zijn aanwezig? (de belangrijkste pijler) Complexiteit Hoe goed kennen we de gebruikte stack en infrastructuur? Familiariteit Wat je krijgt Proactieve upgrades; Security patches binnen zo snel mogelijk geïmplementeerd; Maandelijkse rapportage met changelog; Kwaliteitsbewaking via geautomatiseerde tests; Een vast onderhoudsritme; Jaarlijkse her-audit en adviesrapport; Eventuele urenafname op retainer voor supportvragen; Volledige transparantie via GitLab. Doorontwikkeling loopt parallel Feature development valt buiten dit onderhoudsabonnement. Nieuwe functionaliteit, redesigns of uitbreidingen worden dus niet beperkt door het maandelijkse onderhoud. Daardoor blijft capaciteit voor groei beschikbaar, zonder dat onderhoud prioriteit opeet. De voordelen per rol Voor het managementteam Voorspelbare kosten in plaats van ad-hoc onderhoud; Lagere risico’s op security-incidenten en omzetverlies door downtime; Continu inzicht in technische status, backlog en investeringsbehoefte; Onderbouwde besluitvorming dankzij maandelijkse rapportages en jaarlijkse audit; Ontzorging van operationele tech-stress, zodat focus kan blijven op groei en strategie; Opsplitsen van kosten (opex) en investeringen (capex) t.b.v. fiscale optimalisatie. Voor de e-commerce manager Geen vertraging meer in sprintplanning door onverwachte onderhoudstaken; Upgrades en patches worden opgepakt zonder dat er tickets nodig zijn; Altijd een up-to-date shopomgeving voor conversie- en UX-optimalisaties; Volledig inzicht in wat er gebeurt via Gitlab: issues, commits, releases, changelog; Duidelijke scheiding tussen onderhoud en doorontwikkeling → feature-budget blijft beschikbaar; Snellere time-to-market omdat het team niet hoeft te wisselen tussen feature-werk en tech debt. Prijsmodel De maandprijs wordt bepaald na audit, op basis van de vier pijlers. Indicatieve bandbreedtes: Lage complexiteit: €1500 – €2000 / maand Gemiddelde complexiteit: €1750 – €3250 / maand Hoge complexiteit: €2750 – €7000 / maand Elke variant omvat alle upgrades en patches zonder meerwerk. Transparantie als standaard Alles wat we doen, staat in ons issue management systeem Gitlab. Elke issue, commit en release is zichtbaar. Je weet zo precies: wat er is geüpdatet; waarom het is gedaan; wat de impact is geweest. Maandelijks ontvang je een rapport met een changelog, security-status en aanbevelingen voor volgende verbeteringen. Klaar voor voorspelbaar onderhoud en snellere groei? Lets go! ### [privacy-statement](https://elgentos.nl/privacy-statement) Privacy statement Elgentos B.V. (hierna ook 'wij') behandelen jouw persoonsgegevens met grote zorg. In dit Privacy Statement beschrijven we hoe jouw persoonsgegevens worden verwerkt bij het bezoeken van onze website. Wie is verantwoordelijk voor het verwerken van mijn persoonsgegevens? Wij zijn verantwoordelijk voor de verwerking van jouw persoonsgegevens bij het bezoeken van onze website. Voor vragen die je hebt over het verwerken van je persoonsgegevens kun je ons bereiken op het algemene postadres of via email: Organisatie: Elgentos B.V. Adres: Hereweg 120-4 120 Postcode: 9725AK Plaats: Groningen Welke persoonsgegevens worden verwerkt? Als jij onze website bezoekt verzamelen en gebruiken wij verschillende persoonsgegevens van jou. Dat zijn voor een belangrijk deel persoonsgegevens die jij zelf opgeeft maar ook bepaalde gegevens die wij verzamelen enkel omdat je de website bezoekt. Het betreft de volgende persoonsgegevens: IP-adres Gegevens over de activiteit van de gebruiker op uw website Wanneer u onze website bezoekt, worden er meestal cookies op uw computer geplaatst. Cookies stellen de website in staat om uw computer te onthouden. Als u dit niet wilt, kunt u uw browser instellen om alle cookies te weigeren of om een bericht te ontvangen wanneer er een cookie wordt verzonden. In onze cookieverklaring leggen we uit welke cookies we gebruiken en voor welk doel. Voor welke doeleinden wordt mijn persoonlijke gegevens gebruikt? We gebruiken uw gegevens uitsluitend voor de volgende doeleinden: Uw website verbeteren Op welke grondslag is deze verwerking gebaseerd? Wij verwerken jouw persoonsgegevens op grond van de door jou gegeven toestemming (bijvoorbeeld als jij ons toestemming geeft voor het toesturen van uitnodigingen voor evenementen of nieuwsbrieven), de uitvoering van de overeenkomst (bijvoorbeeld bij het verwerken en toesturen van een door jou op onze website besteld product of dienst), een wettelijke verplichting die op ons kan rusten of op grond van een gerechtvaardigd belang (bijvoorbeeld voor het verbeteren van onze website). Bij die laatste grondslag kijken wij niet alleen goed naar wat dat belang is maar maken wij ook een afweging tussen dit belang en de privacybelangen van de betrokkenen. Ingeval jij toestemming hebt gegeven voor de verwerking van jouw persoonsgegevens dan kun je deze toestemming altijd intrekken door een mail naar ons te sturen (zie de contactinformatie op onze website). De intrekking van de toestemming doet niks af aan de rechtmatigheid van de verwerking tot het moment van de intrekking. Worden mijn persoonsgegevens gedeeld met derden? Wij delen jouw persoonsgegevens uitsluitend met andere partijen als dit nodig is voor de uitvoering van onze werkzaamheden. Daarbij valt te denken aan softwareleveranciers of aan partijen die onze website beheren. Worden mijn persoonsgegevens gedeeld met derden? Wij delen jouw persoonsgegevens uitsluitend met andere partijen als dit nodig is voor de uitvoering van onze werkzaamheden. Daarbij valt te denken aan softwareleveranciers of aan partijen die onze website beheren en de gegevens opslaan. Als wij derde partijen inschakelen maken wij met hen de benodigde schriftelijke afspraken over de verwerking en beveiliging van jouw persoonsgegevens. Worden mijn persoonsgegevens overgedragen naar landen buiten de Europese Economische Ruimte? Wij proberen jouw persoonsgegevens alleen binnen de Europese Economische Ruimte (EER) te verwerken en door jouw gegevens zoveel mogelijk op een server in de EER op te slaan. Soms is dat niet mogelijk. In dat geval nemen wij de nodige organisatorische, technische en contractuele maatregelen om een passend beschermingsniveau te bieden voor de bescherming van jouw persoonsgegevens. Hoe worden mijn persoonsgegevens beschermd? Wij nemen organisatorische en technische maatregelen om je persoonsgegevens te beschermen tegen niet geautoriseerde toegang, verlies en welke vorm van onrechtmatige verwerking dan ook. Wij beoordelen periodiek of de bestaande maatregelen nog steeds passend zijn dan wel dat extra of andere maatregelen nodig zijn. Hoe lang worden mijn gegevens bewaard? Wij bewaren jouw persoonsgegevens niet langer dan noodzakelijk voor de doeleinden waarvoor wij jouw persoonsgegevens gebruiken. Hieronder zie je de bewaartermijnen die we hanteren in het geval je geen gebruik meer maakt van onze diensten. IP adres: 12 maanden Gegevens over de activiteit van de gebruiker op je website: 12 maanden Als jij aangeeft dat je niet langer (elektronische) nieuwsbrieven of uitnodigingen voor evenementen wilt ontvangen, kun je ons ook vragen jouw gegevens te verwijderen. In dat geval verwijderen wij jouw persoonsgegevens. Wat zijn mijn privacy rechten? Op basis van de AVG heb je het recht om de persoonsgegevens die wij verzamelen in te zien en om persoonsgegevens waarin feitelijke onjuistheden staan te corrigeren. Daarnaast kun je ook verzoeken indienen tot het verwijderen van persoonsgegevens, de verwerking van je persoonsgegevens te beperken, en om bezwaar aan te tekenen tegen de verwerking van jouw persoonsgegevens. Tot slot heb je, wederom onder bepaalde omstandigheden, het recht op overdraagbaarheid van je persoonsgegevens. Als je van deze rechten gebruik wilt maken, neem dan contact op. Je vindt onze contactgegevens op onze website. Als je niet tevreden bent met hoe wij jouw persoonsgegevens verwerken en wij hier samen niet uitkomen, kun je een klacht indienen bij de Autoriteit Persoonsgegevens. Wat is verder nog belangrijk? Dit privacy statement is niet van toepassing op websites van derden die via onze website benaderd kunnen worden. Wij adviseren je het privacy- en cookiestatement van deze websites te lezen. Voordat je van die websites gebruikmaakt. Wij kunnen wijzigingen aanbrengen in dit privacy statement. We raden je daarom aan dit privacy statement geregeld te raadplegen. Dit privacy statement is voor het laatst bijgewerkt op 26-09-2024 ### [Nieuws vanuit de organisatie](https://elgentos.nl/nieuws) Nieuws vanuit de organisatie Nieuws ### [Onze werkwijze: van Meet & Greet tot Optimize & Build](https://elgentos.nl/werkwijze) Ontdek hoe wij als technische bouwpartner samenwerken: Meet & Greet, Explore & Build, Expand & Build en Optimize & Build. Samen bouwen we verder. In elke stap van onze samenwerking bouwen we verder. Dat is wat een echte technische bouwpartner doet. ### [Elgentos B2B suite - Magento B2B Platform](https://elgentos.nl/elgentos-b2b-suite) Met de Elgentos B2B Suite verander je standaard Magento in een compleet B2B platform Elgentos B2B Suite Met de Elgentos B2B Suite verander je Magento in een volwaardig B2B platform Magento als volwaardig B2B platform Magento is één van de meest flexibele e-commerceplatformen op de markt. Juist daarom wordt het veel gebruikt door B2B-organisaties met complexe processen, grote catalogi en diepe integraties. Waar Magento in uitblinkt is flexibiliteit en uitbreidbaarheid. En precies dáár bouwt de Elgentos B2B Suite op voort. De Elgentos B2B Suite voegt features gestructureerd toe bovenop Magento. Als een samenhangende set bouwstenen die Magento doorontwikkelt tot een volwaardig B2B-platform. Zo blijft Magento de stabiele kern, terwijl de B2B-logica modulair, schaalbaar en toekomstvast wordt ingericht. Waarom wij deze suite bouwen? Omdat we het probleem al jaren zien bij onze klanten. B2B-bedrijven groeien. Hun processen worden complexer. Maar hun e-commerce platform groeit niet mee. Het resultaat: Vendor lockin en geen mogelijkheid tot maatwerk (bv bij SaaS tools) maatwerk dat niet schaalbaar is businesslogica verspreid over tientallen modules tech debt die elke wijziging duur maakt geen duidelijk onderscheid tussen “Feature development” en “Maintenance” De Elgentos B2B Suite is ons antwoord daarop. Geen one-off maatwerk en dichtgetimmerd platform, maar modulaire bouwstenen die je gecontroleerd kunt uitbreiden. Wij mikken op een standaard, maar waar wel maatkwerk nodig is om het unieke koopproces van onze klanten te waarborgen. Daarnaast is de Elgentos B2B Suite ontwikkeld om de time-to-market drastisch te verkorten. In plaats van telkens opnieuw het wiel uit te vinden, bieden we een set bewezen bouwstenen die: direct inzetbaar zijn onderling op elkaar aansluiten aansluiten op Magento’s architectuur schaalbaar blijven naarmate je organisatie groeit Daardoor kun je nieuwe B2B-functionaliteit veel sneller live brengen, zonder concessies te doen aan kwaliteit, onderhoudbaarheid of toekomstige uitbreidbaarheid. Magento blijft het fundament. De Elgentos B2B Suite zorgt voor snelheid, structuur en richting. Wat zit er in de Elgentos B2B Suite? De Elgentos B2B Suite bestaat uit een groeiende set modulaire componenten die samen de basis vormen voor een volwassen B2B-platform op Magento. Elke module is zelfstandig inzetbaar, maar ontworpen om samen te werken als één geheel. Bedrijven & accounts Company Accounts Maakt van bedrijven een volwaardig onderdeel van Magento. Bedrijven als entiteit Meerdere gebruikers per organisatie Automatische koppeling op basis van e-mailadres of domein Fundament voor pricing, rechten en bestelflows B2B-prijsafspraken Company Pricing Prijsafspraken op bedrijfsniveau Ondersteuning voor staffels en klantafspraken Losgekoppeld van standaard Magento-pricing Geschikt voor ERP-gestuurde prijslogica Klantgoedkeuring Customer Approval Nieuwe accounts eerst goedkeuren Volledige controle over wie toegang krijgt Ideaal voor groothandel en afgeschermde omgevingen Afgeschermde webshop Required Login & Hide Prices Webshop alleen zichtbaar na inloggen Prijzen verbergen voor gastgebruikers Conversiegericht: login of account aanmaken verplicht Productdocumentatie Product Attachments Handleidingen, datasheets en certificaten per product Ondersteuning voor meerdere bestanden Ideaal voor technische B2B-catalogi Snel bestellen Quick Order Bestellen op SKU + aantal Upload CSV voor grotere orders Perfect voor repeat orders Grote tijdsbesparing voor vaste klanten Store Locator Store Locator Vestigingen tonen op kaart Google Maps integratie Geschikt voor dealers, verkooppunten of afhaallocaties Offertes / Projecten Offertes / projecten Meerdere orffertes per gebruiker of bedrijf Handig voor projecten, afdelingen of herhaalbestellingen BTW-weergave BTW-switcher Toon prijzen inclusief en/of exclusief btw Inzichtelijk voor zakelijke beslissers Geschikt voor internationale klanten Extra beveiliging Frontend 2FA Tweefactorauthenticatie voor klanten Extra beveiliging voor zakelijke accounts Orderreferenties Sales Order Reference Referentievelden per order Geschikt voor inkoopnummers of kostenplaatsen Voorbereid op ERP-koppelingen Catalogusrechten Catalog Permissions Producten of categorieën per klantgroep Vervanging voor standaard group-catalog modules Volledig in lijn met B2B-logica Betalen op factuur On Invoice Betalen op rekening op basis van voorwaarden Automatisch in- of uitschakelen Voorbereid op kredietchecks Roadmap: waar we naartoe werken De suite is geen eindproduct, maar een platform in ontwikkeling. Op de roadmap staan onder andere: Uitgebreide B2B-rollen & permissiematrix Contractbeheer en prijsafspraken per periode Klant-dashboards met KPI’s Diepere ERP-integraties AI-ondersteunde bestel- en adviesflow Verhuur module 👉 Bekijk de actuele roadmap hier: elgentos.nl/elgentos-b2b-suite-roadmap ### [Waarom Magento als B2B Platform?](https://elgentos.nl/waarom-magento-als-b2b-platform) Ontdek waarom Magento het ideale B2B e-commerce platform is dat meegroeit met jouw organisatie en kernoperaties. Waarom Magento als B2B platform? Waarom Magento als B2B-platform Steeds meer B2B-bedrijven zien e-commerce niet langer als een los kanaal, maar als een kernonderdeel van hun operatie. Niet iets dat “erbij” draait, maar een platform dat meegroeit met de organisatie. Daarom verschuift de focus. Niet langer alleen snelheid of eenvoud, maar vragen als: Hoe houd ik grip op mijn processen? Hoe schaal ik zonder telkens opnieuw te moeten beginnen? Hoe zorg ik dat mijn platform me ondersteunt in plaats van beperkt? In die context wordt de keuze voor een e-commerceplatform strategisch. Waar sommige oplossingen vooral uitblinken in snel starten, blinkt Magento uit in meegroeien. Naarmate processen complexer worden, klantafspraken specifieker en integraties belangrijker, blijft Magento ruimte bieden. Niet door alles dicht te zetten, maar door flexibiliteit te combineren met structuur. Magento is daarmee geen shortcut, maar een fundament: een platform dat is ontworpen voor organisaties die hun digitale kern serieus nemen en daar controle over willen houden — vandaag én over drie jaar. B2B is geen B2C met een factuurknop B2B e-commerce draait niet om conversie alleen. Het draait om processen. Denk aan: klantspecifieke prijzen en assortimentsafspraken bedrijfsaccounts met rollen en rechten offerte- en goedkeuringsflows ERP-gestuurde voorraad en prijzen lange klantrelaties met complexe afspraken Magento is vanaf de basis ontworpen om met dit soort complexiteit om te gaan. Niet door alles dicht te timmeren, maar door ruimte te geven aan hoe jouw organisatie werkt. Standaard waar het kan, maatwerk waar het moet Een belangrijk misverstand is dat Magento betekent dat alles maatwerk is. Dat is simpelweg niet waar. In de praktijk werken wij met de Elgentos B2B Suite, in deze suite zitten onder andere de volgende features: customer specific pricing bedrijfshiërarchieën en gebruikersrollen afgeschermde catalogi vaste bestel- en offerteflows integraties met ERP en PIM Deze basis maakt snelle implementatie mogelijk en voorkomt onnodige complexiteit. Het verschil met B2B SaaS zit niet in het ontbreken van standaardisatie, maar in de vrijheid om ervan af te wijken wanneer dat nodig is. Magento dwingt je niet in een vast model. Het geeft je een stevig startpunt én de ruimte om te groeien. Meer over de Elgentos B2B suite: 👉 https://www.elgentos.nl/elgentos-b2b-suite Eigenaarschap verandert alles Het grootste strategische verschil met SaaS zit niet in techniek, maar in eigendom. Bij SaaS: betaal je doorlopend licentie bouw je geen eigen IP op ben je afhankelijk van de roadmap van de leverancier stijgen kosten mee met gebruik of omzet Bij Magento: investeer je in functionaliteit die van jou blijft bepaal je zelf je ontwikkelrichting bouw je waarde op in je platform daalt de relatieve kostprijs over tijd Dat maakt Magento geen kostenpost, maar een asset. Maar: eigenaarschap vraagt om onderhoud Vrijheid betekent ook verantwoordelijkheid. Een Magento-platform moet goed onderhouden worden: security updates, compatibiliteit, performance, regressietests. Daarom werken wij met Magento Total Care: een vast onderhoudsmodel dat de operationele kant van het platform borgt. Magento Total Care zorgt voor: structurele updates en security patches monitoring en preventief onderhoud stabiliteit van koppelingen voorspelbare maandelijkse kosten Zo ontstaat een heldere scheiding tussen: OPEX → het platform veilig en stabiel houden CAPEX → gericht investeren in nieuwe functionaliteit Meer over deze aanpak: 👉 https://elgentos.nl/magento-total-care-update-abonnement Voorspelbaarheid in plaats van verrassingen Een goed ingericht Magento-platform is verrassend voorspelbaar. Geen plotselinge prijsverhogingen. Geen gedwongen upgrades. Geen vendor lock-in. Met een vast onderhoudsmodel weet je: wat het platform kost wat inbegrepen is wanneer je bewust extra investeert Dat maakt het platform technisch en financieel bestuurbaar. Integraties zijn geen bijzaak, maar de kern In B2B is e-commerce zelden het hart van de operatie. Het is een schakel in een groter landschap. Magento is hier sterk in dankzij: een volwassen API-architectuur event-driven mogelijkheden bewezen ERP-, PIM- en WMS-integraties Juist hier bewijst Magento zijn kracht: niet door alles zelf te willen zijn, maar door naadloos samen te werken met bestaande systemen. En met goed onderhoud blijven die koppelingen stabiel — ook bij updates en doorontwikkeling. Vrijheid zonder chaos Het grote voordeel van Magento is niet dat alles kan. Het voordeel is dat je kunt kiezen wat je wél en niet doet. Je kunt: starten met een sterke standaard gefaseerd uitbreiden alleen investeren waar het waarde oplevert blijven doorontwikkelen zonder platformwissel Dat maakt Magento geschikt voor organisaties die vooruitdenken, maar geen onnodige risico’s willen nemen. Wanneer is Magento niet de juiste keuze? Magento is geen goede keuze als: je zo snel mogelijk live wilt zonder onderscheid je geen eigenaarschap wilt over je platform je business volledig in standaardprocessen past je geen behoefte hebt aan schaalbaarheid Maar als e-commerce een strategisch onderdeel is van je organisatie, en je controle wilt over kosten, data en roadmap, dan is Magento een logische keuze. Conclusie Magento is geen quick win. Het is een strategisch fundament. Met een sterke standaardbasis, ruimte voor maatwerk en een onderhoudsmodel dat stabiliteit borgt, ontstaat een platform dat meegroeit met je organisatie — in plaats van je afremt. En precies daarom kiezen steeds meer B2B-bedrijven voor Magento in combinatie met een structureel onderhoudsmodel zoals Magento Total Care omdat het op de lange termijn simpelweg de slimste keuze is. ### [Roadmap Elgentos B2B suite - Magento B2B Platform](https://elgentos.nl/elgentos-b2b-suite-roadmap) Roadmap voor de Elgentos B2B Suite Elgentos B2B Suite Roadmap Roadmap voor de Elgentos B2B suite ### [Vastgelopen Magento project? Ontdek hoe wij je weer op weg helpen](https://elgentos.nl/magento-project-vastgelopen) Vastgelopen Magento project? Ontdek hoe wij je weer op weg helpen Wij zorgen voor de juiste tractie! Elgentos is gespecialiseerd in het overnemen van projecten die door (matige) technische kennis geremd worden in de voortgang. Stilstand is achteruitgang Dat geldt vooral voor de e-commerce branche, waar de ontwikkelingen zich elkaar snel opvolgen. Voor een webshop is het cruciaal om niet geremd te worden door een project dat niet vooruit komt. Wij hebben een proces ontwikkeld dat problemen snel identificeert en planmatig oplost voor een stabiele basis op de lange termijn. Hiermee voorkomen we downtime en andere bottlenecks in het proces. Hoe doen we dit? Lees hieronder meer! Door slim te kijken naar waar de bottlenecks liggen van de webshop hebben we voor een klant een aanzienlijke besparing in de maandelijkse hostingkosten gerealiseerd. Hostingkosten van 7.000 naar 1.000 euro p/m Korte omlooptijd van voorraad en gekoppeld met een extern systeem? Als dit niet goed werkt, kan dit veel frustratie bij klanten veroorzaken. Voor een klant hebben we, met behoud van de frontend performance, een altijd kloppende voorraad gerealiseerd. Voorraad problemen opgelost Door het implemeteren van een simpelere checkout is de drop off hier met ruim 20% verminderd. 20% minder drop off in checkout Wil je meer weten? Plan een afspraak! ### [Over ons](https://elgentos.nl/over-ons) Creatieve maatwerkoplossingen voor Magento 2 B2B platforms. Hoge kwaliteit, pragmatische aanpak en focus op langdurige partnerships. Ontdek onze B2B expertise. Elgentos, opgericht in 2011, groeide uit tot een toonaangevende Magento-specialist en werd in de jaren daarna zowel individueel als als bedrijf onderscheiden met meerdere awards voor vakmanschap en kwaliteit. Quality over quantity Hoge kwaliteit Magento 2 B2B platforms Kwaliteit staat bij ons hoog in het vaandel. Met geautomatiseerde deployment & test straten, end to end testing en vele statische code checks zorgen wij voor robuuste B2B platforms gebouwd door professionals die u kunt vertrouwen. Met local talent bouwen wij voor local heroes! Sinds 2011 focus op Magento B2B Elgentos werd in 2011 opgericht met een uitgesproken focus op hoogwaardige Magento-ontwikkeling. Vanaf het begin lag de nadruk op technische diepgang, performance en het bouwen van schaalbare e-commerceplatformen. In de jaren die volgden groeide Elgentos uit tot een toonaangevende partij binnen het Magento-ecosysteem, met een sterke reputatie als specialistische implementatiepartner. Die positie werd meerdere keren bevestigd met zowel individuele awards voor vakmanschap als bedrijfsbrede onderscheidingen voor kwaliteit, innovatie en klantresultaten. We bouwen creatieve maatwerkoplossingen. We doen geen concessies op kwaliteit. We begeleiden onze klanten bij de te nemen keuzes. We schromen niet hierbij onze mening te uiten. We werken elke dag richting een langdurig partnerschap. We dragen actief bij aan de open-source gemeenschap. Groei is niet het doel, maar het gevolg van goed werk. Kernwaarden Doelgericht - We kijken verder dan alleen de dagelijkse werkzaamheden. De doelen van de klanten worden de doelen van ons - op korte, middellange en lange termijn. Vindingrijk - We verspillen geen tijd in het heruitvinden van het wiel als dat niet nodig is en daarmee kunnen we onze creatieve energie inzetten voor de echte uitdagingen. Ambitieus - We zijn gedreven om elke dag beter te worden en altijd een stapje extra te zetten. We zijn hongerig naar kennis en delen deze met elkaar en onze klanten. Teamspirit - We zijn er om elkaar te helpen en pakken eigenaarschap als het nodig is. Zowel in ons team als voor onze klanten. En op de vrijdagmiddagborrel natuurlijk ;) Wat doen we? B2B maatwerk Bedrijfsprocessen automatiseren Product-configurators CMS integratie met Prismic.io Magento 2 i.c.m. Hyvä Klantenkring voornamelijk MKB+, familiebedrijven en groothandels Wat doen we niet? Off-shoren / outsourcen “One size fits all” oplossingen PWA oplossingen (wij geloven in Hyvä) Hosting (hier hebben we onze partner Hypernode voor) Design (hier hebben we steengoede partners voor) Internet marketing (ook hier hebben we steengoede partners voor) Wij zoeken nog collega’s Bekijk de vacatures ### [Magento B2B webshops voor groothandel & maakindustrie | elgentos](https://elgentos.nl/) B2B webshops voor groothandel en maakindustrie, gebouwd op Magento 2. Product configurators, snelle Hyvä frontends en ERP-koppelingen — sinds 2011. Wij bouwen Magento maatwerk oplossingen voor groothandel en maakindustrie Zorgeloos Magento updates, security en infra upgrades voor een vast maandbedrag. Met een strikte scheiding tussen feature development (capex) en onderhoud (opex). Magento Total Care Voor groothandels en maakindustrie bouwen we uitgebreide productconfigurators waarmee bezoekers hun producten volledig naar wens kunnen samenstellen. Productconfigurators Een snelle shop + checkout die voldoet aan alle eisen van Google voor ultiem gebruiksgemak en hoge SEO scores - we bouwen al onze shops met Hyva. Hyvä Themes & Checkout Doorontwikkeling, migratie of nieuwbouw - geen probleem! Wil je migreren naar Magento vanaf bijvoorbeeld Shopify, Cloudsuite of Shopware, of wil je je bestaande Magento B2B platform optimaliseren? Elgentos is gespecialiseerd in het begeleiden van het denkproces over het IT landschap en het ontwerpen-, het ontwikkelen en onderhouden van B2B platforms en koppelingen voor groothandel en maakindustrie. Mooie, stabiele en goed converterende B2B platforms bouwen, dat is het uitgangspunt van waaruit wij werken. We zijn in 2010 begonnen met e-commerce platforms bouwen op Magento en dit is sindsdien onze primaire focus gebleven. Cases Techneuten met passie voor code Bekijk het team team Blog Heb je een uitdagende klus? Neem contact op ### [Vacatures bij Elgentos | Bouw mee aan B2B e-commerce](https://elgentos.nl/vacatures) Zoek je een hecht team in B2B e-commerce? Ontdek onze vacatures bij Elgentos, expert in geavanceerde Hyvä-winkels en productconfigurators. Vacatures Zoek je een hecht en sociaal team? Gevonden! Elgentos is vanaf het begin een toonaangevende Hyvä-partner en gespecialiseerd in het bouwen van geavanceerde B2B-winkels. Hun expertise ligt in het ontwikkelen van winkels met hoge prestaties door gebruik te maken van de geavanceerde technologie van Hyvä, zowel voor het thema als voor de checkout. Ze hebben veel fantastische productconfigurators gebouwd voor hun klanten, voornamelijk in de build-to-order business. Elgentos heeft een sterke focus op kwaliteit van de code en beveiliging . ### [Productconfigurators](https://elgentos.nl/productconfigurators) 2D productconfigurators - voor een transformatie van je verkoopstrategieën Voor een transformatie van je verkoopstrategieën Uitdaging in de digitale bedrijfsvoering Veel ondernemingen in de maakindustrie worstelen met de toenemende complexiteit van productkeuze en configuratie. Klanten verwachten gepersonaliseerde oplossingen, terwijl bedrijven hun processen efficiënt willen houden. Onze productconfigurator lost dit direct op door technologie en gebruiksgemak slim te combineren. Met onze 2D productconfigurator kunnen klanten producten volledig naar wens samenstellen. De producent van deze producten kan hierdoor eindeloze combinaties gemakkelijk en overzichtelijk aanbieden. Waar voorheen de producent een klein aantal vooraf samengestelde producten kon aanbieden is dat nu volledig anders. Onze configurator biedt hiervoor een gebruiksvriendelijke ervaring en kan worden geïntegreerd in elk B2B platform. Voor EFKA hebben wij een 2D productconfigurator implementatie gedaan met maatwerk componenten specifiek voor hun aluminium frame product. Probleemoplossend vermogen In de praktijk vergemakkelijkt onze configurator complexe selectieprocessen. Of het gaat om kozijnen, industriële apparatuur, drukwerk, fototaarten, aluminium frames of tenten, de configurator vereenvoudigt configuratie zonder af te doen aan nauwkeurigheid. De configurator biedt onder andere: Duidelijk inzien van de gemaakte keuzes; Gemakkelijk en snel heen en weer kunnen stappen tussen de gemaakte keuzes; Optioneel dynamische prijsberekening; De stappen configureren met een titel, beschrijvingen, tooltips en afbeeldingen; Instellen van onderlinge afhankelijkheden; Intuïtieve gebruikersinterface. Maatwerk zonder grenzen Waar standaardoplossingen tekortschieten, biedt onze configurator een flexibele basis. We ontwikkelen maatwerkoplossingen die zich aanpassen aan de unieke bedrijfscontext, met aandacht voor specifieke integratie-eisen en complexe bedrijfslogica. De basis is dus altijd hetzelfde, maar elke stap kan een op maat gemaakt component zijn specifiek gebouwd voor de klant. Een voorbeeld van een succesvolle toepassing van onze configurator kan je in onze klantcase EFKA vinden. Technische architectuur De oplossing is gebouwd op een robuust technologisch fundament: Frontend: React-gebaseerde interface voor interactieve configuratie Backend: Laravel applicatie om gemakkelijk de verschillende configuraties aan te maken Integratie: Naadloze verbinding met Magento 2 Klaar om uw digitale verkoopstrategie te vernieuwen? De transformatie begint hier! ### [Kennisdeling in de Magento Community | Blog](https://elgentos.nl/blog) Ontdek technische inzichten en bedrijfsblogs voor Magento professionals. Draag bij aan de groeiende kennisbank van de Magento community. Kennisdeling vinden we belangrijk De Magento community is gebouwd op kennisdeling. Daar hebben wij elke dag profijt van, en we willen graag ons steentje daar aan bijdragen! Daarom vind je hier niet alleen blogs over ons bedrijf, maar ook technisch inhoudelijke stukken voor andere Magento professionals! ### [elgentos - partners](https://elgentos.nl/partners) Alle partners waar wij graag mee samenwerken! Wij werken graag samen Samen sterk met onze partners Als eerste Hyvä partner in Nederland bouwen wij al sinds 2020 Magento webshops op basis van het Hyvä thema. Het Hyvä thema is uitermate geschikt om kostenefficient snelle Magento webshops te bouwen die met vlag en wimpel de Google Core Web Vitals tests behalen. ### [Succesvolle Magento projecten: commerce & configurator cases](https://elgentos.nl/cases) Bekijk onze Magento commerce cases: succesvolle projecten met maatwerkoplossingen, geoptimaliseerde prestaties en naadloze integraties door elgentos. Wij maken bijzondere technische hoogstandjes. Dagelijks. Een greep uit onze Hyvä & configurator cases Cases ### [Hyvä Magento Theme en Checkout ontwikkeling](https://elgentos.nl/hyva-magento-theme-en-checkout) Hyvä Magento Theme en Checkout ontwikkeling De snelle toekomst van Magento webshops Hyvä Magento webshop en checkout Als eerste Hyvä partner in Nederland bouwen wij al sinds 2020 Magento webshops op basis van het Hyvä thema. Het Hyvä thema is uitermate geschikt om kostenefficient snelle Magento webshops te bouwen die met vlag en wimpel de Google Core Web Vitals tests behalen. Met 20+ werknemers werken we al 12,5 jaar met Magento Wij hebben 20+ Hyvä themes en 5+ Hyvä Checkout implementaties gedaan Wij zijn een Platinum Hyvä Partner Wat is Hyvä? Hyvä is onze partner voor Magento frontend technologie. Hyvä levert twee producten; het Hyvä Theme en de Hyvä Checkout. Het Hyvä Theme is een ultra snel & lightweight thema. Met dit thema en de implementatie die wij hier bovenop zullen doen, ben je gegarandeerd dat doelstellingen op het gebied van snelheid gehaald worden. Hyvä heeft een uitstekende developer experience. Hierdoor zal het ontwikkelen van features op de frontend met minder fouten en sneller gaan. Bijkomend voordeel is dat Hyvä dicht bij blijft bij de basis van Magento. Kortom, iedereen die gewend is om in Magento te ontwikkelen, zou hier prima mee uit de voeten kunnen. Het Hyvä thema is in rap tempo de industry standard geworden voor Magento 2 shops. Wij zijn de eerste agency in Nederland die een webshop op Hyvä live konden zetten. We hebben sindsdien meer dan 20 implementaties gedaan, wat ons de agency met de meeste Hyvä ervaring in Nederland maakt. Veelgestelde vragen Hyvä Theme Hoeveel kost een Hyvä Theme implementatie? Dat hangt af van een aantal factoren, waarvan ik de belangrijkste hier zal uitleggen. Feitelijk zijn er drie smaakjes; een retrofit, een design ontworpen met behulp van de Hyva UI componenten en een volledig maaatwerk design. We noemen een design een retrofit wanneer we een bestaand design gaan omzetten naar een Hyva thema. Een tweede optie is om de Hyva UI componenten te gebruiken om een design te laten ontwerpen. Door het gebruik van deze componenten hou je je aan de Hyva-standaard waardoor het voor ons relatief snel te implementeren valt. Immers, hoe meer maatwerk en specifieke wensen, hoe meer uren en hoe hoger de kosten.  De derde en vaak duurste optie is om een volledig maatwerk design te implementeren. Hierbij wordt er dus geen gebruik gemaakt van de standaard Hyva UI componenten en zal alles van de grond af moeten worden opgebouwd. We hebben de afgelopen jaren gezien dat een retrofit doorgaans 200 - 400 uren kosten, een design op basis van Hyvä UI componenten 300 - 500 uren en een volledig maatwerk design 400 - 700 uren.  Kan ik mijn huidige design behouden en omzetten naar een Hyvä Theme? Absoluut, dat noemen we een retrofit. Hierbij behouden we het huidige design en bouwen we die om naar een Hyvä Theme. ZIjn alle extensies compatible met Hyvä? Niet alle extensies zijn compatible met Hyvä, maar een groot percentage van de vaakst gebruikte extensies wel. De grote bekende extensiebouwers die extensies verkopen hebben steeds meer en meer ondersteuning voor Hyvä in extensies. Ook wij bouwen onze extensies altijd compatible met Hyvä. Zijn jullie een officiële partner van Hyvä? Jazeker! Sterker nog, we zijn in Nederland de partij die de eerste op Hyvä gebouwde Magento 2 shop heeft livegezet in november 2020. Dit maakt ons de partij met de langste ervaring met Hyvä. Krijg ik met een Hyvä Theme een hogere Google Core Web Vitals score? Dat is vrijwel altijd het geval als je vanaf een Luma-gebaseerd of een PWA Studio thema komt. Het Hyvä Theme heeft van zichzelf ("out of the box") een score van 95+ in Lighthouse en slaagt met vlag en wimpel voor de Core Web Vitals. Maken jullie gebruik van de Hyvä UI library? Dat is zeker een mogelijkheid. Hyvä UI gebruiken als basis zorgt voor een kostenbesparing ten opzichte van een compleet op maat gemaakt ontwerp die niet op Hyvä UI is gebaseerd, zie ook de vraag "Hoeveel kost een Hyvä Theme implementatie?". Wat is het voordeel van Hyvä ten opzichte van een PWA oplossing? De tendens in de huidige markt lijkt te zijn dat een PWA de oplossing voor alles is. Dit is in ons optiek allesbehalve waar. Een PWA oplossing is in veel gevallen duurder, complexer en langzamer dan een Hyvä-gebaseerde oplossing. Om een PWA goed tot zijn recht te laten komen is er vaak een intern Javascript team nodig die de complexiteit aankan van een PWA. Daarnaast moest deze PWA nog gekoppeld worden aan een Magento installatie, waardoor er feitelijk 2 teams nodig zijn; een apart frontend en een apart backend team. In sommige organisaties kan dat, maar in de meeste echter niet. Daarnaast zijn de zogenaamde voordelen van een PWA oplossing vaak niet van toepassing, of domweg niet waar. De claim dat een PWA sneller is in de basis niet waar - de standaard PWA oplossing voor Magento vanuit Adobe scoort standaard veel lager dan een standaard Hyvä installatie. Vervolgens kan het met veel moeite sneller worden gemaakt, maar als je datzelfde aantal uren in een Hyvä installatie zou steken zou die nog steeds sneller zijn, of met minder uren het maximaal haalbare gehaald worden. De claim dat een PWA kan dubbelen als een installeerbare app op een mobiel is gedeeltelijk waar - alleen Android ondersteunt dit volledig. Daarnaast valt wederom hetzelfde (goedkoper) te behalen met een Hyvä installatie. Voor Haibu.nl hebben wij een Hyvä Theme implementatie gedaan voor hun consumentenshop. Lees de volledige case hier: https://elgentos.nl/cases/haibu Hyvä Checkout Hyvä Checkout revolutioneert de afrekenervaring voor alle betrokken partijen. Voor shoppers biedt het een snel, soepel en intuïtief afrekenproces, met een laadtijd die op mobiele apparaten 13 keer sneller is dan de standaard Magento Luma afrekenpagina. Meer informatie over de Hyva Checkout kan je vinden in ons blog artikel "Verbeter je Magento 2 checkout met de Hyvä Checkout". Veelgestelde vragen Hyvä Checkout Wat is het voordeel van de Hyvä Checkout t.o.v. de Luma(-gebaseerde) checkout(s)? Het is vele malen simpeler (en dus sneller en goedkoper) om maatwerk in de Hyvä Checkout te bouwen. De checkout is simpeler opgezet en heeft minder "bewegende delen" waardoor de checkout ook minder foutgevoelig is dan de oude Luma checkout. Daarnaast is de checkout ook sneller en bevat het standaard twee versies; de "one step" checkout (alles op 1 pagina) of de "multi step" checkout, waarbij elke stap (adres, betaalmethode, verzendmethode, overzicht) zijn eigen pagina heeft. Welke betaalproviders bieden Hyvä Checkout ondersteuning? Op dit moment hebben Mollie, MultiSafePay, Buckaroo, Adyen, Pay.nl, Stripe en PayPal ondersteuning voor de Hyvä Checkout. Een volledig overzicht van Hyva zelf kan je hier vinden. Welke verzendpartijen bieden Hyvä Checkout ondersteuning? Op dit moment hebben PostNL en ShipperHQ ondersteuning voor de Hyvä Checkout. Daarnaast hebben wij zelf ondersteuning voor Paazl ingebouwd. Een volledig overzicht van Hyva zelf kan je hier vinden. Welke adresvalidatie partijen bieden Hyvä Checkout ondersteuning? Op dit moment heeft Postcode.nl ondersteuning voor de Hyvä Checkout. Daarnaast hebben wij zelf ondersteuning voor Loqate ingebouwd. Een volledig overzicht van Hyva zelf kan je hier vinden. Hoeveel kost een Hyvä Checkout implementatie? Hiervoor geldt ook een vrij brede range. De grootste factor die te invloed heeft op de kosten voor een Hyvä Checkout implementatie zijn de features die in de checkout ingebouwd dienen te worden. Denk hierbij aan adresvalidatie (zoals PostNL en Loqate), verzendplatformen (zoals Sendcloud, Paazl, MyParcel, en alle invidivudele vervoerders), betaalpaltformen (zoals Mollie, MultiSafePay, Buckaroo, Adyen en alle individuele betaalmethodes), etcetera. Voor een aantal van deze partijen zijn extensies beschikbaar voor de Hyvä Checkout maar ook voor een heleboel (nog) niet. De voorgaande Hyvä Checkout implementaties die wij hebben gedaan varieren tussen 50 en 200 uur. Voor Fotoopaluminium.nl hebben wij een Hyvä Checkout implementatie gedaan met automatische adres aanvulling op basis van postcode en een Multisafepay betaalmethodes implementatie. Meer weten over Hyvä? Kijk dan op de Hyvä site! ### [bricks-b2b-hyva-theme](https://elgentos.nl/bricks-b2b-hyva-theme) Bricks B2B B2B Magento shop in productie binnen 2 weken! Een super snelle Magento 2 shop gebaseerd op het Hyva thema met een door ons ontwikkelde B2B feature set Wat is BricksB2B? Het doel van de eerste sprint is live gaan binnen 2 week! Features die je nodig hebt aanzetten, configureren en gaan! Live binnen 2 weken! BricksB2B vormt een basis waarmee je snel live kan en is de solide basis voor organisatie specifiek maatwerk. Specifiek maatwerk is mogelijk De basis De basis voor BricksB2B is Magento 2. Profiteer van alle voordelen van open source software en de enorme community van Magento. Alle features die in Magento kan je dus ook terug vinden in BricksB2B. Als thema binnen Magento gebruiken we Hyva. Hyva zorgt voor een stabiele basis waar features opgebouwd kunnen worden. Hyva is snel en zorgt voor een goed uit te breiden thema. Door je jaren heen hebben wij een aantal (specifieke) B2B features gebouwd die wij vaak zien bij B2B bedrijven. Features GoogleTagManager + GA4 Tracking Serverside Analytics Klant specifieke prijzen Klant specifieke catalogus Bestellijsten Bedrijfsaccounts met sub accounts en permissies Incl/excl BTW schakelaar (voor een hybrid B2B/B2C shop) Op rekening kopen (en limiteren) Meerdere "wishlists" per account Snel bestellen, op SKU of csv import Product bijlagen Winkelzoeker Prijzen verbergen OCI punchout Bestellen vanuit de order historie Vraag een offerte aan Demo Leuk, al die woorden! Maar laat maar eens zien! OK. Niet alle features zijn direct zichtbaar omdat ze bijvoorbeeld achter een login zitten. Ga naar productie na 2 week Maar eerst een kopje koffie? Wat is het plan, wat behoort binnen de scope, passen we bij elkaar? Wie zijn de stakeholders? 1. Orienterend gesprek Een deep dive in de organisatie. Dit doen we door het organiseren van een workshop met de stakeholders om te ontdekken wat de doelen zijn en hoe we deze kunnen realiseren. 2. Discovery fase Aan de hand van de resultaten van de discovery fase schrijven we een kostenraming voor een bepaalde tijd van het project. 3. Schrijven van de kostenraming Geinteresseerd? Maak een afspraak ### [Wat verstaan wij onder Magento maatwerk?](https://elgentos.nl/magento-maatwerk) Wat verstaan wij onder Magento maatwerk? Maatwerk betekent niet het wiel opnieuw uitvinden, maar waarde toevoegen waar het echt van belang is. Wat verstaan wij onder maatwerk? Elke webshop is anders. In veel gevallen komt daar maatwerk aan te pas. Maar dat zegt niet dat wij geen gebruik maken van wat er al beschikbaar is. Wij gaan uiteraard niet het winkelmandje heruitvinden of opnieuw schrijven, net zoals we dat niet doen met alle andere gangbare onderdelen van een webshop. Daarom maken wij gebruik van het e-commerce framework Magento / Adobe Commerce, wat ons in staat stelt om alle basisfunctionaliteiten van een webshop kostenefficiënt neer te zetten. En dan begint het echte werk. Waardetoevoegend werk. Wat maakt jullie webshop anders dan die van de concurrent? Welke functionaliteiten voegen jullie toe om een bijzondere koopervaring te creëren? Waarmee verleiden jullie de klant om bij jullie te bestellen? De antwoorden op deze vragen zijn zeer divers, waardoor er veelal maatwerk bij komt kijken om precies datgene te bouwen wat jullie boven de concurrent uit doet stijgen. Denk hierbij bijvoorbeeld aan product configurators, bestellijsten, specifieke bestelflows, personalisatie, e-mail automatiseringen, ERP koppelingen, PowerBI reports, etcetera. Heb jij een maatwerk klus? Neem dan contact op! ### [Prismic CMS integratie in Magento 2](https://elgentos.nl/prismic-cms-en-magento-2-integratie) Hoe je met Prismic en Magento 2 volledige controle hebt over je content Hoe je met Prismic en Magento 2 volledige controle hebt over je content Hoe je met Prismic en Magento 2 volledige controle hebt over je content Het is essentieel om volledige controle te hebben over de inhoud van je webshop. Met de integratie van Prismic CMS in Magento 2 bieden wij een krachtige oplossing die ontwikkelaars volledige vrijheid geeft en tegelijkertijd het leven van content teams eenvoudiger maakt. Geen noodzaak meer voor de omslachtige Pagebuilder of andere CMS extensies; onze oplossing gebruikt vooraf gedefinieerde content type templates die eenvoudig door het content team kunnen worden ingevuld. Van de homepage tot landingspagina's, FAQ's, winkelzoeker, USP's, blogs en nieuwsitems, de mogelijkheden zijn eindeloos. Ontdek hoe onze gratis beschikbare Magento 2-extensie, geoptimaliseerd voor Hyvä en frontend-agnostisch, jouw winkel naar een hoger niveau kan tillen. Introductie tot Prismic en Magento 2 Wat is een headless CMS? Een headless CMS, zoals Prismic, scheidt de front-end presentatie van de back-end contentbeheer. Dit betekent dat de inhoud niet gebonden is aan een specifieke weergave of technologie, waardoor ontwikkelaars meer vrijheid hebben in hoe en waar de content wordt getoond. In tegenstelling tot traditionele CMS-systemen, waar de content en presentatie nauw verweven zijn, biedt een headless CMS flexibiliteit en schaalbaarheid. Je kunt content beheren in Prismic en deze vervolgens via API's integreren in diverse platformen zoals websites, mobiele apps en meer. Dit zorgt voor een efficiëntere workflow en maakt samenwerking tussen ontwikkelaars en marketingteams soepeler. Bovendien kunnen teams met een headless CMS snel inspelen op veranderingen en nieuwe technologieën zonder de basis van hun contentbeheer te hoeven herzien. Waarom kiezen voor een headless CMS? Het kiezen voor een headless CMS zoals Prismic brengt meerdere voordelen met zich mee. Ten eerste biedt het ontwikkelaars volledige controle over hoe en waar content wordt weergegeven, wat resulteert in een optimale gebruikerservaring. Dit betekent dat je één enkele bron van waarheid kunt hebben voor je content, terwijl je deze via API's naar verschillende platformen kunt distribueren, zoals websites, mobiele apps en zelfs IoT-apparaten. Daarnaast is een headless CMS vaak eenvoudiger te integreren met andere tools en diensten, wat de flexibiliteit en schaalbaarheid van je infrastructuur vergroot. Dit maakt het ideaal voor bedrijven die snel willen inspelen op marktveranderingen en nieuwe technologieën. Ook kunnen marketingteams hun creativiteit de vrije loop laten zonder afhankelijk te zijn van ontwikkelaars voor elke wijziging, wat de time-to-market aanzienlijk verkort. Kortom, een headless CMS biedt zowel technische als operationele voordelen die traditionele CMS-systemen niet kunnen evenaren. Voordelen van Prismic voor Magento 2 Prismic biedt tal van voordelen voor Magento 2-gebruikers. Ten eerste zorgt de integratie voor een naadloze contentbeheerervaring, waardoor je geen gebruik meer hoeft te maken van omslachtige tools zoals Pagebuilder. Met vooraf gedefinieerde content type templates kunnen teams eenvoudig en snel content creëren en bijwerken zonder technische kennis. Dit verhoogt de efficiëntie en vermindert de time-to-market voor nieuwe campagnes en updates. Daarnaast is Prismic frontend-agnostisch, wat betekent dat het gemakkelijk kan worden geïntegreerd met verschillende frameworks en technologieën, waaronder Hyvä. Dit biedt ontwikkelaars de vrijheid om te werken met tools die zij prefereren, terwijl de content consistent en van hoge kwaliteit blijft. Bovendien maakt de API-gedreven benadering van Prismic het eenvoudig om content te hergebruiken en te distribueren over meerdere kanalen, wat zorgt voor een coherente merkervaring en verhoogde betrokkenheid bij klanten. Prismic + Magento 2 is een fantastische combinatie Implementatie en functionaliteiten Hoe werkt de integratie? De integratie van Prismic met Magento 2 is eenvoudig en efficiënt. Onze open-source Magento 2-extensie, ontwikkeld door Peter Jaap Blaakmeer, maakt het mogelijk om naadloos Prismic-inhoud in je webshop te integreren. Om te beginnen, voeg je de Prismic API-sleutel toe aan je Magento-configuratie. Vervolgens kun je via de Prismic-interface content typen definiëren en beheren. Deze contenttypen worden automatisch gesynchroniseerd met Magento, waardoor je eenvoudig content kunt invoeren en bijwerken zonder technische kennis. De Prismic-extensie ondersteunt ook Fetch Links en Debugging, wat helpt bij het optimaliseren en foutopsporen van je content. Verder kunnen gebruikers content in meerdere talen beheren dankzij de multi-repo functionaliteit. Dit zorgt voor een dynamische en flexibele contentbeheerervaring, waarbij ontwikkelaars zich kunnen concentreren op de front-end en gebruikersinterface, terwijl content teams moeiteloos inhoud kunnen beheren en publiceren. Gebruik van voorgedefinieerde templates Een van de grootste voordelen van Prismic voor Magento 2 is het gebruik van voorgedefinieerde templates voor content. Deze templates maken het proces van contentcreatie eenvoudig en efficiënt. In plaats van telkens opnieuw dezelfde elementen te ontwerpen, kunnen content teams gebruikmaken van vooraf gedefinieerde sjablonen die al zijn geoptimaliseerd voor verschillende soorten inhoud, zoals landingspagina's, FAQ's, blogs en USP's. Dit zorgt voor consistentie in de merkuitstraling en bespaart tijd. Bovendien kunnen deze templates eenvoudig worden aangepast aan specifieke behoeften zonder dat er diepgaande technische kennis nodig is. Het gebruik van sjablonen maakt het ook mogelijk om snel te reageren op veranderingen in de markt door snel nieuwe content te publiceren. Dit versnelt niet alleen het creatieproces, maar zorgt er ook voor dat je altijd actuele en relevante informatie kunt bieden aan je klanten. Optimalisatie voor Hyvä De Prismic-integratie voor Magento 2 is geoptimaliseerd voor Hyvä, wat betekent dat je kunt profiteren van de snelle laadtijden en verbeterde prestaties die Hyvä biedt. Hyvä is bekend om zijn lichte en efficiënte front-end architectuur die zorgt voor een soepele en snelle gebruikerservaring. Door Prismic te combineren met Hyvä, krijg je een krachtige combinatie die zowel ontwikkelaars als content teams ten goede komt. Ontwikkelaars kunnen gebruikmaken van de moderne technologieën en tools die Hyvä biedt, terwijl content teams profiteren van de gebruiksvriendelijke interface en de flexibiliteit van Prismic. Deze optimalisatie zorgt ervoor dat je webshop niet alleen snel en responsief is, maar ook eenvoudig te beheren en te updaten. Dit resulteert in een hogere klanttevredenheid en betere conversie, omdat gebruikers een naadloze en plezierige winkelervaring hebben. Praktische toepassingen en voordelen Voorbeelden van pagina's en content types Met Prismic en Magento 2 kun je een breed scala aan pagina's en content types creëren die perfect aansluiten op je bedrijfsbehoeften. Denk hierbij aan landingspagina's die speciaal zijn ontworpen voor marketingcampagnes, FAQ-pagina's die klanten snel en efficiënt van antwoorden voorzien, en blogsecties waar je regelmatig updates en nieuwtjes kunt delen. Daarnaast kun je gebruikmaken van USP-secties om je unieke verkoopargumenten duidelijk te communiceren, winkelzoekers om klanten te helpen je fysieke winkels te vinden, en nieuwsitems om actuele gebeurtenissen en persberichten te delen. Dankzij de flexibele content typen en de gebruiksvriendelijke interface van Prismic, kunnen content teams deze pagina's eenvoudig beheren en bijwerken zonder technische ondersteuning. Dit zorgt voor een dynamische en altijd actuele webshop, wat de klanttevredenheid verhoogt en bijdraagt aan een betere algehele gebruikerservaring. Voordelen voor ontwikkelaars en content teams De integratie van Prismic met Magento 2 biedt aanzienlijke voordelen voor zowel ontwikkelaars als content teams. Ontwikkelaars krijgen de vrijheid om met de nieuwste technologieën en frameworks te werken, zonder zich zorgen te maken over de beperkingen van traditionele CMS-systemen. Ze kunnen zich volledig richten op het creëren van een geoptimaliseerde en responsieve gebruikerservaring. Voor content teams betekent Prismic een intuïtieve en gebruiksvriendelijke interface waarmee ze eenvoudig content kunnen beheren en publiceren. Ze hoeven niet meer afhankelijk te zijn van ontwikkelaars voor elke kleine wijziging, wat de efficiëntie en snelheid van contentcreatie aanzienlijk verhoogt. Bovendien kunnen content teams profiteren van de vooraf gedefinieerde templates en de mogelijkheid om content te hergebruiken op verschillende kanalen. Dit zorgt voor consistente merkcommunicatie en een verbeterde algehele klantbeleving. ### [Magento rebuild of retrofit?](https://elgentos.nl/magento-rebuild-of-retrofit) Waarom wij bijna nooit voor een rebuild kiezen Magento rebuild vs retrofit: waarom wij bijna nooit voor een rebuild kiezen We krijgen we vaak de vraag wat het verschil is tussen een Magento rebuild en een retrofit, en waarom wij bijna altijd de voorkeur geven aan een retrofit. Beide benaderingen hebben hun eigen voor- en nadelen, maar de keuze tussen een rebuild of retrofit kan een grote impact hebben op de kosten en doorlooptijd van een project. Wat is een Magento rebuild? Een Magento rebuild houdt in dat we uw webshop volledig vanaf de grond opnieuw opbouwen. Dit betekent dat we alle bestaande functionaliteiten, design en extensies opnieuw ontwikkelen, vaak met een nieuw design en verbeterde codebase. Het idee is om een frisse start te maken zonder de beperkingen van de huidige setup. Voordelen van een rebuild: Modernisering: Je krijgt een geheel nieuwe, up-to-date webshop met de nieuwste technologieën en best practices. Optimalisatie: De kans om inefficiënties in de oude code te verwijderen en een slankere, snellere site te creëren. Flexibiliteit: Meer ruimte om nieuwe functies en ontwerpen te implementeren zonder rekening te houden met legacy code of processen. Wat is een Magento retrofit? Een Magento retrofit houdt in dat we de bestaande webshop verbeteren en optimaliseren zonder deze volledig opnieuw te bouwen. Dit kan betekenen dat we nieuwe functies toevoegen, de performance verbeteren, de veiligheid verhogen en bestaande problemen oplossen, allemaal binnen het bestaande framework van uw huidige webshop. Voordelen van een retrofit: Kostenbesparing: Retrofitten is over het algemeen veel goedkoper dan een volledige rebuild omdat het minder ontwikkeltijd en resources vereist. Snellere implementatie: Omdat we voortbouwen op de bestaande structuur, kan een retrofit veel sneller worden voltooid dan een volledige rebuild. Waarom wij bijna nooit voor een rebuild kiezen Wij hebben we gemerkt dat een rebuild vaak niet de beste keuze is voor onze klanten, en wel om de volgende redenen: Onzekerheid of problemen opgelost worden: Vaak zien we dat er voor een rebuild gekozen word wanneer de oorzake van de bestaande problemen onbekend zijn. De hoop is dan dat wanneer de rebuild klaar is de problemen ook weg zijn. Maar als de bron van het probleem onbekend is, is de kans zeer aanwezig dat hetzelfde probleem in de rebuild weer is geintroduceerd. Bij een retrofit pakken we de problemen bij de bron aan zonder te gokken op een magische oplossing. Kosten en doorlooptijd: Een rebuild is duurder en tijdsintensiever. Voor veel bedrijven is de investering in tijd en geld niet gerechtvaardigd, vooral als een retrofit dezelfde of betere resultaten kan leveren met minder middelen. Risico's: Een volledige rebuild brengt meer risico's met zich mee, zoals data migratieproblemen, SEO-verlies en potentiële downtime. Deze risico's kunnen significante negatieve effecten hebben op uw bedrijf. Kortom, hoewel een Magento rebuild in bepaalde situaties nuttig kan zijn, geven wij bijna altijd de voorkeur aan een retrofit. Deze aanpak biedt een betere balans tussen kosten, tijd en risico's, terwijl het toch significante verbeteringen en moderniseringen aan uw webshop mogelijk maakt. ### [contact](https://elgentos.nl/contact) Kopje koffie drinken? Op zoek naar een nieuwe Magento partij? Stuur ons een e-mail, de thee/koffie/water/fris staat warm/koud (doorhalen wat niet van toepassing is). ## Blog ### [B2B SaaS-platform vs. Magento met de elgentos B2B Suite](https://elgentos.nl/blog/b2b-saas-platform-vs-magento-b2b-suite) SaaS of Magento voor je B2B-webshop? We zetten de voor- en nadelen op een rij, plus wanneer welk platform het best bij jouw organisatie past. Er zijn verschillende B2B SaaS-platformen, denk aan Cloudsuite, Shopify en Shopware. Maar wat zijn nou eigenlijk de verschillen tussen zo'n SaaS-platform en Magento? In dit blog lees je over de voor- en nadelen van beide platformen, en welk platform het best bij jouw B2B-organisatie past. Wat is een SaaS-platform? SaaS staat voor Software as a Service. Je huurt software en betaalt daar maandelijks voor, soms aangevuld met een percentage van je omzet. De grootste beperking? Alles wat het platform biedt is generiek, oftewel gemaakt voor iedereen. Je kunt functies aan- en uitzetten, maar echt maatwerk zit er niet in. Als een SaaS-platform honderd klanten heeft, bouwt het wat de meesten willen. Val jij buiten die meerderheid, dan wacht je op een roadmap die jij niet bepaalt. De voordelen van een SaaS-platform Snelle livegang. Bij een SaaS-platform kun je snel starten. De software staat al klaar, de infrastructuur is ingericht en je hoeft weinig technische voorkennis te hebben. Gemiddeld ben je binnen drie tot zes maanden live. Lage instapkosten. De abonnementskosten zijn overzichtelijk en je hebt geen grote initiële investering nodig. Zeker als je net begint of je concept wilt valideren, is dat een groot voordeel. Toegankelijk. Je hebt geen developers of technisch team nodig om te starten. Vandaag beslissen, morgen live. Voor een starter of kleinere shop is dat ideaal. De nadelen van een SaaS-platform Beperkt maatwerk. Alles binnen een SaaS-platform is generiek. Wil jij een proces inrichten op de manier die jouw bedrijf nodig heeft, dan loop je vroeg of laat tegen een muur aan. Je bent afhankelijk van wat het platform biedt, en dat is voor iedereen hetzelfde. Vendor lock-in. Bij een SaaS-platform zit je vast. Wissel je van leverancier, dan verlies je je opgebouwde omgeving. De code is niet van jou, de data is niet van jou en je blijft altijd afhankelijk van het ecosysteem van die ene aanbieder. Bij platformen als Cloudsuite of Sana Commerce is die afhankelijkheid nog steviger dan bij Shopify. Oplopende kosten. De instapkosten lijken laag, maar bekijk altijd de total cost of ownership (TCO) over drie tot vijf jaar. Een Shopify Plus-abonnement kost al snel €2.300 tot €2.400 per maand. En bij veel SaaS-oplossingen betaal je op basis van je omzet. Wat is Magento met de elgentos B2B Suite? Magento is van origine een B2C-saleskanaal en is inmiddels al bijna twintig jaar het grootste e-commerceplatform ter wereld. Het platform is gebouwd voor volume: veel bezoekers, veel orders, veel producten. En anders dan bij een SaaS-platform kun je vrijwel alles aanpassen, tot diep in de kern van het systeem. Magento heeft van zichzelf geen B2B-functionaliteit. elgentos heeft een eigen B2B-suite ontwikkeld, waardoor je Magento ook kunt inzetten voor B2B. Denk aan company accounts, company pricing en customer approval. De voordelen van Magento met de elgentos B2B Suite Volledig eigenaar. De code is van jou, de data is van jou. Je bent niet afhankelijk van een externe partij die tarieven kan verhogen of beslissingen kan nemen over jouw platform. Wil je van ontwikkelpartner wisselen? Geen probleem. Je neemt je Magento-installatie gewoon mee. Complexe B2B-vraagstukken oplossen. Magento met de elgentos B2B Suite is van de grond af schaalbaar voor complexe B2B-omgevingen. Denk aan performance-optimalisaties bij hoge volumes in orders (1000+ per minuut), producten (2 mln+) en/of klanten (10k+), specifieke bestelprocessen of diepgaande integraties met je ERP. De nadelen van Magento met de elgentos B2B Suite Langere implementatie. Een new build Magento-traject duurt gemiddeld negen tot twaalf maanden, zeker bij een migratie vanuit een bestaand platform. Er zit legacy data in, processen moeten worden heroverwogen en het is hét moment om ook het bredere IT-landschap, zoals je ERP-koppeling, opnieuw in te richten. Dat kost tijd, maar levert wel een solide fundament op. Technische kennis nodig. Je hebt een ervaren development partner nodig die weet wat hij doet. De vrijheid die Magento biedt is in verkeerde handen ook een risico: te veel extensies, slechte architectuurkeuzes of gebrekkige monitoring maken een installatie kwetsbaar. Een grondige Discover & Build-fase is daarom essentieel. Wanneer kies je voor een SaaS-platform? Een SaaS-platform is een goede keuze als je snel naar de markt wil, nog geen vaste processen hebt ingericht en je omzet beperkt is tot zo'n €2 à €5 miljoen per jaar. Ook als je een nieuw concept wilt valideren, biedt SaaS een lage drempel om te starten en te kijken of het werkt. Heb je geen grote groeiambities en voldoet de huidige inrichting van het platform, dan is er geen reden om te wisselen. Wanneer kies je voor Magento met de elgentos B2B Suite? Magento is de logische keuze op het moment dat je tegen de limieten van je SaaS-platform aanloopt, of als je die limieten voor wilt zijn. Medewerkers die processen anders willen inrichten, klanten met specifieke eisen, groeiambities die het platform niet kan bijbenen. Dat zijn de signalen. Zit je tussen de €5 en €10 miljoen omzet en wil je doorgroeien naar €50 miljoen of meer? Dan is een SaaS-platform vrijwel zeker een rem. Bij Magento bepaal jij het tempo, het maatwerk en de richting. Niet je leverancier. Ook een principiële overweging speelt mee: wil je bedrijfskritische software in eigen beheer hebben? Dan is Magento een goede optie. Benieuwd welk platform bij jouw bedrijf past? We denken graag met je mee. Neem contact op en we leggen samen de opties op tafel. ### [Hoe Haibu ook z'n traagste bezoekers een snelle webshop geeft](https://elgentos.nl/blog/het-90e-percentiel-liegt-niet) Gemiddelden liegen, het 90e percentiel niet. Hoe we Haibu's p90 UX-score van ~70 naar ~90 tilden, en wat RUMvision 2.0 daarmee te maken heeft. Het 90e percentiel liegt niet Een gemiddelde laadtijd is een geruststellend getal. Het is alleen ook een leugenaar. Een mooi gemiddelde verstopt precies de mensen waar je je zorgen om zou moeten maken: de bezoeker op een trager toestel, met een matige verbinding, in de trein tussen Groningen en Utrecht. Die telt in het gemiddelde nauwelijks mee, maar het is wel iemand die iets wil kopen. Daarom kijken we niet naar het gemiddelde, maar naar het 90e percentiel (p90). Vertaald: hoe snel is je webshop voor de traagste 10% van je bezoekers? Scoor je daar goed, dan weet je zeker dat de andere 90% het minstens zo goed heeft. Het is de strengste maatstaf die er is, en daarom de enige die echt iets zegt. Bij Haibu zit die p90 nu structureel rond de 90 op 100. Oftewel: zelfs je traagste bezoekers krijgen een webshop die snel aanvoelt. Hoe we daar kwamen, en welke rol RUMvision 2.0 daarin speelt, lees je hieronder. Waarom p90, en waarom RUMvision 2.0 er zo op hamert RUMvision lanceerde in april 2026 versie 2.0, een complete herbouw van hun Real User Monitoring-platform. RUM betekent: je meet de echte bezoeker, niet een gesimuleerde test. Of zoals zij het zelf kernachtig zeggen: lab data is een simulatie, RUM is de realiteit. Het mooiste aan 2.0 is dat het je expliciet naar dat 90e percentiel duwt. Een PageSpeed-score of een groen vinkje op je Core Web Vitals klopt vaak voor de doorsnee-bezoeker, terwijl er een hele groep mensen een trage ervaring heeft zonder dat je het doorhebt. RUMvision 2.0 zet die groep vooraan, met onder andere een Health Check die problemen als layout shifts (CLS), trage interacties en mislukte bfcache-hits automatisch opspoort en weer dichtzet zodra ze opgelost zijn. Je kunt je dus niet meer verschuilen achter een gemiddelde. Precies zoals het hoort. De case: Haibu van 70 naar 90 Haibu draait op Magento 2 met een Hyva-frontend, al een snelle basis. Maar al snel is voor ons geen eindstation, het is een startpunt. In de RUMvision-grafiek over het afgelopen jaar zie je het verhaal in een oogopslag. Tot eind september 2025 schommelde de p90 UX-score (en de FUX-score, die specifiek de eerste pagina-load meet) rond de 70. Prima, niet meer dan dat. Rond 30 september 2025 maakt de lijn een duidelijke sprong omhoog naar de lage 80, en daarna klimt hij gestaag door naar rond de 90, waar hij sindsdien blijft hangen. Geen toeval, geen meetfout: dat is het moment waarop een reeks performance-optimalisaties live ging. Wat we precies hebben gedaan Varnish opnieuw ingericht (de grootste hefboom). We hebben de volledige Varnish-configuratie herschreven met onze eigen elgentos/magento2-varnish-extended, inclusief Xkey voor slimmere cache-invalidatie en gerichte caching van media- en statische bestanden. Het resultaat: een hogere cache hit rate, een lagere Time To First Byte (TTFB) en daarmee een snellere Largest Contentful Paint (LCP). Dit is verreweg de belangrijkste reden voor de sprong eind september. Meer over die aanpak lees je in onze Magento 2 Varnish taskforce. Checkout-succespagina opgeschoond. We haalden een overbodige database-query van de succespagina af (en ruim 60 regels dode code), zodat die pagina na het afrekenen sneller rendert. Prismic-koppeling afgeknepen. De content-integratie laadde meer producten dan nodig; we filteren nu alleen de relevante, wat queries lichter maakt. Snappier winkelwagen. We hebben de winkelwagen-interacties versneld, zodat aanpassingen meteen feedback geven. Beter voor de Interaction to Next Paint (INP) en voor het gevoel. Stuk voor stuk geen rocket science. Samen tillen ze de p90 met zo'n 20 punten omhoog, en dat is precies waar het ons om gaat: meetbaar resultaat voor echte bezoekers, niet voor een testserver. Waarom dit zonder RUM gokwerk was geweest Hier komt het hele punt van RUM samen. Hadden we deze optimalisaties met PageSpeed Insights gemeten, dan hadden we een leuk lab-cijfer gehad en een schouderklopje. Maar we hadden niet geweten of de bezoeker op dat tragere toestel er ook iets van merkte. Met RUMvision 2.0 zien we het wel: de p90 die omhoog kruipt, dag na dag, op basis van duizenden echte sessies. En sinds v2 koppelen we daar onze deploys aan via annotations, zodat elke release als een verticale lijn in de tijdlijn staat. Zakt of stijgt een score, dan zien we meteen welke release erbij hoort. Geen reconstructie achteraf, gewoon de feiten op een rij. Twee Groningse partijen, een obsessie met snelheid Dat we hier zo enthousiast over zijn, heeft ook een lokaal randje: RUMvision komt, net als wij, uit Groningen. Twee noordelijke bedrijven die aan de performance van Nederlandse en internationale webshops werken. Geen onzin, gewoon doen, en de cijfers laten spreken. Wil je weten waar jouw webshop staat op het 90e percentiel, dus voor de bezoekers die je nu waarschijnlijk niet ziet? Daar kijken we graag met je naar. Neem contact op en we leggen de echte cijfers van jouw shop op tafel. ### [RUMvision v2: releases markeren met annotations](https://elgentos.nl/blog/elgentos-rumvision-v2-integratie-met-annotations) Ontdek RUMvision v2 nieuwe functies: release tracking via annotations en snelle pipeline implementatie binnen 2 dagen. RUMvision v2: releases markeren via annotations, pipeline binnen twee dagen live RUMvision heeft zojuist v2 gelanceerd. En daar zaten we bij Elgentos, als klant van het eerste uur, met smart op te wachten. Niet vanwege een nieuwe kleurstelling of een opgepoetst dashboard, maar om één concrete reden: v2 komt met een API. En dat opent de deur naar het soort automatisering dat wij voor onze klanten al jaren standaard doen met onze andere monitoring tools. En dan is er nog een extra reden waarom we deze lancering met wat extra trots volgen: RUMvision komt, net als wij, uit Groningen. Twee Groningse bedrijven die vanuit het noorden aan de performance van Nederlandse en internationale webshops werken. Groningse nuchterheid, Groningse techniek, en geen onzin. Het zijn dit soort kruisbestuivingen tussen lokale partijen die laten zien dat je voor wereldklasse-tooling niet per se naar Amsterdam, Berlijn of San Francisco hoeft te kijken. Stad en Ommeland, gewoon. Waarom annotations het eerste zijn wat we aanpakken Als je een Magento- of Hyvä-shop draait, wil je één ding niet: niet weten waar een performance-degradatie vandaan komt. Je grafiek zakt weg op een woensdagmiddag. Was dat een release? Een third-party script die stilletjes 200ms duurder werd? Een A/B-test die live ging? Annotations lossen dat op door élke deploy als verticale lijn in je monitoring-timeline te zetten. Zie je op dinsdag om 14:32 dat je LCP omhoog schiet en er precies op dat tijdstip een release-marker staat? Dan weet je direct waar je moet kijken. Onze andere monitoring stack, Tideways en Sentry, ondersteunde deze manier van werken al langer. De deployment pipeline van Elgentos stuurt bij elke release automatisch een annotation naar beide tools, met commit hash, environment en release-naam. RUMvision was de laatste schakel die we nog handmatig moesten correleren. Daar maken we nu een eind aan. Pipeline binnen twee dagen live, rollout loopt We waren voorbereid. Zodra v2 uitkwam hebben we het RUMvision-endpoint toegevoegd aan dezelfde pipeline-stap die Tideways en Sentry al aanroept. Eén klein stukje code, één secret in onze CI, en een rollout-plan dat we al tientallen keren hebben uitgevoerd. Binnen twee dagen stond de CI/CD-integratie. Elke nieuwe release van een klant die daarna door de pipeline ging, stuurt automatisch een annotation naar RUMvision. Het uitrollen naar alle bestaande klantomgevingen doen we stap voor stap, in het reguliere release-ritme van elke shop. Geen aparte haast-deploys, geen ticket voor de klant, gewoon meeliften op de eerstvolgende release die er toch al aankomt. Dat is precies waarom we zoveel waarde hechten aan een monitoring-stack die we als agency centraal beheren: één goede integratie, en alle klanten profiteren vanzelf mee zodra ze door de pipeline komen. Wat je nu in de praktijk ziet Correlatie in één oogopslag: zakt je Core Web Vitals-score, dan zie je direct of er een release vlak ervoor was. Snellere rollbacks: wordt een degradatie bevestigd tegen een specifieke release, dan is de beslissing om terug te draaien triviaal. Betere post-mortems: annotations geven ons een harde tijdlijn om op te bouwen, in plaats van een reconstructie achteraf. Wat we hierna gaan bouwen Annotations zijn stap één. De volgende stap is waar het écht interessant wordt. Wij willen alle monitoring-data over één tijdlijn leggen (Rumvision RUM-data, Tideways APM-traces, Sentry errors, deploy-events, business-KPI's) en dat geheel door AI laten analyseren. Niet om een mooi dashboardje op te leuken, maar om de vraag te beantwoorden die nu altijd tijd kost: "Er is iets aan de hand op deze shop. Wat is er veranderd, en wat is de meest waarschijnlijke oorzaak?" Een LLM die toegang heeft tot annotations, performance-metrics, error-rates en conversie kan die vraag in seconden van een hypothese voorzien waar een engineer normaal een half uur mee bezig is. Dát is het punt waar monitoring-tooling van reactief naar proactief kantelt. Een Rumvision MCP zou mooi zijn Om die volgende stap sneller te zetten, zou een MCP-server van Rumvision enorm helpen. MCP (Model Context Protocol) is door Anthropic geïntroduceerd en wordt inmiddels door alle grote AI-platforms ondersteund. Met een Rumvision MCP kan elke AI-agent (Claude en onze eigen agents) direct en veilig RUM-data opvragen, correleren met andere bronnen en conclusies trekken, zonder dat elke partij een eigen brug hoeft te schrijven. Rumvision heeft de data, wij (en andere klanten) hebben de use cases. Een MCP-server zou het stekkertje zijn dat die twee werelden verbindt. Mocht het ervan komen, dan denken we natuurlijk graag mee als launching partner. ### [Waarom Bricks? 5 Voordelen B2B Commerce Platform](https://elgentos.nl/blog/waarom-steeds-meer-bedrijven-kiezen-voor-bricks) Ontdek waarom bedrijven kiezen voor Bricks. Lees over de 5 belangrijkste voordelen van dit B2B commerce platform. Afgelopen maart stonden we op de Webwinkel Vakdagen, waar we in gesprek gingen met partners, klanten en andere e-commerce professionals. In meerdere gesprekken kwam één onderwerp vaak terug: Bricks B2B. Maar wat is Bricks B2B precies en waarom is het zo populair? Wat is Bricks B2B? Bricks is een accelerator, een vooraf opgebouwde basis waarmee we snel B2B commerce platformen ontwikkelen. De basis voor Bricks is Magento, Hyva en de Elgentos B2B suite. Je profiteert van een snelle time-to-market, terwijl je tegelijkertijd eigenaar blijft van je platform en data. Daarnaast behoud je de vrijheid om door te ontwikkelen en nieuwe functionaliteiten toe te voegen naarmate je organisatie groeit. De voordelen van SaaS, zonder de nadelen. De 5 voordelen van Bricks B2B Bricks B2B biedt verschillende voordelen. Hieronder lichten we de vijf belangrijkste toe. 1. Significant betere performance, direct zichtbaar in conversie Performance is een commerciële KPI. Bricks B2B is opgebouwd op een lean architectuur: schone HTML-output, minimale JavaScript footprint, geen overhead van zware page builders en een sterk gereduceerde dependency op externe scripts. Het resultaat is meetbaar in Core Web Vitals (LCP, INP, CLS) die ruim binnen de Google-thresholds vallen, ook op productpagina's met complexe configuraties en grote catalogi. Voor de business betekent dit lagere bounce rates, hogere conversie en een betere gebruikerservaring voor zowel inkopers in een self-service portal als sales tijdens een order entry-flow. 2. Lagere Total Cost of Ownership over de gehele levenscyclus De initiële bouwkosten van een B2B platform zijn slechts een deel van het verhaal. De werkelijke kosten zitten in onderhoud, security updates, plugin-conflicten, hosting-overhead en de marginale kosten van elke nieuwe feature. Bricks B2B reduceert deze structureel doordat er minder externe modules nodig zijn, de codebase compacter en beter testbaar is, en upgrades minder regressierisico met zich meebrengen. In een typische drie jaars TCO-vergelijking levert dit een aantoonbaar lagere run-rate op, met daarnaast minder ongeplande incidenten en een voorspelbaarder onderhoudsbudget. Voor CFO's en IT-directie betekent dit een platform dat na go-live niet duurder wordt naarmate de complexiteit toeneemt. 3. Versnelde Time To Market voor nieuwe proposities en campagnes In B2B is snelheid van uitrol een competitief voordeel. Nieuwe productlijnen, klantspecifieke landingspagina's, campagne-flows of accountspecifieke pricing-pagina's moeten binnen dagen live kunnen, niet binnen sprints. Bricks B2B is ontworpen rond herbruikbare componenten en een modulaire content-structuur, waardoor de doorlooptijd van concept naar productie aanzienlijk korter is dan bij traditionele Magento-implementaties. Dit verhoogt de wendbaarheid van marketing en sales, en stelt de organisatie in staat om sneller te reageren op marktontwikkelingen, RFQ's en strategische verschuivingen in de portfolio. 4. Operationele autonomie voor marketing en e-commerce teams Zo min mogelijk afhankelijkheid bij de development agency voor kleine wijzigingen. Bricks B2B brengt de balans terug: de structurele componenten zijn solide developer-gebouwd en getest, maar contentbeheer, pagina-opbouw en visuele aanpassingen kunnen door het e-commerce team zelf worden uitgevoerd. Geen ticket voor een tekstwijziging, geen sprintplanning voor een nieuwe USP-blok. Dit ontlast het development team voor strategisch werk en geeft marketing de directe controle over experimenten, A/B-tests en optimalisaties. Het tempo van iteratie stijgt, de afhankelijkheidsketen verkort. 5. Structurele SEO-voordelen en sterkere organische groei Zoekmachines belonen technisch gezonde sites. Schonere HTML, snelle render-tijden, correcte structured data, semantische opbouw en stabiele Core Web Vitals zijn geen optionele verbeteringen, het zijn ranking factors. Bricks B2B is op deze fundamenten gebouwd, wat resulteert in betere indexering, hogere posities op commerciële zoektermen en een sterker organisch fundament. Voor de business betekent dit een gezondere blended CAC: minder afhankelijkheid van betaalde acquisitie, een groter aandeel organisch en directe traffic, en een duurzamer groeimodel. SEO wordt zo van een marketing-inspanning een architectuur-voordeel. Wanneer is Bricks B2B wel of niet geschikt? Bricks B2B is geen one-size-fits-all oplossing, en dat is een bewuste keuze. Het platform is ontwikkeld voor B2B organisaties die behoefte hebben aan een schaalbaar, performant en beheersbaar commerce-fundament zonder de overhead van een volledig maatwerkimplementatie. Denk aan groothandels, fabrikanten en distributeurs die willen versnellen op digitale self-service, klantspecifieke pricing en account-based ordering, en daarbij grip willen houden op zowel de roadmap als de operationele kosten. De kracht van Bricks B2B zit in de combinatie van een sterke standaard met gerichte ruimte voor extensie. Daar waar processen zich lenen voor configuratie boven codering, levert het platform directe waarde. Voor organisaties met diep verweven legacy-integraties, ongebruikelijke fulfilment-modellen of een productlogica die fundamenteel afwijkt van gangbare B2B-patronen, bouwen wij die oplossing uiteraard graag, maar dan via een volledig op maat opgezet traject in plaats van binnen het Bricks B2B kader. Wij hebben ruime ervaring met dergelijke complexe implementaties en zien het juist als onze kracht om die goed neer te zetten. De keuze tussen Bricks B2B en een maatwerktraject is dan ook geen keuze tussen wel of geen samenwerking, maar tussen twee verschillende leveringsmodellen die beide hun plek hebben. Kortom: Bricks B2B is geschikt wanneer snelheid, beheersbaarheid en TCO leidend zijn. Past het bedrijfsproces daar niet bij, dan zetten wij een maatwerkoplossing op die wel volledig aansluit. Welke route het beste past, bepalen we het liefst samen op basis van de feitelijke situatie en strategische prioriteiten. Wat betekent Bricks voor je totale kosten? Door te werken met een accelerator zoals Bricks B2B, verschuiven de kosten van maatwerk en complexiteit naar een stabiele en voorspelbare basis. In onderstaand voorbeeld zie je hoe de Total Cost of Ownership (TCO) zich over drie jaar ontwikkelt. Is Bricks B2B de juiste keuze voor jouw organisatie? Of Bricks B2B de juiste keuze is, hangt af van je wensen en doelen. Wil je meer controle, een sneller e-commerce platform en lagere onderhoudskosten? Dan is Bricks B2B zeker het overwegen waard. Het platform sluit goed aan bij organisaties die flexibel willen werken en continu willen optimaliseren. Benieuwd of Bricks B2B past binnen jouw organisatie? We denken graag met je mee. ### [Wat kost een Magento-platform écht? Onderhoud, development en Total Cost of Ownership uitgelegd](https://elgentos.nl/blog/wat-kost-een-magento-platform-echt) Magento staat bekend als een krachtig platform voor B2B-e-commerce. Maar ook als een platform waarvan de kosten lastig te voorspellen zijn. Veel organisaties horen verhalen over dure upgrades, onverwachte onderhoudskosten en developmentprojecten die blijven doorgroeien. Magento staat bekend als een krachtig platform voor B2B-e-commerce. Maar ook als een platform waarvan de kosten lastig te voorspellen zijn. Veel organisaties horen verhalen over dure upgrades, onverwachte onderhoudskosten en developmentprojecten die blijven doorgroeien. De vraag die dan vaak op tafel komt: wat kost Magento eigenlijk echt? Het eerlijke antwoord: dat hangt minder af van het platform zelf en meer van hoe je onderhoud en development organiseert. In dit artikel kijken we naar de twee belangrijkste kostenstromen van Magento: onderhoud en feature development. En hoe bedrijven daar in de praktijk grip op krijgen. Waarom Magento-onderhoud en developmentkosten vaak onvoorspelbaar lijken Veel organisaties ervaren Magento als een platform waarbij onderhoudskosten en developmentkosten lastig te voorspellen zijn. Zeker bij B2B-platforms, waar vaak maatwerkfunctionaliteit en integraties nodig zijn. Dat komt meestal door het traditionele uurtje-factuurtje model. Bedrijven vragen nieuwe functionaliteiten aan, developers schatten het werk in en sturen achteraf een factuur op basis van het aantal uren. Daarnaast is het voor organisaties vaak lastig om vooraf in te schatten hoeveel development er daadwerkelijk nodig zal zijn. Nieuwe integraties, veranderende productstructuren of groei van het assortiment zorgen ervoor dat de roadmap blijft evolueren. Het probleem: de totale kosten zijn vooraf moeilijk te voorspellen. In sommige gevallen lopen onderhoud en updates op tot honderden uren per jaar, zonder dat daar vooraf een duidelijk budget voor is vastgesteld. Voor organisaties die hun platform als strategisch kanaal zien, kan dat lastig zijn om te plannen. Hoe bedrijven dit vaak proberen op te lossen In de praktijk zien we dat organisaties verschillende manieren proberen om grip te krijgen op Magento-kosten. Onderhoud uitstellen Sommige bedrijven stellen updates zo lang mogelijk uit. Dat lijkt op korte termijn goedkoper, maar leidt vaak tot grotere technische problemen op langere termijn. Alles intern organiseren Andere organisaties proberen Magento volledig intern te beheren. Dat vereist echter specialistische kennis en blijkt in de praktijk lastig schaalbaar. Overstappen naar een SaaS-platform Een derde reactie is dat organisaties overwegen over te stappen naar een SaaS-platform zoals Shopify. Bij SaaS-platforms betaal je een vast maandbedrag waarin hosting, updates en onderhoud zijn inbegrepen. Dat maakt de kosten voorspelbaar en verlaagt de technische complexiteit. Tegelijkertijd betekent het ook dat je minder flexibiliteit hebt. Orderflows, productstructuren en B2B-functionaliteit liggen grotendeels vast. Magento wordt juist gekozen door organisaties die hun digitale processen volledig willen afstemmen op hun business. Voor bedrijven met complexe B2B-processen kan die flexibiliteit doorslaggevend zijn. De twee kostenstromen binnen Magento Om beter grip te krijgen op de kosten, helpt het om Magento-kosten op te splitsen in twee categorieën: operationele kosten en investeringen. Operationele kosten (OPEX): onderhoud, updates en support Investeringen (CAPEX): nieuwe features en functionaliteit Door deze twee stromen uit elkaar te halen, ontstaat een realistischer beeld van wat een Magento-platform daadwerkelijk kost. De operationele kant: Magento-onderhoud en stabiliteit De eerste kostenstroom is operationeel: het draaiende houden van het platform. Daaronder vallen onder andere: Magento-updates security patches bugfixes monitoring van performance en uptime compatibiliteit met extensies In theorie klinkt dit vanzelfsprekend. In de praktijk wordt onderhoud nog vaak uitgesteld. Dat kun je vergelijken met het onderhoud van een huis. Als je jarenlang geen schilderwerk uitvoert, krijg je uiteindelijk te maken met houtrot. Het probleem wordt niet kleiner. Het wordt alleen maar duurder om te herstellen. Met e-commerce werkt het hetzelfde. Platforms die lange tijd geen updates krijgen, worden kwetsbaarder en moeilijker te onderhouden. Waarom onderhoud cruciaal is voor de security van je platform Onderhoud van een Magento-platform wordt soms gezien als een technische formaliteit: updates installeren, bugs oplossen en af en toe een extensie bijwerken. In werkelijkheid is onderhoud vooral een security maatregel. Magento ontvangt regelmatig security patches die kwetsbaarheden in het platform oplossen. Wanneer deze updates niet worden geïnstalleerd, blijven die kwetsbaarheden bestaan en dat maakt een platform een aantrekkelijk doelwit voor aanvallen. We zien regelmatig platforms die maanden of zelfs jaren geen updates hebben gehad. Daardoor kunnen ze relatief eenvoudig worden gehackt. Een veelvoorkomende aanval is het plaatsen van een script dat creditcardgegevens onderschept tijdens het betaalproces. Voor de klant lijkt het alsof hij veilig betaalt, terwijl de gegevens in werkelijkheid naar een externe partij worden doorgestuurd. De gevolgen kunnen groot zijn: datalekken van klantgegevens reputatieschade mogelijke boetes bij overtreding van privacywetgeving verlies van vertrouwen bij klanten Regelmatig onderhoud en security updates zijn daarom geen optionele kostenpost, maar een essentieel onderdeel van een professionele e-commerceomgeving. De verborgen kosten van uitgesteld onderhoud Wanneer onderhoud wordt uitgesteld, lijkt dat op korte termijn een kostenbesparing. Het platform draait immers door. Bestellingen komen binnen en er lijkt geen directe aanleiding om tijd en budget vrij te maken voor updates. Maar in werkelijkheid stapelen de risico’s zich op. Software veroudert. Extensies raken incompatibel met nieuwe versies van Magento. Security patches blijven liggen en de technische schuld groeit langzaam verder. Op een gegeven moment ontstaat er een situatie waarin een eenvoudige update niet meer voldoende is. In plaats daarvan moet er een grotere technische ingreep plaatsvinden om het platform weer stabiel en veilig te maken. Dat kan bijvoorbeeld betekenen: meerdere Magento-versies in één keer upgraden extensies vervangen die niet meer worden ondersteund maatwerk opnieuw testen of aanpassen integraties opnieuw configureren Waar regelmatig onderhoud vaak voorspelbare kosten heeft, kan achterstallig onderhoud leiden tot grotere en moeilijker te plannen projecten. Daarom kiezen steeds meer organisaties ervoor om onderhoud structureel te organiseren als vast onderdeel van hun e-commerce operatie. De investeringskant: feature development De tweede kostenstroom is feature development. Hieronder vallen alle nieuwe functionaliteiten die een platform laten meegroeien met de business, zoals: klant-specifieke B2B order flows productconfiguratoren aanpassingen in klant-specifieke prijslijsten ERP-integraties automatiseringen in order flows nieuwe klantportalen Hoewel er veel features standaard geleverd worden met de Elgentos B2B suite, is altijd nuance aan maatwerk mogelijk binnen een dergelijk project. Een configurator voor een technische groothandel werkt bijvoorbeeld heel anders dan voor een producent of distributeur. Daarom wordt feature development meestal niet als vaste projectprijs verkocht, maar als flexibele developmentcapaciteit. Teams reserveren bijvoorbeeld een aantal developmenturen per sprint en bepalen per periode welke verbeteringen prioriteit krijgen. Waarom succesvolle Magento platforms blijven doorontwikkelen Een veelvoorkomende misvatting is dat development stopt zodra een platform live staat. In de praktijk werken veel organisaties jarenlang door aan hun platform. Nieuwe productlijnen, veranderende klantverwachtingen en integraties met andere systemen zorgen ervoor dat er continu nieuwe functionaliteiten nodig blijven. De bedrijven die het meeste rendement uit hun platform halen, zijn vaak juist de organisaties die blijven investeren in verbetering omdat hun platform een belangrijk onderdeel is van hun groeistrategie. Juist daarom kijken veel organisaties niet alleen naar losse developmentprojecten, maar naar de Total Cost of Ownership (TCO) van hun platform over meerdere jaren. Wat kost een Magento-platform in de praktijk? Voor B2B-organisaties is het vaak zinvoller om niet naar losse projectprijzen te kijken, maar naar de Total Cost of Ownership (TCO) over meerdere jaren. Onderstaand voorbeeld laat zien hoe de kosten van een Magento-omgeving zich over drie jaar kunnen ontwikkelen. | Jaar | 1 | 2 | 3 | Totaal | |---------------------------------------|------|------|------|--------| | Discover & Build | €18k | – | – | €18k | | Implementatie huisstijl & theme | €30k | – | – | €30k | | Maatwerk (stelpost) | €30k | – | – | €30k | | Expand & Build (development) | – | €10k | €10k | €20k | | Optimize & Build (Magento Total Care) | €18k | €18k | €18k | €54k | | SLA | €10k | €10k | €9k | €20k | | Hosting + infrastructuur | €6k | €6k | €6k | €18k | Totale investering over drie jaar: ongeveer €198.200. Wat hier opvalt: Jaar 1 is het duurst, omdat daar de implementatie en het maatwerk plaatsvinden. Daarna stabiliseren de kosten grotendeels. De belangrijkste kostenpost verschuift naar onderhoud en doorontwikkeling. Dit soort overzicht helpt organisaties om e-commerce als een structurele investering te benaderen in plaats van een reeks losse projecten. De belangrijkste stap om Magento-kosten voorspelbaar te maken, is het scheiden van twee dingen: operationeel onderhoud (OPEX) en doorlopende innovatie (CAPEX). In de bovenstaande TCO zijn de bovenste 4 regels doorlopende innovatie. De onderste 3 onderhoud. Wanneer onderhoud en updates structureel worden georganiseerd en development flexibel kan meebewegen met de business, ontstaat niet alleen meer stabiliteit en security, maar ook beter inzicht in de totale kosten van een Magento-platform. Organisaties die Magento succesvol inzetten, behandelen hun platform daarom niet als een eenmalig project, maar als een platform dat continu wordt onderhouden en doorontwikkeld. Veel bedrijven kiezen er daarom voor om onderhoud structureel te organiseren in een vast onderhoudsmodel. Met Magento Total Care zorgt Elgentos ervoor dat de Magento-platforms van onze klanten continu worden bijgewerkt, beveiligd en geoptimaliseerd zonder onvoorspelbare onderhoudskosten. Zo blijft het platform stabiel, veilig en klaar voor verdere ontwikkeling. ### [AI-readiness webinar: is jouw organisatie klaar?](https://elgentos.nl/blog/webinar-aiblueprint-x-elgentos-is-jouw-organisatie-ai-ready) Bekijk het webinar van Elgentos x AIBlueprint over AI-readiness. Ontdek of jouw organisatie klaar is voor AI-implementatie. Regelmatig organiseren we bij elgentos een webinar waarin we samen met experts actuele thema’s bespreken. Dit keer gingen we in gesprek met Jantine Doornbos van AIBlueprint. Het onderwerp van deze sessie: AI-readiness. Veel organisaties voelen dat ze iets met AI moeten. Er wordt geëxperimenteerd met tools zoals ChatGPT, er worden interne pilots gestart en er ontstaan ideeën over automatisering. Maar vaak ontbreekt de strategische basis. Wat betekent het nu echt om AI-ready te zijn? En welke stappen moet je zetten om AI succesvol én verantwoord te implementeren? Waarom AI-readiness belangrijk is AI-readiness gaat over de mate waarin jouw organisatie voorbereid is op het inzetten van AI. Dat betekent niet alleen dat je toegang hebt tot tooling, maar vooral dat je processen, data en visie op orde zijn. In de praktijk zien we dat bedrijven wel ambitie hebben, maar niet altijd weten waar ze moeten beginnen. AI is namelijk veel meer dan een slimme chatbot; het raakt je datafundament, je kernprocessen en zelfs je governance. Tijdens het webinar deelde AIBlueprint vijf stappen die organisaties helpen om AI-readiness te bereiken. Alles begint bij het probleem. AI is geen doel op zich, maar een middel. De vraag is dus: welk concreet probleem wil je oplossen? Dit kan variëren van kleine procesverbeteringen tot grotere strategische vraagstukken. Zonder een helder gedefinieerd probleem blijft AI een experiment zonder duidelijke richting. Data vormt het fundament van iedere AI-toepassing. Toch blijkt dat bij veel organisaties data versnipperd is opgeslagen, niet goed gestructureerd is of onvoldoende beveiligd wordt. Voor een succesvolle implementatie moet data inzichtelijk, genormaliseerd en veilig toegankelijk zijn. Pas dan kan AI daadwerkelijk waarde toevoegen. Een belangrijke stap is het nemen van ethische verantwoordelijkheid. Welke data gebruik je? Mag je deze data inzetten voor AI? Is de dataset schoon en vrij van vooroordelen? Organisaties moeten hier bewust keuzes in maken. AI-readiness betekent ook dat je nadenkt over privacy, bias en transparantie. De technologiekeuze speelt een belangrijke rol. Veel bedrijven grijpen direct naar bekende AI-platformen, maar staan niet altijd stil bij de strategische en juridische implicaties. Voor Europese organisaties is het belangrijk om bewust te kiezen voor tooling die past binnen de wetgeving en duurzaam inzetbaar is op de lange termijn. Technologie moet ondersteunend zijn aan je strategie, niet andersom. Een duidelijke visie op AI-beleid essentieel. Wat wil je als organisatie bereiken met AI in de komende zes tot twaalf maanden? Waar mag AI zelfstandig beslissingen nemen en waar niet? Door hier vooraf kaders voor te bepalen, voorkom je versnipperde initiatieven en creëer je draagvlak binnen teams. Wat gaat er vaak mis? Een veelvoorkomende valkuil is dat organisaties starten bij de tool in plaats van bij de strategie. Er wordt geëxperimenteerd in de hoop dat het automatisch winst oplevert. In werkelijkheid vraagt AI om een stevig datafundament en een duidelijke koppeling met het kernproces. Een andere valkuil is dat AI wordt ingezet voor losse toepassingen met een hoog gimmick-gehalte, maar zonder structurele impact. Denk aan een automatisch gegenereerde afbeelding voor een blog, terwijl het echte optimalisatiepotentieel ligt in productdata, pricing of procesautomatisering. Wanneer AI niet gekoppeld is aan het kernproces, blijft adoptie beperkt en blijft de impact klein. Wat doet AI – en wat niet? AI is bijzonder krachtig in het optimaliseren van bestaande processen. Het versnelt herhaalbaar denkwerk, ondersteunt bij analyses en automatiseert terugkerende taken. Wat AI minder goed doet, is volledig nieuwe bedrijfsmodellen creëren zonder menselijke sturing. Wanneer je AI inzet voor compleet nieuwe processen, ben je eigenlijk je productaanbod aan het verbreden in plaats van te optimaliseren. De grootste winst zit vaak in het slimmer en efficiënter maken van wat je al doet. De Elgentos-aanpak voor e-commerce AI-readiness Bij Elgentos kijken we specifiek naar e-commerceorganisaties. Ook wij hanteren vijf belangrijke stappen om AI succesvol te implementeren. We starten met strategische positionering. Waar in jouw organisatie mag AI-beslissingen ondersteunen of nemen? Bij bedrijf kritische of juridische processen blijft menselijke controle essentieel. AI werkt altijd naast de mens, niet ter vervanging. Daarna focussen we op datakwaliteit en toegang. Zonder specifieke bedrijfsdata is AI in feite een generiek model dat gokt op basis van waarschijnlijkheid. Door AI te voeden met jouw eigen, gestructureerde data, wordt de output relevanter en consistenter. Vervolgens kijken we naar processelectie. Waar in de organisatie zit herhaalbaar denkwerk binnen duidelijke kaders? Als de controle van de output minder tijd kost dan het uitvoeren van de taak zelf, is AI vaak een geschikte oplossing. Human in the loop is daarbij onmisbaar. Zeker bij belangrijke bedrijfsprocessen blijft verificatie noodzakelijk. AI kan ondersteunen, maar eindverantwoordelijkheid blijft bij mensen. Tot slot is continue evaluatie cruciaal. AI-modellen moeten gemonitord en bijgestuurd worden. Kleine afwijkingen in output kunnen grote gevolgen hebben, bijvoorbeeld bij productinformatie of prijslogica. Daarom is structurele controle onderdeel van een volwassen AI-strategie. Is jouw organisatie AI-ready? AI-readiness vraagt om bewuste keuzes. Over data. Over processen. Over technologie. En over governance. Het begint bij inzicht in je huidige situatie en eindigt bij een strategische, duurzame implementatie waarbij mens en technologie samenwerken. Benieuwd waar jouw organisatie staat op het gebied van AI-readiness? We gaan graag in gesprek om samen te ontdekken hoe we jouw e-commerceorganisatie AI-ready kunnen maken. ### [3 B2B Commerce Trends 2026 | Webwinkel Vakdagen](https://elgentos.nl/blog/de-3-trends-van-de-webwinkel-vakdagen) Ontdek de 3 belangrijkste B2B commerce trends voor 2026: AI-integratie, klantgerichte webshops en presteren onder druk. Op 25 en 26 maart zijn we aanwezig op de Webwinkel Vakdagen in de Jaarbeurs in Utrecht, stand 53. De plek waar het volledige B2B commerce landschap samenkomt en waar de trends van 2026 centraal staan. Maar wat zijn momenteel de belangrijkste ontwikkelingen binnen B2B commerce? Dit zijn de drie trends die je niet mag missen. AI niet meer weg te denken AI ontwikkelt zich razendsnel en de impact op e-commerce is groot. Voor B2B-webshops wordt het steeds belangrijker om AI niet zomaar in te zetten, maar strategisch. Wij zien dit dagelijks terug in de Magento-projecten waar we aan werken. Denk aan chatbots die vragen van inkopers direct beantwoorden, AI die productaanbevelingen personaliseert op basis van orderhistorie, of voorspellingen die je inkoopproces slimmer maken. De vraag is niet meer of je AI inzet, maar hoe slim en waar je het inzet. Webshops die zich aanpassen aan de klant Personalisatie is één van de grootste kansen voor B2B-webshops in 2026. Door data slim te analyseren zoals klikgedrag, orderhistorie, klantgroepen. Zo kun je elke bezoeker een relevante ervaring bieden. In B2B is dit extra waardevol: een vaste inkoopmanager verwacht andere content en aanbevelingen dan een nieuwe bezoeker. Een gepersonaliseerde webshop verhoogt niet alleen de conversie, maar versterkt ook de klantrelatie op lange termijn. Presteren onder druk Nederlanders kopen steeds meer online en stellen hogere eisen en in B2B geldt dat dubbel. Trage laadtijden, haperingen in het bestelproces of integratiefouten komen direct aan bij je klanten en je omzet. We zien bij veel Magento-platforms dat groei nieuwe druk legt op de technische infrastructuur. Meer klanten, meer integraties, meer complexiteit. De uitdaging: jouw platform moet meegroeien zonder in te leveren op snelheid en stabiliteit. Klaar voor 2026? Het onderhouden en optimaliseren van je webshop wordt steeds complexer. Denk aan het strategisch inzetten van AI, het toepassen van personalisatie en het continu verbeteren van prestaties en snelheid.  Wil jij jouw webshop laten groeien en klaar zijn voor de trends van 2026? Elgentos helpt je graag om het maximale uit jouw webshop te halen. Tijdens de Webwinkel Vakdagen gaan we graag in gesprek om samen te kijken hoe we jouw webshop naar een hoger niveau kunnen tillen. ### [Waarom B2B-bedrijven voor Magento blijven kiezen](https://elgentos.nl/blog/waarom-veel-b2b-bedrijven-voor-magento-blijven-kiezen) Ontdek waarom B2B-bedrijven ondanks uitdagingen trouw blijven aan Magento en hoe juiste implementatie het verschil maakt. Veel B2B-bedrijven merken dat hun Magento-platform traag aanvoelt, complex is geworden of steeds meer kost om te onderhouden. Releases duren langer dan verwacht, updates worden vooruitgeschoven en elke wijziging voelt als een risico. De reflex is dan vaak: Moeten we overstappen naar een ander platform? Maar die vraag leidt zelden tot het juiste antwoord. De ervaring met Magento zegt in veel gevallen meer over de kwaliteit van de implementatie en het beheer dan over het platform zelf. Waarom veel Magento-problemen terug te voeren zijn op de implementatie Magento bestaat al lang. En juist dat lange bestaan verklaart een groot deel van de problemen die organisaties vandaag ervaren. Jarenlang was Magento het enige platform voor serieuze webshops. Het werd door een breed spectrum aan partijen ingezet: grote bureaus, kleinere agencies, freelancers. Dat maakte het platform toegankelijk, maar het betekende ook dat de kwaliteit van implementaties sterk uiteenliep. Niet elke partij beschikte over diepgaande Magento-kennis of werkte met vaste technische standaarden. Implementaties werden vaak opgezet om te “werken”, niet om duurzaam te blijven werken. Zonder structurele onderhoudsafspraken, periodieke opschoning en een duidelijke update-strategie ontstaat technische schuld. Code functioneert nog, maar is niet toekomstbestendig. De gevolgen daarvan worden jaren later vaak toegeschreven aan Magento, terwijl ze in werkelijkheid het resultaat zijn van keuzes die tijdens de implementatie zijn gemaakt en daarna nooit zijn herzien. Waarom Magento juist sterk is voor B2B-bedrijven Dat Magento vaak als “lastig” wordt ervaren, komt voort uit de context waarin het platform wordt ingezet. Het draait zelden in eenvoudige omgevingen, maar juist bij B2B-organisaties met complexe klantafspraken, processen en backend-integraties. Wanneer die complexiteit zichtbaar wordt in het dagelijks beheer, ontstaat al snel het beeld van een zwaar platform. Magento is echter geen simpele verkooplaag, maar een platform dat is ontworpen om deze complexiteit te ondersteunen. Denk aan klant-specifieke prijzen en catalogi, meerdere gebruikers en rollen per klantorganisatie, complexe orderflows en goedkeuringsstructuren en integraties met ERP-, PIM- en logistieke systemen. Daarnaast is Magento voor veel B2B-bedrijven ook financieel logisch. Het is een eigen digitaal kanaal: een asset waarin je investeert, die je kunt afschrijven en die onderdeel wordt van je bedrijfsvoering. Bij platformen waarbij je geen eigenaar wordt (zoals Shopify), blijven kosten vaak gekoppeld aan transacties of omzet. Dat maakt groei voorspelbaar duurder. Magento werkt anders. Daar neemt de marge toe naarmate het volume groeit, zonder dat het platform mee stijgt in kosten. Waarom die voordelen in de praktijk vaak niet worden waargemaakt Dat deze voordelen bestaan, betekent niet dat ze automatisch worden gerealiseerd. In de praktijk verdwijnen ze zodra de technische basis niet goed is ingericht of onderhouden. Backend-integraties worden fragiel. Performance neemt af. Kleine wijzigingen worden complex en duur. Wat bedoeld was als strategisch platform verandert in een bron van frustratie. Wat hier vaak ontbreekt, is technisch eigenaarschap, vooral bij de partij die verantwoordelijk is voor de inrichting en het beheer. Zonder duidelijke standaarden, periodieke opschoning en een vaste update-aanpak raakt een Magento-omgeving langzaam uit balans, ongeacht hoe krachtig het platform in de kern is. “Magento is traag” is meestal een gevolg Traagheid, instabiliteit en bugs worden vaak gezien als bewijs dat Magento tekortschiet. In werkelijkheid zijn het meestal signalen van technische schuld die zich over de jaren heeft opgebouwd. Updates worden uitgesteld om risico’s te vermijden, maatwerk blijft staan omdat het ooit functioneerde en extensies worden niet verwijderd omdat hun impact onduidelijk is. Daardoor groeit de onderlinge afhankelijkheid binnen het platform. Elke wijziging wordt spannender, elke release complexer. Het resultaat voelt als een traag systeem, terwijl de oorzaak ligt bij het ontbreken van structureel onderhoud en duidelijke technische regie. Waar het misgaat: gebrek aan regie bij implementatie en onderhoud Een terugkerend patroon bij organisaties die vastlopen met Magento is het ontbreken van duidelijke structuur. Onderhoud, bugfixes en nieuwe functionaliteit lopen door elkaar. Alles krijgt dezelfde urgentie. Updates concurreren met features. Stabiliteit met innovatie. Kosten worden onvoorspelbaar, omdat elk probleem een los project wordt. Wanneer een implementatiepartner vooral reageert op tickets en incidenten, in plaats van te sturen op structurele kwaliteit, ontstaat een reactieve manier van werken. Problemen worden opgelost, maar niet voorkomen. En innovatie schuift steeds verder naar de achtergrond. Wat er verandert als Magento structureel wordt onderhouden Organisaties die hier doorheen breken, maken één fundamentele keuze: onderhoud is geen ad-hoc activiteit, maar een vast onderdeel van het platform. Updates volgen een ritme. Security en stabiliteit zijn geborgd. De technische basis blijft beheersbaar. Daardoor ontstaat ruimte voor doorontwikkeling en optimalisatie, in plaats van voortdurend brandjes blussen. Het platform wordt weer wat het hoort te zijn: een stabiele asset die backend-processen ondersteunt en meegroeit met de organisatie, in plaats van een onvoorspelbare kostenpost. Het probleem ligt niet bij Magento zelf Magento is technisch krachtig, financieel logisch en procesmatig sterk. Maar het stelt eisen aan technische discipline, duidelijke keuzes en structureel beheer. Zonder die randvoorwaarden wordt elk platform complex. Met die randvoorwaarden komt Magento juist tot zijn recht. Zeker in B2B-omgevingen waar schaalbaarheid, marges en voorspelbaarheid tellen. De twijfel over Magento is vaak gebaseerd op ervaringen die weinig zeggen over het platform zelf. De echte vraag is niet of Magento geschikt is voor B2B, maar of de partij die verantwoordelijk is voor de implementatie en het beheer het platform ook zo behandelt. En wie die vraag eerlijk beantwoordt, komt vaak tot een andere conclusie dan verwacht. Steeds meer organisaties kiezen er daarom voor om onderhoud en updates structureel te organiseren, in plaats van ad-hoc. Bijvoorbeeld via vaste update- en onderhoudsafspraken, zoals bij het Magento Total Care Update-abonnement van Elgentos. Zodat het platform beheersbaar, voorspelbaar en toekomstbestendig blijft. ### [De 5 grootste valkuilen bij een Magento migratie en hoe je deze voorkomt](https://elgentos.nl/blog/vijf-valkuilen-bij-een-magento-migratie) Een e-commerce platform dat al jaren draait, bevat vaak meer dan teams denken. Dit kan voor problemen zorgen bij een migratie. In deze blog vertellen we je hoe wij daar mee omgaan. Een e-commerce platform dat al jaren draait, bevat vaak meer dan teams denken. Functies die ooit snel zijn toegevoegd tijdens een drukke periode. Kleine uitzonderingen die voor één klant zijn gebouwd en daarna nooit meer zijn aangeraakt. Tijdens een druk kwartaal wordt een prijslijst gekopieerd voor een grote afnemer. Een filter blijft hangen aan code uit een oude bouwronde. En ergens draait nog een configurator die precies aansluit op dat ene key account. Op zichzelf lijkt het overzichtelijk, tot een migratie ter sprake komt. Dan worden stemmen van interne stakeholders ineens een stuk luider Sales laat zien hoe hun grootste klanten bestellen. Customer service wijst op een veld dat ooit tijdelijk is toegevoegd en inmiddels vast onderdeel van hun werkdag is. De omvang van het traject wordt al snel groter. Jaren aan keuzes passen niet in een traject dat binnen enkele maanden moet staan. Zeker niet als onderweg nieuwe wensen blijven opduiken en niemand precies weet wat echt nodig is voor de eerste livegang. Waar begin je dan als je een migratie traject effectief wilt aanpakken? En welke onderdelen zorgen in de praktijk het vaakst voor vertraging tijdens zo’n traject? In deze blog bespreken we vijf valkuilen die we regelmatig bij Magento-migraties zien, en hoe je voorkomt dat ze jouw migratie vertragen. Valkuil 1: Scope die te groot wordt voordat je begint Bij veel migraties ontstaat al snel spanning op de driehoek: scope, tijd en kwaliteit. Bedrijven die 5 jaar lang aan een platform hebben gebouwd, willen vaak alles meenemen naar het nieuwe systeem. Oplossingen uit piekweken, maatwerk voor grote klanten en logica die ooit tijdelijk was maar inmiddels onderdeel is van het dagelijks werk. Het groeit dan richting een lijst die nooit in een paar maanden past, terwijl doorgaans de vraag is een Magento-migratie in 6 maanden in te regelen. Wanneer de deadline vaststaat en de scope zich uit breid, lijdt kwaliteit. Dat zie je terug in trage schermen, foutmeldingen bij prijsupdates of koppelingen die slecht getest zijn en onjuiste informatie tonen. Grip hierop krijg je alleen door te beginnen met een feature-audit. Niet bouwen, maar uitzoeken wat dagelijks gebruikt wordt. Welke onderdelen omzet opleveren. Welke orderflows belangrijk zijn voor key accounts. En welke functies ooit zijn toegevoegd als snelle oplossing en beter na livegang kunnen worden opgepakt. De must-haves blijven in scope. Alles wat niet direct nodig is, schuif je door schuif je door voor na livegang. Na livegang prioriteer je dan opnieuw wat er in een V2 moet komen. Zo blijft de eerste livegang licht en verwerkt het platform zonder vertraging wat het ERP doorgeeft. Valkuil 2: Een einddoel dat niet scherp staat Migraties duren significant langer zodra niet duidelijk is waar fase één stopt. Teams blijven wensen aandragen, partners wachten op keuzes en halverwege blijkt dat verwachtingen anders waren dan gedacht. Dan schuift de planning ook op en weet niemand meer precies wat er moet worden opgeleverd. Een migratie werkt pas effectief wanneer duidelijk is waar fase één stopt. Niet in brede termen, maar in onderdelen die je kunt controleren: uptime onder druk, koppelingen die correct reageren op het ERP, klantprijzen die aansluiten op het bronsysteem en accounts die zonder gedoe kunnen inloggen. Staat deze basis, dan kun je veilig verder bouwen. Met een scherp eindpunt krijgen deadlines betekenis. Partners weten waar ze op sturen, interne teams zien welke keuzes niet meer verschuiven en afhankelijkheden tussen systemen blijven beheersbaar. Daarna kun je uitbreiden, met zaken zoals configuratorlogica, AI-functies, extra releasecapaciteit of nieuwe B2B-flows. Duidelijkheid aan het begin voorkomt bijsturen aan het eind. Valkuil 3: Datamigratie die pas aan het einde wordt opgepakt Datamigratie oogt overzichtelijk zolang je alleen naar de voorkant kijkt. De echte omvang zie je pas zodra je de lagen onder elkaar legt. De eerste laag gaat over toegang. E-mailadressen verhuis je eenvoudig, maar wachtwoorden zijn versleuteld en kun je vaak niet één op één overzetten. Een inkoper die jaarlijks grote ordervolumes plaatst wil bij zijn eerst volgende bezoek geen melding zien dat het account is verwijderd. Daar moet je vooraf een plan voor hebben. Daaronder ligt de schaal. Veel B2B-shops werken met honderdduizenden klantrecords en een assortiment dat richting het half miljoen gaat. Key accounts hebben eigen prijslijsten waardoor je al snel op miljoenen regels uitkomt. Organisaties denken vaak dat die data actueel is, maar ontdekken tijdens de migratie hoe beperkt de kwaliteit en frequentie soms zijn. De derde laag is productdata. Binnen Magento krijgen SKU’s, attributen en relaties een andere plek. Zodra de mapping schuurt vallen voorraadstanden anders uit, verdwijnen producten uit categorieën of veranderen filterresultaten. Ook url’s verschuiven mee, waardoor pagina’s een andere route krijgen of interne links op onverwachte plekken terechtkomen. Deze valkuil voorkom je door datamigratie vroeg te starten. Bepaal per klantgroep welke gegevens meegaan, kies hoe bestaande klanten inloggen bij hun eerste bezoek en test dit met echte data ruim voor de daadwerkelijke livegang. Dat geeft rust, continuïteit en veel minder klantcontact in de eerste weken na overstap. Valkuil 4: Collega’s die te laat aanhaken In bijna elke organisatie is er een groep die het huidige e-commerce platform door en door kent. Ze weten welke velden je overslaat, welke volgorde een order door de middag trekt en welke workaround een foutmelding voorkomt. Voor hen voelt een nieuwe Magento-omgeving als een verstoring van iets dat al jaren werkt. Die groep haakt vaak pas laat aan. Ze houden vast aan hun huidige manier van werken, houden hun kaarten tegen de borst en komen vlak voor oplevering met wensen die maanden eerder besproken hadden kunnen worden. Dat zet de planning onder druk en zorgt voor extra werk in een fase waarin je juist tempo nodig hebt. De spanning verdwijnt wanneer je deze groep collega’s vroeg betrekt. Ga in de eerste weken met ze zitten. Laat ze hun dagelijkse routes door de schermen lopen en luister naar de punten waar het wringt. Dat zijn precies de inzichten die je nodig hebt om een realistische scope te bepalen en verrassingen aan het einde te voorkomen. Zodra zij zien dat hun input terugkomt in het project, zakt de weerstand. Dan schuift de rest van het team vanzelf mee en blijft de interne continuïteit intact. Valkuil 5: Risico’s die te laat in beeld komen Een migratie raakt systemen die allemaal iets anders doen. ERP stuurt prijzen en voorraad. PIM levert productdata. Logistieke software geeft statussen door. Zodra één schakel pas laat wordt meegenomen, duiken er problemen op die eerder eenvoudig waren op te lossen. Dan blijkt dat een integratiepartner met andere waarden rekent. Of dat een koppeling extra controles vraagt. Of dat een extern systeem informatie doorstuurt die Magento anders leest. Als de planning al vol zit, is daar nauwelijks nog ruimte voor. De oplossing vraagt vooral discipline: breng de hele keten vroeg in kaart. Bepaal per partner wat er verandert, welke afhankelijkheden er zijn en wat een acceptabel risico is. Je kunt niet ieder risico uitsluiten, maar je moet wel weten waar je grens ligt. Zorg dat je de keten regelmatig van begin tot eind test. Niet alleen losse koppelingen, maar complete routes van login tot levering. Dat voorkomt dat je een week voor livegang ontdekt dat alles afzonderlijk werkt, maar niet als geheel. Dit is precies waarom Elgentos standaard werkt met periodieke ketentests en korte sessies met alle betrokken partijen. Hoe eerder je de keten scherp hebt, hoe kleiner de risico’s aan het eind. Bezig met een migratie? Een migratie blijft beheersbaar zodra drie dingen vroeg duidelijk zijn: een scope die compact genoeg is om tempo te houden, datamigratie die direct wordt meegenomen en collega’s die al in de eerste weken hun zorgen en essentiële functionaliteiten delen. Dan voorkom je de vertragingen en foutjes die in veel trajecten pas aan het eind zichtbaar worden. Wil je weten hoe Elgentos dit technisch en organisatorisch aanpakt bij Magento-migraties? Stuur ons gerust een bericht. ### [Magento Statistieken 2012: Groei in E-commerce](https://elgentos.nl/blog/magento-statistics-2012) Ontdek de indrukwekkende groei van Magento als leider in e-commerce software. Lees over de statistieken en impact in 2012. 3 minuten leestijd Zoals je misschien wel weet, is Magento snel uitgegroeid tot de leider in de wereld van de e-commerce software. Maar hoe groot precies? En wat zijn andere statistieken met betrekking tot Magento? Om onze klanten te helpen bij het maken van de keuze voor Magento, gebruiken we een groot aantal statistieken. En om onze ontwikkelaars te helpen bij het maken van keuzes waarop ze zich moeten richten, gebruiken we een andere reeks statistieken. Al deze statistieken worden vriendelijk verstrekt door onze goede vrienden bij Dataprovider (www.dataprovider.com). Dataprovider, zoals hun slogan luidt, crawlt het web en structureert de gegevens. Het kan herkennen met welk systeem een site is gebouwd, op welke serversoftware hij draait, in welke branche ze opereren, waar ze vandaan komen, welke betaalmethoden ze gebruiken, enzovoort, enzovoort. Hun zeer eenvoudig te gebruiken GUI geeft je de mogelijkheid om eenvoudig statistieken op te vragen, tot op het niveau van de individuele website! We hebben wat statistieken over e-commerce en Magento op een rijtje gezet. Zoals we al eerder hebben gezegd, is Magento de feitelijke leider in de wereld van de e-commerce software. Maar met welke marge? En zijn er verschillen tussen landen? We hebben de gegevens uitgesplitst en een aantal mooie diagrammen gemaakt om bij te kwijlen. Ten eerste, het bereik van Magento over de hele wereld. Dataprovider heeft 56.548 sites herkend als Magento webshop, verspreid over de landen België, Canada, Denemarken, Spanje, Frankrijk, Italië, Nederland, Noorwegen, Polen, Portugal, Zweden, Turkije en de Verenigde Staten. Hieronder staat een kaart met het absolute aantal Magento shops dat in elk van deze landen is gevonden. Magento over de hele wereld Nu duiken we wat dieper in Nederland, waar wij (elgentos ecommerce solutions) en Dataprovider gevestigd zijn. We wilden weten hoe populair Magento precies is in Nederland. Hier is een mooi overzicht van alle shopping cart systemen die Dataprovider kon herkennen; Marktaandeel webshopsystemen in NL Zoals je kunt zien is Magento de leider met 21,6%, gevolgd door Mijnwebwinkel.nl met 19%. Mijnwebwinkel.nl is een gehoste oplossing voor eenvoudige winkels die je ongeveer 20 euro per maand kost, wat de populariteit verklaart. We waren ook geïnteresseerd in betaalmethoden; welke worden het meest gebruikt in Nederland? Betaalmethoden in NL Zoals je kunt zien, is iDeal veruit de meest gebruikte betaalmethode. PayPal, Afterpay en Klarna winnen snel aan populariteit. Hoe snel? Dat weten we nog niet, maar we zullen deze statistieken elke maand blijven meten zodat we je statistieken kunnen geven over de groei/daling van de verschillende e-commerce systemen, betaalmethoden, enzovoort. Wat voor soort webshops draaien er op Magento? In welke branche zijn ze actief? Dataprovider heeft de resultaten uitgesplitst per 'categorie' (verticals) zodat we hier een mooi overzicht van krijgen. Magento verticals Mode is, niet verrassend, de grootste categorie. De runner-up is, ook niet verrassend, Elektronica, maar de derde plaats is, verrassend genoeg, Voertuigen. We vermoeden dat dit te wijten is aan een groot aantal sites met auto-onderdelen. Nu iets meer technisch; de serversoftware waar Magento op draait. We hebben dit uitgesplitst voor Nederland en de rest van de wereld (of in ieder geval de landen die we eerder hebben genoemd). Magento webservers Het is waarschijnlijk geen verrassing dat Apache de grootste is. De Dutchies moeten echter een tandje bijsteken en zo snel mogelijk upgraden naar de nieuwste Apache-versie, aangezien 51% nog op Apache 2.0 draait. Met dank aan Dataprovider.com voor de gegevens! ### [Magento 2 en Varnish: de toekomst van caching vormgeven](https://elgentos.nl/blog/magento2-varnish-taskforce) Ontdek hoe de Varnish Taskforce de integratie van Varnish Cache en Magento 2 verbetert voor snellere e-commerce prestaties. Op 22 en 23 mei 2025 kwam de Varnish Taskforce bijeen voor twee volledige dagen van intensieve technische sessies over de integratie van Varnish Cache en Magento 2. Het evenement, georganiseerd door elgentos en gehost bij Phpro (Xplore Group), bracht een groep Magento-ontwikkelaars, Varnish-experts, devops-engineers en hostingprofessionals samen met een gezamenlijke missie: het verbeteren van de Varnish-integratie en de VCL voor Magento 2. Op donderdagochtend begonnen we met een overzicht van Thijs Feryn om snel bij te praten over wat de ingebouwde Varnish VCL doet, gevolgd door een toelichting op Varnish' Finite State Machine. Hierna namen we een geoptimaliseerde VCL regel voor regel door — samengesteld uit verschillende Github PR's — om verbeterpunten te bespreken. Deze verbeteringen werden omgezet naar taken. Na een heerlijke lunch verzorgd door Phpro (dank daarvoor!) gingen de individuele ontwikkelaars 's middags direct met deze taken aan de slag. Geen vage theorieën—maar echt coderen, configuratie-tweaks en high-throughput prestatie-tests. Op de tweede dag kwamen we weer samen en richtten we ons op het toevoegen van de Magento 2-logica. Dit deden we door het ontwikkelen van de elgentos/magento2-varnish-extended extensie, waarin alle logica zit om een dynamisch VCL-bestand te genereren via verschillende nieuwe configuratievelden in de backend. Het doel is om deze code via een Magento 2 en een Mage-OS pull request te integreren, zodat deze functionaliteit in de hoofdcodebasis komt. Een kort overzicht: Ons doel is het VCL-bestand kleiner te maken zodat het overzichtelijker wordt en zoveel mogelijk kan terugvallen op de ingebouwde VCL Delen van de VCL die over oude kwetsbaarheden gaan (zoals Httpoxy), oude technieken (zoals X-Pool voor Capistrano) of oude headers (zoals Pragma) zijn verwijderd Delen van de VCL die verantwoordelijkheden oppakken die eigenlijk bij de host of ontwikkelaar liggen (zoals passes configureren via URL's), zijn verwijderd De health probe blijft actief omdat we die gebruiken om de lagere grace periode op een gezonde backend in te stellen We hebben de standaard grace periode voor backend-responses verkort van 3 dagen naar 1 dag We gaan ervan uit dat de Xkey vmod geïnstalleerd is zodat we soft-purging kunnen inschakelen Debuggen van Varnish via de frontend wordt ontmoedigd door publieke headers te verwijderen, met uitzondering van de X-Magento-Cache-Debug header (voor historische hit-ratio tracking via RUM data) We hebben een nieuwe VCL-generator gebouwd met uitgebreide templatefuncties (if/else en foreach-syntaxis) We hebben het varnish:vcl:generate-commando uitgebreid zodat het met waarden uit de database kan werken, en meer parameters toegevoegd Er zijn meer commentaren aan het VCL-bestand toegevoegd zodat ontwikkelaars onze keuzes beter begrijpen We hebben diverse tests in Varnish Testing Language (VTL) opgezet om de VCL te testen Cache-purges via Ctrl-Shift-R of Cmd-Shift-R worden nu toegestaan voor IP's in de purge ACL-lijst Na het legen van de cache wordt er een adminnotificatie in Magento getoond met het aantal gepurge objecten Er zijn meer configuratie-opties toegevoegd in de backend voor meer controle over de gegenereerde VCLMarketingparameters zijn configureerbaar gemaakt (met waarschuwingen voor mogelijke misconfiguratie)In-/uitschakelen van back/forward-cache (standaard aan)In-/uitschakelen van caching van statische bestanden in Varnish (standaard aan)In-/uitschakelen van caching van mediabestanden in Varnish (standaard aan)In-/uitschakelen van Xkey-ondersteuning in Varnish (standaard aan)Keuze tussen softpurge en hardpurge via Xkey (standaard softpurge)Mogelijkheid om requests op basis van gevonden cookies door te laten (bijv. t.b.v. Xdebug of headless CMS-previews) Wat deze dagen bijzonder maakte was niet alleen de technische diepgang, maar ook de samenwerkingsenergie: iedereen kwam met scherpe vragen, goede antwoorden en uiteindelijk stond er een veel betere VCL dan voorheen, met nog veel meer verbeteringen in de pijplijn voor de Varnish-implementatie in Magento. Dank aan alle aanwezigen: Thijs Feryn (Varnish) Jeroen Vermeulen (DeoVero) Maxim Ganses (Phpro) Jeroen Boersma (Hyvä) Peter Jaap Blaakmeer (elgentos) Toon van Dooren (Savvii) Timon de Groot (Hypernode) Marvin Sanders (Hypernode) Pieter Hoste (Baldwin) Bert de Knijf (Hosted Power) Alexey Parfenov (Hosted Power) Danny Verkade (Cream) ### [Is jouw B2B Magento-ecommerce platform technisch klaar om op te schalen?](https://elgentos.nl/blog/is-jouw-b2b-ecommerce-platform-klaar-om-op-te-schalen) Opschalen is niet altijd een kwestie van een grotere server neerzetten, maar vaak een kwestie van de applicatie verbeteren. In deze blog vertellen we je hoe wij daar mee omgaan. Je klant merkt vaak als eerste dat jouw e-commerce platform technisch moet opschalen. Pagina’s laden trager, het platform ligt er ineens vaker uit, klanten krijgen foutmeldingen in de checkout of producten worden niet gevonden. Die signalen blijven voor jou als merchant zelf meestal onzichtbaar totdat klanten beginnen te klagen. En dat is precies wat je wilt voorkomen. Want technische instabiliteit raakt niet alleen je omzet, maar ook je betrouwbaarheid en reputatie. Bij B2B is dat risico misschien minder direct zichtbaar dan bij B2C aangezien de order vaak later alsnog komt. Maar intern ontstaan wél verstoringen in operatie, planning en klantrelaties. En die schade is lastiger te herstellen dan een trage pagina. Met onderstaande checklist kun je zelf toetsen of jouw B2B Magento-ecommerce platform technisch klaar is om op te schalen, voordat je klanten het komen melden. 1. Caching: voorkom dat jouw e-commerce platform onnodig hard moet werken Caching is vaak de grootste performance-hefboom. Toch gaat hier in de praktijk het meeste mis. Controleer dus goed of: Pagina’s op meerdere lagen worden gecached (bijvoorbeeld browser, applicatie en reverse proxy). Product- en categoriepagina’s niet telkens opnieuw worden opgebouwd. Externe CMS-calls worden gecached en niet bij elke paginaview opnieuw worden opgevraagd. Zoekresultaten, die niet te cachen zijn, apart worden geoptimaliseerd. Er geen ‘N+1 query’-problemen in de database zitten (bijvoorbeeld per product opnieuw voorraad ophalen). Dit is belangrijk omdat bij slechte caching de serverbelasting exponentieel groeit. Eén verkeerde query of externe call kan al honderden milliseconden per bezoeker toevoegen. 2. Hosting: schaal slim, niet alleen groter Meer verkeer betekent niet automatisch een grotere server. Vaak is optimalisatie goedkoper en effectiever dan opschalen. Controleer hierbij of: Je structureel inzicht hebt in CPU, geheugen, schijfgebruik en response-tijden. Time To First Byte (TTFB) structureel in ieder geval onder de 1 seconde blijft. Je op- en af kunt schalen per piekmoment (zoals Black Friday). Schijfruimte geen beperkende factor wordt door logfiles, back-ups of afbeeldingen en grote mediabestanden eventueel extern worden gehost. Structureel duizenden euro’s per maand extra betalen voor hosting terwijl de oorzaak in de applicatie zit, is op lange termijn zonde van het budget. 3. Frontend-architectuur: snelheid begint bij hoe je bouwt Magento (en vergelijkbare platformen) zijn niet per definitie traag. Het verschil zit in hoe het platform is ingericht en uitgebreid. Doe een een check of: De frontend geen onnodige database-queries triggert. Zoekfunctionaliteit logisch is losgekoppeld van standaard pagina-renders. Product-, categorie- en CMS-pagina’s geen zware externe afhankelijkheden hebben. Herbruikbare frontend-componenten geen onnodige rendering- of laadtijd veroorzaken. Onnodige scripts, tracking en blokken zijn opgeschoond. Performanceproblemen worden vaak ten onrechte toegeschreven aan het platform, terwijl ze ontstaan door maatwerk dat verkeerd is aangesloten. 4. CI/CD: sneller releasen zonder risico Schaalbaarheid betekent ook: sneller kunnen aanpassen zonder dat elke wijziging een stabiliteitsrisico wordt. Controleer of: Nieuwe releases automatisch worden uitgerold via een CI/CD-straat. Er altijd geïsoleerde testomgevingen beschikbaar zijn. Rollback-scenario’s zijn ingericht voor noodgevallen. Deploys geen handwerk meer zijn. Releases meetbaar effect hebben op performance-statistieken. Zonder geautomatiseerde release-processen vertraagt groei niet alleen technisch, maar ook organisatorisch. 5. Test-automatisering: stabiele groei zonder verrassingen Handmatig testen werkt tot een bepaald niveau. Daarboven wordt het een risico. Bekijk of: Belangrijke klantflows automatisch worden getest (account, winkelmand, checkout). Filters, sorteringen en zoekfuncties structureel worden gevalideerd. Releases altijd door een regressietest gaan. Zowel test- als productieomgeving automatisch gecontroleerd worden. Nieuwe functionaliteit direct meetbaar gedrag oplevert. Elke fout in checkout, prijsberekening of voorraad raakt direct omzet en vertrouwen. 6. Integraties: schaal je keten mee Een e-commerce platform schaalt nooit alleen. ERP, PIM, boekhouding en logistiek moeten meegroeien. Controleer dus ook of: Integraties asynchroon en fouttolerant zijn ingericht. Verstoringen bij externe systemen niet direct je checkout blokkeren. Data-stromen logisch zijn gelogd en te herleiden bij fouten. Nieuwe koppelingen modulair worden toegevoegd. Experimentele integraties (bijv. financiering, configurators) eerst klein getest kunnen worden. Veel schaalproblemen ontstaan niet in het e-commerce platform zelf, maar in alles wat eraan vast zit. Denk je aan opschalen? Dan denk je vaak te snel aan een grotere server. Bij groeivraagstukken wordt vaak als eerste gedacht aan het opschalen van hosting: meer cores, meer geheugen, een zwaardere server. Dat lijkt logisch, maar lost het onderliggende probleem meestal niet op. In veel gevallen zit de bottleneck niet in de server zelf, maar in de applicatielaag. Denk aan: slecht ingerichte caching externe CMS-calls die niet worden opgeslagen onnodige database-queries N+1-problemen in productoverzichten processen die bij elke paginaview opnieuw worden uitgevoerd Het gevolg: de server krijgt onnodig veel werk, terwijl hetzelfde e-commerce platform met gerichte applicatie-optimalisaties vaak vele malen sneller kan draaien zonder structureel hogere maandlasten. Bij Haibu, een groothandel in kappersproducten, leek het alsof een grotere server onvermijdelijk was. Bij analyse bleek echter dat er een optimalisatie in de code mistte die zorgde voor onnodige belasting en matige performance. Na het oplossen daarvan konden de hostingkosten met een factor drie worden verlaagd, zonder verlies van stabiliteit of snelheid. Dit type scenario komt vaker voor dan gedacht: wat technisch ‘voelt’ als een capaciteitsprobleem, blijkt in de praktijk een optimalisatievraagstuk.  Schaalproblemen vragen in onze ervaring dan ook vaker om technische scherpte dan om extra capaciteit. Ben jij klaar om op te schalen? Wij denken graag met je mee. ### [Product configurator: personalisatie op maat](https://elgentos.nl/blog/wat-is-een-product-configurator) Ontdek hoe een product configurator klanten in staat stelt producten naar wens samen te stellen, van simpele tot complexe aanpassingen. Een product configurator stelt klanten in staat om een product geheel naar wens samen te stellen. In tegenstelling tot een standaard productselectie, waarbij je een vooraf gedefinieerde variant kiest, biedt een configurator gebruikers de mogelijkheid zelf de kenmerken van een product bepalen. Dit kan variëren van eenvoudige aanpassingen zoals kleurkeuzes tot complexe maatwerkopties waarbij de functionaliteit en het design volledig aanpasbaar zijn. Een goed ontworpen configurator verbetert niet alleen de klantervaring, maar verhoogt ook conversies, vermindert retourzendingen en zorgt voor een efficiënte winkelervaring. Er zijn verschillende typen product configurators, elk met hun eigen toepassingen en voordelen: De 2D stap-voor-stap configurator (wizard) Deze configurator begeleidt de gebruiker door een reeks stappen, waarbij elke keuze invloed heeft op de volgende. Dit type is ideaal voor complexe producten met veel afhankelijkheden, zoals: Drukwerk: Klanten doorlopen stapsgewijs het ontwerpproces voor bijvoorbeeld visitekaartjes, waarbij ze eerst een formaat kiezen, vervolgens een papiersoort en daarna een afwerking zoals glans of mat. Meubelconfigurators: De gebruiker kiest eerst een basismodel en kan vervolgens materialen, kleuren en extra modules selecteren. Auto-configurators: De klant kiest een basismodel en krijgt vervolgens opties voor motorisering, kleur, velgen en interieurafwerking. PC-bouwers: De keuze voor een moederbord bepaalt welke processors en RAM-opties compatibel zijn. Zie voor voorbeelden onze EFKA case en onze DutchLabelShop case. De 2D configurator voor gepersonaliseerde ontwerpen Deze configurator wordt vaak gebruikt voor gepersonaliseerde printproducten zoals labels, T-shirts en verpakkingen. Klanten kunnen hun eigen teksten, logo’s en afbeeldingen uploaden en direct zien hoe het eindproduct eruit zal zien. Voorbeelden: T-shirt bedrukking: Klanten kiezen een model, kleur en voegen hun eigen ontwerp toe. Stickers en labels: Kleurkeuzes, vormen en tekst worden direct weergegeven in een live preview. Verpakkingsmaterialen: Klanten kunnen hun eigen ontwerpen toevoegen aan dozen, zakken en etiketten en direct bekijken hoe het verpakkingsmateriaal eruit zal zien. De 3D configurator voor productvisualisatie Een 3D-configurator biedt een interactieve manier om producten in een driedimensionale omgeving samen te stellen. Dit type wordt vaak gebruikt voor producten waarbij vorm en afmetingen cruciaal zijn, zoals meubels, machines, sieraden en auto's. Voorbeelden: Meubelconfigurators: Klanten kunnen een 3D-model draaien en bekijken hoe verschillende stoffen en materialen eruitzien. Sieradenconfigurators: Gebruikers selecteren edelstenen, metalen en gravures en krijgen een realistische 3D-preview. Industrie & bouw: Voor maatwerk constructies zoals aluminium frames of modulaire bouwsystemen. Maatwerk configurators: hybride oplossingen (2D & 3D combinaties) Sommige bedrijven hebben configurators nodig die niet in een standaardmodel passen. Maatwerk configurators kunnen zowel 2D als 3D combineren en zijn volledig afgestemd op specifieke klantwensen. Voorbeelden: Industrie & techniek: Een 2D-configurator waarmee klanten technische tekeningen aanpassen, gecombineerd met een 3D-weergave van het eindproduct. B2B maatwerkoplossingen: Voor bedrijven die complexe machines of structuren bouwen en waarbij een combinatie van technische parameters en visuele representatie nodig is. Gaming en virtual production: Configurators die productontwerpen simuleren en toepassen in een 3D-omgeving. Welke configurator past bij jouw bedrijf? De keuze voor een product configurator hangt sterk af van de branche, de mate van personalisatie en de complexiteit van het product. Wil je een gestroomlijnde gebruikerservaring met duidelijke keuzes? Kies een stap-voor-stap wizard. Heb je een platform waar klanten eigen ontwerpen kunnen maken? Een 2D-ontwerpconfigurator is ideaal. Wil je een visueel aantrekkelijke productweergave? Overweeg een 3D-configurator met real-time visualisatie. Heb je unieke maatwerkbehoeften? Dan is een hybride oplossing met 2D en 3D de beste keuze. Wil jij ontdekken welke product configurator het beste past bij jouw e-commerce platform? Neem contact op met ons team en wij helpen je de perfecte oplossing te bouwen! ### [Het belang van integratietests voor een Magento shop: een Formule 1 metafoor](https://elgentos.nl/blog/belang-van-integratietests-magento-2) Wanneer je denkt aan het ontwikkelen van een Magento-webshop, lijkt het misschien in eerste instantie een kwestie van een paar componenten samenvoegen en hopen dat alles goed werkt. Maar net zoals bij een Formule 1-wagen, gaat het erom dat elk onderdeel perfect in elkaar grijpt om optimale prestaties te garanderen. Dit is waar integratietests (oftewel end-to-end tests) een cruciale rol spelen. 1. Geen of slechte tests: de oude Lada In een project zonder integratietests ziet je webshop eruit als een oude, roestige Lada die op wankele steunpunten is opgekrikt. Er is nauwelijks iets dat stabiliteit biedt. Elke wijziging die je doorvoert kan de hele structuur doen wankelen en ineenstorten. Net zoals de Lada die je hierboven ziet, balanceert je codebase op een paar zwakke steunen: enkele unit-tests en een handmatige controle van de frontend. Hierdoor blijf je continu bang dat één kleine wijziging in een module de checkout of de betaalmethoden onbedoeld beïnvloedt. De afwezigheid van integratietests leidt tot een fragiel project waar iedere implementatie van een nieuwe feature je business op de proef stelt. 2. Gedeeltelijke integratietests: gedeeltelijke ondersteuning Met enkele integratietests wordt je project stabieler en vergelijkbaar met een Formule 1-wagen die op degelijke steunen rust. De basis is sterker, maar er blijven nog steeds kwetsbaarheden. Kleine aanpassingen in de configuratie kunnen onverwachte neveneffecten hebben, vooral als er afhankelijkheden zijn tussen meerdere modules. Je ziet in de afbeelding dat de rode Formule 1-wagen op een paar stabiele steunen rust, maar er is nog steeds ruimte voor verbetering. Gedeeltelijke integratietests testen slechts enkele kritieke workflows, zoals de login- of bestelprocessen, maar laten veel scenario’s buiten beschouwing. Dit betekent dat je nog steeds risico loopt wanneer je een nieuwe module toevoegt, of als er een complexe afhankelijkheid tussen extensies is. 3. Volledige integratietests: robuuste ondersteuning Nu komen we bij de ultieme setup: een high-tech Formule 1-wagen die op een complex systeem van stevige steunen rust. Dit representeert een Magento-shop met een uitgebreide reeks integratietests die elke interactie tussen features en externe systemen dekken. Geen enkele verandering — of het nu een nieuw thema, een aangepaste module, of een derde-partij extensie is — kan het systeem destabiliseren zonder dat je dit meteen opmerkt. Volledige integratietests zorgen ervoor dat je codebase net zo robuust is als deze Formule 1-wagen op zijn betrouwbare steunpunten. Je kunt nieuwe features met vertrouwen implementeren en weet dat je webshop blijft draaien als een goed afgestelde machine. Door deze robuuste tests kunnen wij onze Magento upgrades grotendeels automatiseren, valideren en live zetten. Conclusie Net zoals een Formule 1-team niet alleen vertrouwt op een goede motor, maar ook op een stevig chassis en een uitgebalanceerd ondersteuningssysteem, zo moet een Magento-webshop vertrouwen op een volledige reeks integratietests om de stabiliteit van het platform te waarborgen. Het is de enige manier om ervoor te zorgen dat elke wijziging — hoe klein ook — geen ongewenste effecten heeft op het geheel. Het gebrek aan integratietests is als een roestige Lada: onvoorspelbaar en gevaarlijk. Gedeeltelijke integratietests bieden wat stabiliteit, maar voor de ultieme zekerheid heb je een high-tech, robuuste setup nodig die elke interactie dekt. Investeer in integratietests en bouw je webshop op een fundament dat net zo betrouwbaar is als de steunen van een kampioensauto in de Formule 1. ### [Wegwerp Magento testomgevingen met Kubernetes](https://elgentos.nl/blog/wegwerp-magento-testomgevingen-met-kubernetes) 16 min leestijd In deze blog gaan we het hebben over hoe we wegwerp testomgevingen ('Review Apps' in Gitlab terminologie) hebben opgezet, gebruikmakend van onder andere Gitlab, Docker, Google Cloud Platform (GCP) en Kubernetes (k8s). We gebruiken nu de wegwerp testomgevingen in onze dagelijkse flow, die ons in staat stelt om een bepaalde branch, tag of specifieke commit naar een testomgeving te pushen die automatisch wordt opgebouwd op push en afgebroken op merge, samen met een database en alle mediabestanden. Terugblik Iets meer dan een jaar geleden schreven we over ons interne ontwikkelingsproces. Ik ben erg blij dat ik die blog heb geschreven, omdat het veel interesse en discussies losmaakte, zowel online als offline. In dat proces is er niets belangrijks veranderd. We hebben hier en daar wat aanpassingen gedaan, maar over het algemeen is het nog steeds hetzelfde. Ik eindigde die blog met de opmerking dat we de komende weken Review Apps zouden uitrollen voor al onze klanten. Technisch gezien bleek dat waar te zijn, als je 52 weken later als 'komende weken' beschouwt. Ik zei ook dat we hoopten op 75/25 Magento 2 / Magento 1 te zitten en gelukkig bleek dat inderdaad waar te zijn. Ik zou zeggen dat we nu op 90/10 zitten en volledig geïnvesteerd zijn om Magento 1-vrij te zijn tegen het einde van het jaar. Voorwaarden Er zijn een paar redenen waarom het ons 52 weken kostte om dit uit te rollen. We waren er duidelijk niet fulltime mee bezig, maar er waren een aantal ontwikkelingen die ons weer wat tijd in dit project deden investeren nadat het een tijdje op een laag pitje had gestaan. Dit waren onze noodzakelijke bouwstenen om de Review Apps een pragmatische realiteit te maken. Databases & mediabestanden De eerste grote hindernis die we moesten nemen was beslissen waar we onze databases vandaan zouden halen. Hoewel het technisch haalbaar is, wilden we niet iedere keer dat we een Review App opstartten inloggen op de productieserver om een database dump op te halen. Dat zou ons dwingen om een privésleutel die toegang had tot onze productieserver ergens op te slaan waar we dat niet wilden. We besloten dat het pushen van een gestripte versie van de productiedatabase op het rustigste moment van de dag van een winkel (meestal onze nacht) naar een Amazon S3 instance de beste manier zou zijn. We dachten erover om het naar een andere service te pushen (DigitalOcean Storage, Google Cloud Storage, Google Drive, Dropbox, etc.) maar we vonden dat Amazon de meest granulaire IAM controle had om de toegang tot de database dumps te beperken. We hebben aparte rollen ingesteld voor het pushen van dumps naar specifieke bestandslocaties en voor het ophalen van de dumps van die specifieke bestandslocaties. Hetzelfde geldt voor media; we pushen een getarreerd mediabestand naar een S3 bucket waar het Review App deployment proces het kan ophalen. We hebben ook een topleveldomein gekocht en de nameservers ingesteld op die van DigitalOcean. Op die manier kunnen we gebruik maken van de DigitalOcean API via doctl om automatisch A-records toe te voegen en te verwijderen. We zouden dit in de toekomst kunnen verplaatsen naar Google Cloud DNS om de afhankelijkheid van doctl te elimineren. Kubernetes Toen we dit begonnen te bouwen, gebruikten we eerst de DigitalOcean API om droplets te maken met een vooraf geconfigureerd image. Hoewel dit goed werkte, wilden we Docker gebruiken om een veerkrachtig en gemakkelijk te onderhouden image te hebben. We besloten toen om het Docker-image op de DigitalOcean-droplets uit te voeren en ons Docker-image op die droplet in te zetten. Het probleem met het draaien van een DO droplet met Docker en een Docker container die in de droplet draait, is dat je door de droplet zelf moet gaan om bij de Docker container te komen, of niet-standaard secundaire poorten moet openen voor elke service. Dit bleek zowel lastig als hoofdpijn veroorzakend te zijn, omdat we mentaal moesten bijhouden waar we ons in het proces bevonden; voerden we een bepaald commando uit op de runner (die zelf ook een Docker image is op een pod in een node in een Kubernetes cluster op GCP), in de DigitalOcean droplet of in de Docker container die op die droplet draait? Daarom hebben we besloten om onze Docker-containers op Kubernetes te draaien, waardoor de tussenliggende droplet wordt geëlimineerd en de mentale complexiteit van het proces wordt verminderd. hypernode-docker Een andere voorwaarde was het gebruik van een Docker image dat zo veel mogelijk leek op onze productieservers. Gelukkig (en geheel niet toevallig) draaien al onze klanten op het Hypernode-aanbod van Byte. Dit betekent dat al onze productieservers in eerste instantie op exact dezelfde manier worden opgezet en beheerd. We begonnen met het bouwen van onze Docker image gebaseerd op equit/gitlab-ci-magento2 en gingen van daaruit verder. Gelukkig heeft Hypernode's Rick van de Loo een Hypernode Docker image gemaakt voor lokale ontwikkeling en voor CI/CD doeleinden; hypernode-docker. Hoera! We hebben deze image genomen en onze eigen Docker image gemaakt om een paar dingen toe te voegen/ in te stellen; De standaard Hypernode onveilige sleutel verwijderen Onze eigen publieke sleutels voor SSH toevoegen Inloggen met een wachtwoord voor SSH uitschakelen Basisauth inschakelen met een standaardgebruiker/pas (voornamelijk om bots te blokkeren zodat ze niet per ongeluk test-engv's indexeren) Let's Encrypt-uitdagingen via de basisauth toestaan Installeer gcloud om GCP te beheren Installeer awscli om onze database en mediadumps op te halen Installeer kubectl om onze k8s clusters te kunnen orkestreren Installeer doctl om DNS records aan onze testdomeinnaam toe te voegen Installeer Deployer om te kunnen deployen We pushen dit Docker image naar onze interne Gitlab Container Registry. Hoewel de Hypernode-docker specifiek gericht is op Magento, gebruiken we het ook als basis om deze site mee te bouwen, testen en implementeren, die gebouwd is met de statische site generator Jekyll (geschreven in Ruby). Runners Vanaf versie 10.6 biedt Gitlab een native k8s integratie. Hoewel dit ons in het begin erg enthousiast maakte, blijkt het nog in de kinderschoenen te staan. Gitlab maakt het eenvoudig om een cluster op GCP te maken met behulp van de Google Kubernetes Engine (GKE). Maar dit is een cluster dat altijd draait en dus niet geschikt is voor onze wegwerpomgevingen. Het voordeel is dat het nu heel eenvoudig is om dit cluster aan te maken en te gebruiken als runner voor je project. Vroeger hadden we DigitalOcean droplets met Docker draaien voor dit doel, maar die hebben we afgeschaft ten gunste van Runners die draaien op GCP via Gitlab's native k8s integratie. Extra bonus; we kunnen die runners draaien op Google's europe-west4 locatie, wat het pas geopende datacenter in de Eemshaven is, slechts 30km ten noorden van ons! Review-apps opzetten Dit is waar we naar streven; The main file we’re using to set up Review Apps is .gitlab-ci.yml. We’ve already been using this to deploy our shops to our production and staging servers but we need to a add a bunch of commands to deploy to our disposable environments. Generally speaking, these are the steps that we need to take in our create-cluster-job-review job; Authenticate gcloud Create k8s cluster Create k8s namespace Create secret to access our Gitlab Container Registry Create new deployment with the Hypernode image Apply service to expose the deployment (web & ssh ports) Retrieve IP address of deployment Authenticate doctl Create A record in our domain (using doctl) Then we deploy in our deploy-job-review job; Update review yaml file for Deployer Deploy! We also add a stop-job-review job which runs when a merge request is merged; Authenticate doctl Remove A record from domain Authenticate glcoud Remove cluster (this will also remove the deployment and the service attached to it) The reason why we have a create-cluster and a deploy job is so we can exit the create-cluster job when the cluster already exists. The deploy job subsequently deploys a new release on the same cluster. In these jobs, we make use of a number of environment variables that are either set by Gitlab itself or by us manually. Here is the list of environment variables we use and what they do. If we have a Magento 1 and a Magento 2 project for a client, certain variables can be set at the group level. +--------------------------+-------------------------------------------------------------------------------------------------------------------+------------------------------------------+ | Variable | Description | Can be set on group level? | +--------------------------+-------------------------------------------------------------------------------------------------------------------+------------------------------------------+ | AWS_ACCESS_KEY_ID | Projects’ AWS credentials | No | | AWS_SECRET_ACCESS_KEY | Projects’ AWS credentials | No | | AWS_DEFAULT_REGION | | Yes | | COMPOSER_AUTH | gitlab-ci composer key | No | | DO_ACCESS_TOKEN | Create access token per project at DigitalOcean | Yes | | GCLOUD_MACHINE_TYPE | See Google Cloud Machine Types | Yes | | GCLOUD_NUM_NODES | 1 is fine for testing purposes | Yes | | GCLOUD_PROJECT_ID | Find project ID in Gcloud console | Sometimes | | GCLOUD_SA_JSON | Create JSON file from IAM (Actions > Create key) and paste contents here | Sometimes (dependent on GCLOUDPROJECTID) | | GCLOUD_ZONE | See Google Cloud Regions & Zones | Yes | | REVIEW_BACKEND_FRONTNAME | Your admin URL | Yes | | REVIEW_CRYPT_KEY | Per-project cryptkey | No | | REVIEW_DB_HOST | Your database host | Yes | | REVIEW_DB_NAME | Your database name | Yes | | REVIEW_DB_USER | Your database user | Yes | | REVIEW_DB_PASS | Do not set manually; it is random generated per Hypernode container and will be fetched from Hypernode’s .my.cnf. | No | | REVIEW_DB_PREFIX | Your database prefix | No | | SSH_PRIVATE_KEY | Project-specific deployment-only SSH key | Yes | +--------------------------+-------------------------------------------------------------------------------------------------------------------+------------------------------------------+ Slack notification Because we use stripped database dumps without personal information, the admin users are also stripped. In our Deployer recipe, we generate a random user/pass combination and save those values. We later on use the Slack recipe to pull those variables and pass them on to a shared channel with our client, who can then use the credentials to log in to the admin. File templates The following file templates are for Magento 2. Some paths and file templates would be a little bit different for Magento 1, but I’m sure you’ll figure it out. Dockerfile FROM docker.hypernode.com/byteinternet/hypernode-docker:latest MAINTAINER Peter Jaap Blaakmeer # Add public key ADD key.pub /tmp/key.pub RUN cat /tmp/key.pub > /root/.ssh/authorized_keys RUN cat /tmp/key.pub > /data/web/.ssh/authorized_keys RUN rm -f /tmp/deployment.pub # Disable password login RUN sed -i 's/PasswordAuthentication\ yes/PasswordAuthentication\ no/g' /etc/ssh/sshd_config # Enable passwordless sudo for app user (see https://github.com/ByteInternet/hypernode-docker/issues/6) RUN echo "app ALL = (ALL) NOPASSWD: ALL" >> /etc/sudoers # Enable basic auth RUN echo "user:encodedpassword" > /data/web/htpasswd RUN sed -i 's/#auth_basic/auth_basic/g' /data/web/nginx/server.basicauth # Allow Lets Encrypt challenges RUN printf '\nlocation ^~ /.well-known/acme-challenge/ {\n\tauth_basic off;\n}\n' >> /data/web/nginx/server.basicauth # Remove default *.hypernode.local certificate to avoid nginx errors when using LE RUN rm -rf /etc/nginx/ssl # Install gcloud RUN export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \ echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \ apt-get update -y && apt-get install google-cloud-sdk -y # Install awscli RUN apt-get install -y libpython-dev python-dev libyaml-dev python-pip RUN pip install awscli --upgrade --user RUN echo "export PATH=~/.local/bin:$PATH" >> ~/.bash_profile # Install kubectl RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.10.5/bin/linux/amd64/kubectl RUN echo "dbe431b2684f8ff4188335b3b3cea185d5a9ec44 kubectl" > checksum.txt && sha1sum -c checksum.txt RUN chmod +x ./kubectl && mv ./kubectl /usr/bin/kubectl # Install doctl - use version 1.8.0, newer version has bugs RUN curl -sL https://github.com/digitalocean/doctl/releases/download/v1.8.0/doctl-1.8.0-linux-amd64.tar.gz | tar -xzv RUN mv doctl /usr/local/bin/doctl # Install Deployer through composer globally - use version 6.0.5 for PHP 7.0 RUN composer global require deployer/deployer:6.0.5 RUN alias dep=/root/composer/vendor/bin/dep .gitlab-ci.yml image: before_script: - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' - eval $(ssh-agent -s) - ssh-add <(echo "$SSH_PRIVATE_KEY") - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' # Switch back to PHP 7.0 if needed #- sed -i 's/php7.1/php7.0/g' /etc/my_init.d/60_restart_services.sh #- update-alternatives --set php $(which php7.0) #- bash /etc/my_init.d/60_restart_services.sh # Set gcloud variables - export GCLOUD_CLUSTER_NAME=$(echo ${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME} | cut -c 1-40 | sed 's/-$//') # strip to 40 characters (max for cluster names) and remove dash if that is the last character stages: - build - test - create-cluster - deploy ## PLACE PRODUCTION JOBS HERE create-cluster-job-review: stage: create-cluster only: - /^review-.*$/ script: # Authenticate gcloud - echo $GCLOUD_SA_JSON >> google_sa.json - gcloud auth activate-service-account --key-file google_sa.json - export GOOGLE_APPLICATION_CREDENTIALS=google_sa.json # Check if cluster is running - STATUS=$(gcloud beta container --project "${GCLOUD_PROJECT_ID}" clusters list | grep ${GCLOUD_CLUSTER_NAME} | awk '{print$8}') - if [ "${STATUS}" = "RUNNING" ]; then exit 0; fi # Create Kubernetes cluster - gcloud beta container --project "${GCLOUD_PROJECT_ID}" clusters create "${GCLOUD_CLUSTER_NAME}" --zone "${GCLOUD_ZONE}" --username "admin" --cluster-version "1.8.10-gke.0" --machine-type "${GCLOUD_MACHINE_TYPE}" --image-type "COS" --disk-type "pd-standard" --disk-size "100" --scopes "https://www.googleapis.com/auth/compute","https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" --num-nodes "${GCLOUD_NUM_NODES}" --enable-cloud-logging --enable-cloud-monitoring --network "default" --subnetwork "default" --addons HorizontalPodAutoscaling,HttpLoadBalancing,KubernetesDashboard --no-enable-autoupgrade --enable-autorepair # Create namespace - kubectl create namespace gitlab-managed-apps # Create secret for Gitlab Container Registry - kubectl create secret docker-registry gitlab-container-registry --docker-server=$CI_REGISTRY --docker-username=$CI_REGISTRY_USER --docker-password=$CI_REGISTRY_PASSWORD --docker-email=$GITLAB_USER_EMAIL # Create new deployment with the Hypernode image - kubectl apply -f config/kubernetes/hypernode-deployment.yaml # Add label for deployment - kubectl label deployments hypernode-deployment app=${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME} --overwrite # Wait for it to become available - sleep 60 # Apply service to expose the image - kubectl expose deployment hypernode-deployment --type=LoadBalancer --name=hypernode-service # Wait for it to become available - sleep 60 # Add label for service - kubectl label services hypernode-service app=${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME} --overwrite # Get & save IP address - while [ "${IP_ADDRESS}" = "" ]; do IP_ADDRESS=$(kubectl get service hypernode-service | grep hypernode-service | awk '{print$4}'); done - echo "IP address found; ${IP_ADDRESS}" # Authenticate doctl - doctl auth init --access-token ${DO_ACCESS_TOKEN} # Create hostname entry in DigitalOcean Networking - doctl compute domain records create testdomain.tld --record-data ${IP_ADDRESS} --record-name ${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME} --record-type A deploy-job-review: stage: deploy only: - /^review-.*$/ environment: name: review/${CI_COMMIT_REF_NAME} url: https://${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME}.testdomain.tld on_stop: stop-job-review # Update review yaml file for Deployer - mv config/servers/template.yaml.example config/servers/review.yaml - sed -i s/HOST/${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME}.testdomain.tld/g config/servers/review.yaml - sed -i s/ENVIRONMENT/review/g config/servers/review.yaml - sed -i s/STAGE/review/g config/servers/review.yaml - sed -i s/PORT/22/g config/servers/review.yaml - sed -i s/DBNAME/magento/g config/servers/review.yaml # Deploy - /root/.composer/vendor/bin/dep deploy review -n -vvv stop-job-review: stage: deploy only: - /^review-.*$/ variables: GIT_STRATEGY: none script: # Authenticate doctl - doctl auth init --access-token ${DO_ACCESS_TOKEN} # Remove A record from domain testdomain.tld - DNS_RECORD_ID=$(doctl compute domain records list testdomain.tld | grep ${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME} | awk '{print$1}') - doctl compute domain records delete testdomain.tld ${DNS_RECORD_ID} --force; true # Authenticate gcloud - echo $GCLOUD_SA_JSON >> google_sa.json - gcloud auth activate-service-account --key-file google_sa.json - export GOOGLE_APPLICATION_CREDENTIALS=google_sa.json # Check if cluster is running - STATUS=$(gcloud beta container --project "${GCLOUD_PROJECT_ID}" clusters list | grep ${GCLOUD_CLUSTER_NAME} | awk '{print$8}') - if [ "${STATUS}" != "RUNNING" ]; then exit 0; fi # Remove cluster - gcloud beta container clusters delete ${GCLOUD_CLUSTER_NAME} --zone ${GCLOUD_ZONE} --project ${GCLOUD_PROJECT_ID} --async --quiet when: manual environment: name: review/${CI_COMMIT_REF_NAME} action: stop env_template.php array ( 'frontName' => '{% raw %}{{REVIEW_BACKEND_FRONTNAME}}{% endraw %}', ), 'crypt' => array ( 'key' => '{% raw %}{{REVIEW_CRYPT_KEY}}{% endraw %}', ), 'session' => array ( 'save' => 'files', ), 'db' => array ( 'table_prefix' => '{% raw %}{{REVIEW_DB_PREFIX}}{% endraw %}', 'connection' => array ( 'default' => array ( 'host' => '{% raw %}{{REVIEW_DB_HOST}}{% endraw %}', 'dbname' => '{% raw %}{{REVIEW_DB_NAME}}{% endraw %}', 'username' => '{% raw %}{{REVIEW_DB_USER}}{% endraw %}', 'password' => '{% raw %}{{REVIEW_DB_PASS}}{% endraw %}', 'model' => 'mysql4', 'engine' => 'innodb', 'initStatements' => 'SET NAMES utf8;', 'active' => '1', ), ), ), 'resource' => array ( 'default_setup' => array ( 'connection' => 'default', ), ), 'x-frame-options' => 'SAMEORIGIN', 'MAGE_MODE' => 'production', 'cache_types' => array ( 'config' => 1, 'layout' => 1, 'block_html' => 1, 'collections' => 1, 'reflection' => 1, 'db_ddl' => 1, 'eav' => 1, 'customer_notification' => 1, 'full_page' => 1, 'config_integration' => 1, 'config_integration_api' => 1, 'translate' => 1, 'config_webservice' => 1, ), 'install' => array ( 'date' => 'Tue, 1 Jan 2018 13:33:37 +0000', ), ); Deployer recipes getArgument('stage'); if ($stage != 'review') { return; } // Get REVIEW_DB_PASS from .my.cnf $reviewDbPass = run('cat /data/web/.my.cnf | grep pass | awk \'{print$3}\''); $envFileContent = file_get_contents('config/env_template.php'); $envVariables = [ 'REVIEW_BACKEND_FRONTNAME', 'REVIEW_DB_HOST', 'REVIEW_DB_NAME', 'REVIEW_DB_USER', 'REVIEW_DB_PASS', 'REVIEW_CRYPT_KEY', 'REVIEW_DB_PREFIX', ]; $defaults = [ 'REVIEW_BACKEND_FRONTNAME' => 'beheer', 'REVIEW_DB_HOST' => 'Please define me in Gitlab CI Secret Variables', 'REVIEW_DB_NAME' => 'Please define me in Gitlab CI Secret Variables', 'REVIEW_DB_USER' => 'Please define me in Gitlab CI Secret Variables', 'REVIEW_CRYPT_KEY' => 'Please define me in Gitlab CI Secret Variables', 'REVIEW_DB_PASS' => (string) $reviewDbPass, 'REVIEW_DB_PREFIX' => '', ]; foreach ($envVariables as $envVariable) { $envFileContent = str_replace('{% raw %}{{' . $envVariable . '}}{% endraw %}', (empty(getenv($envVariable)) ? $defaults[$envVariable] : getenv($envVariable)), $envFileContent); } $envFilename = 'env.php'; file_put_contents($envFilename, $envFileContent); upload($envFilename, '{% raw %}{{release_path}}{% endraw %}/app/etc/env.php'); unlink($envFilename); }); task('magento:create:admin-user', function () { $stage = input()->getArgument('stage'); if ($stage != 'review') { return; } function generateRandomString($length = 12, $abc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", $digits = '0123456789') { return substr(str_shuffle($abc), 0, ceil(($length / 2))) . substr(str_shuffle($digits), 0, ceil(($length / 2))); } $user = generateRandomString(); $pass = generateRandomString(); $email = 'info@example.com'; $firstname = 'Review'; $lastname = 'Admin'; run(sprintf('/usr/local/bin/magerun2 --root-dir={% raw %}{{release_path}}{% endraw %} admin:user:create --admin-user=%s --admin-password=%s --admin-email=%s --admin-firstname=%s --admin-lastname=%s', $user, $pass, $email, $firstname, $lastname)); // We set these in variables so we can for example use the Slack recipe to pass these on set('review_admin_user', $user); set('review_admin_pass', $pass); }); task('magento:create:public:symlink', function () { $stage = input()->getArgument('stage'); if ($stage != 'review') { return; } run('rm -rf public && ln -s /data/web/current/pub/ /data/web/public'); }); task('magento:request:ssl', function () { $stage = input()->getArgument('stage'); if ($stage != 'review') { return; } // We need to add the app user to the passwordless sudo list in our Docker image to be able to run nginx_config_reloader // See https://github.com/ByteInternet/hypernode-docker/issues/6 run('echo "' . get('host') . '" > /data/web/.dehydrated/domains.txt && dehydrated -c --create-dirs && hypernode-ssl-config-generator && /usr/bin/nginx_config_reloader'); }); task('magento:config:set', function () { $stage = input()->getArgument('stage'); if ($stage != 'review') { return; } $config = [ 'dev/debug/debug_logging' => 1, ]; foreach ($config as $path => $value) { run(sprintf('mysql magento -e "UPDATE core_config_data SET value = \'%s\' WHERE path = \'%s\';"', $value, $path)); } }); // Review hooks before('magento:maintenance:enable', 'authenticate:aws'); before('magento:maintenance:enable', 'magento:create:env'); after('magento:maintenance:enable', 'import:database'); after('magento:maintenance:enable', 'import:media'); after('import:database', 'magento:create:admin-user'); after('deploy:symlink', 'magento:create:public:symlink'); after('deploy:symlink', 'magento:request:ssl'); before('magento:cache:flush', 'magento:config:set'); Future Using Review Apps has already proven to be a great productivity booster. Clients are able to review & test new features quicker than before we implemented Review Apps. There are some improvements to be done in the future, such as; Automatically updating the Gitlab issue with the user/pass combination; Automatically applying a QA label following some trigger to let the QA team know they can start testing it; Anonymize database so we have near-production data available; Seed the stripped database with specified testing data. I hope you liked this blog. If you have any questions, hit me up on Twitter. Ps. interested in a workshop to implement this for your company? Contact me. ### [Magento-logbestanden vastleggen met de ELK-stack](https://elgentos.nl/blog/logging-magento-logs-with-the-elk-stack) 7 min lezen Dit is een snelle handleiding over hoe je de logbestanden van Magento kunt vastleggen met behulp van de ELK-stack. ELK staat voor Elasticsearch, Logstash en Kibana. Ik zal niet te diep op de details ingaan, maar in grote lijnen wordt Elasticsearch gebruikt voor opslag en snelle opvraging van logvermeldingen, Logstash is verantwoordelijk voor het binnenhalen van de gegevens in Elasticsearch en Kibana wordt gebruikt om overzichten en visualisaties van de grote hoeveelheid logvermeldingen te maken. Naast ELK zullen we de opdrachtregeltool log-courier gebruiken om de logs direct van onze productieserver naar de ELK-stack te verzenden via een versleutelde verbinding. Let op; we gebruiken log-courier 1.8.3 omdat dat de huidige versie is die is geïnstalleerd op Byte's Hypernode hostingoplossing (die we voor al onze klanten gebruiken). De laatste versie is nu 2.0.5 en biedt iets meer mogelijkheden, vooral in de lc-admin tool. Veel van mijn onderzoek over hoe dit op te zetten is afkomstig van deze Gist van Github-gebruiker purinda, DigitalOcean's blog over ELK en de documentatie van log-courier. De ELK-stack opzetten DigitalOcean bood vroeger een one-click app voor de ELK-stack aan. Helaas is deze niet langer beschikbaar. Ik laat het aan jou over om je eigen ELK-stack op te zetten. Zie de blog van DO hierboven gelinkt of kies een Docker-image zoals deze. Je kunt ook proberen om DigitalOcean te mailen om te zien of ze een image voor je hebben. Sla gewoon het Filebeat-gedeelte van de DO-blog over; we zullen log-courier gebruiken om onze logs in ELK te krijgen. Kibana en Elasticsearch zijn vrij eenvoudig, volg gewoon de blog. Onthoud waar je je certificaatbestand en je geheime sleutelfile voor Logstash hebt geplaatst. Logstash configureren Een Logstash-configuratie bestaat minimaal uit drie delen; invoer, uitvoer en filter. Invoer Het invoerconfiguratiebestand definieert hoe de logs Logstash binnenkomen. In ons geval zullen we log-courier gebruiken, dus we hebben de logstash-input-courier plugin voor Logstash nodig; SSH naar je ELK-stack Ga naar /opt/logstash/ Voer sudo bin/plugin install logstash-input-courier uit Nu gaan we de invoer instellen; Ga naar /etc/logstash/conf.d/ Maak een nieuw bestand genaamd 01-courier-input.conf Gebruik deze inhoud; input { courier { port => 5043 ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" } } Vervang mogelijk het sslcertificaat en de sslsleutel door je paden. Open poort 5043 in je firewall (ufw insert 1 allow from $PRODUCTION-SERVER-IP to any port 5043) Je kunt meer lezen over het instellen van Logstash in log-courier hier. Uitvoer Logstash moet weten waar het de ontvangen gegevens naartoe moet sturen. Aangezien we ELK gebruiken, is Elasticsearch de uitvoer. In deze configuratie gaan we ervan uit dat het op dezelfde machine (localhost) draait en op poort 9200. Ga naar /etc/logstash/conf.d/ Maak een nieuw bestand genaamd 10-elasticsearch-output.conf Gebruik deze inhoud; output { elasticsearch { hosts => ["localhost:9200"] manage_template => false document_type => "%{[@metadata][type]}" } } Filter Het derde element is een filter; de binnenkomende data moet door Logstash worden begrepen, dus moeten we aangeven in welk formaat het data kan verwachten. Dit gebeurt met behulp van een regex-achtige syntaxis genaamd grok. Ik heb twee groks geschreven (voor Magento 1 en Magento 2). Er is een geweldig hulpmiddel om je groks te testen; Grok Constructor Matcher. Ga naar /etc/logstash/conf.d/ Maak een nieuw bestand genaamd 20-magento-filter.conf Gebruik deze inhoud; filter { if [type] == "magento2" { grok { match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] %{DATA:log_level}: %{GREEDYDATA:message}"} add_field => [ "received_at", "%{@timestamp}" ] } } if [type] == "magento1" { grok { match => { "message" => "%{TIMESTAMP_ISO8601:date} %{DATA:log_level} \([0-9]+\): %{GREEDYDATA:message}"} add_field => [ "received_at", "%{@timestamp}" ] } } } Let op; dit is alleen voor system.log en houdt geen rekening met meerregelige logboekinvoeren. Je kunt een meerregelige logboekinvoer grok voor Magento hier vinden. Test je Logstash-configuratie met service logstash configtest. Als je Configuration OK ziet, voer dan service logstash restart uit. Controleer of het luistert op poort 5034 met sudo lsof -i:5043. Het zou iets moeten zeggen als; COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 2737 logstash 16u IPv6 54468 0t0 TCP *:5043 (LISTEN) Het instellen van je productie server Nu moeten we je productie server instellen om data naar Logstash te verzenden. Maak een map waar je log-courier gerelateerde instellingen opslaat, zoals ~/log-courier/ Maak een config.json bestand in die map met deze inhoud; { "general": { "admin enabled": true }, "network": { "servers": [ "ELK-IP-ADDRESS:5043" ], "ssl ca": "/absolute/path/to/your/log-courier/logstash.cer" }, "files": [ { "paths": [ "/path/to/magento2/var/log/*.log" ], "fields": { "type": "magento2" } } ] } Verander het pad naar je Magento var/log map Verander het type naar magento1 als je Magento 1 gebruikt (dit komt overeen met de typen die zijn ingesteld in het filterbestand dat je eerder hebt gemaakt) Wijzig ELK-IP-ADDRESS naar de hostnaam of het IP-adres van je ELK-stack Schakel desgewenst beheer uit door true te veranderen in false Kopieer het Logstash-certificaat van je ELK-stack naar ~/log-courier/logstash.cer (in mijn voorbeeld was het pad van het certificaat op de ELK-stack /etc/pki/tls/certs/logstash-forwarder.crt) Start log-courier handmatig vanaf de CLI door log-courier -config ~/log-courier/config.json & uit te voeren Opmerking: het beheertool helpt je te begrijpen wat er aan de hand is wanneer iets niet werkt. Zie deze Github-pagina om te zien wat het kan doen en hoe het werkt. Configureren van Kibana Ik zal kort ingaan op het configureren van Kibana, omdat er veel informatie beschikbaar is over hoe je het kunt configureren en het grotendeels afhangt van je gebruiksscenario. Open Kibana door naar je ELK-hostnaam te gaan met de browser Ga naar Instellingen en typ onder 'Indexnaam of patroon' 'logstash-'. Klik op Aanmaken Ga naar het tabblad Ontdekken en je zou potentiële logs moeten zien binnenkomen Probleemoplossing Als je geen logs ziet binnenkomen, zorg er dan voor dat er logs zijn door het geconfigureerde map op je productie server te controleren. Als dat het geval is, SSH dan naar je ELK-stack en voer sudo lsof -i:5043 uit. Als er een verbinding is opgezet van je productie server naar je ELK-stack, zou je zoiets moeten zien; COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 2737 logstash 16u IPv6 54468 0t0 TCP *:5043 (LISTEN) java 2737 logstash 41u IPv6 55003 0t0 TCP ELK-IP-ADDRESS:5043->ELK-IP-ADDRESS:40176 (ESTABLISHED) java 2737 logstash 45u IPv6 54474 0t0 TCP ELK-IP-ADDRESS:5043->ELK-IP-ADDRESS:56348 (ESTABLISHED) Je kunt hetzelfde commando voor poorten 9200 en 5601 uitvoeren om respectievelijk Elasticsearch en Kibana te controleren. Als er geen verbinding is, controleer dan of Logstash echt draait met ps aux | grep -i logstash. Als het niet draait, controleer de fout- en logbestanden van Logstash in /var/log/logstash/logstash.err en /var/log/logstash/logstash.log. Als er logs zijn en er is een verbinding en er komen geen logs in Kibana, kun je deze dingen controleren; Controleer je grok-patronen. Als er niets overeenkomt, verschijnt er niets Voer status uit in lc-admin op je productie server om te zien of het lijnen verwerkt Controleer je indexpatroon in Kibana Installeer cron op Hypernode Omdat Hypernode een beheerde hostingoplossing is, kunnen we de standaardconfiguratie niet aanpassen. We moeten log-courier handmatig starten. Dit betekent ook dat het niet automatisch wordt gestart bij een eventuele herstart van het systeem. Daarom moeten we een cron instellen om ervoor te zorgen dat log-courier wordt uitgevoerd. Voeg dit toe aan je crontab; */30 * * * * flock -n ~/.log-courier.lock -c 'log-courier -config /absolute/path/to/your/log-courier/config.json &' Zorg ervoor dat je directory voor log-courier niet ~/.log-courier is (let op de punt) aangezien dit een bestand is dat log-courier aanmaakt bij het uitvoeren Zorg ervoor dat het certificaatbestand in config.json absoluut wordt gerefereerd Veel succes! ### [MageTitans UK 2023 recap](https://elgentos.nl/blog/magetitans-uk-2023-recap) MageTitans UK 2023 samenvatting Afgelopen weekend zijn Jeroen en ik naar de MageTitans conferentie in Manchester geweest. De laatste keer georganiseerd in 2018, was deze editie een geweldige comeback! Wederom georganiseerd door Space48, was het een geweldig evenement met ongeveer 150 deelnemers uit het Verenigd Koninkrijk, Duitsland, Polen, Nederland en verschillende andere landen. Het concept is simpel; één ruimte gevuld met voornamelijk tech-focused Magento enthousiastelingen die worden bijgepraat over het nieuwste, door de grootste. Met in totaal 12 sprekers was het een dag boordevol actie met veel (technische) inhoud. Als je geïnteresseerd bent in het bekijken van de talks, dan worden deze binnenkort gepubliceerd, dus houd hun twitter in de gaten voor nieuws hierover; https://twitter.com/magetitans De dag eindigde met een afterparty op het dak en voor sommigen van ons met de after-afterparty in de bar van het hotel. Deze dag heeft ons echt enthousiast gemaakt voor een mogelijke comeback van MageTitans Groningen, die we in 2018 en 2019 organiseerden. Dus wie weet! ### [De eerste PWA op Deity Falcon voor Uitgeverij Pluim](https://elgentos.nl/blog/the-first-pwa-on-deity-falcon-for-uitgeverij-pluim) 13 min read Vorige week lanceerden we ons eerste PWA-project voor een Magento 2-project. In deze blogpost leggen we uit waarom en hoe we deze geavanceerde en razendsnelle webshop hebben gebouwd. Als je niet kunt wachten om het resultaat te zien (dat begrijpen we helemaal!) kun je de webshop hier bezoeken; uitgeverijpluim.nl. In de Magento PWA scene is er veel gepraat en weinig actie geweest met betrekking tot het daadwerkelijk bouwen van shops. We hebben proof of concepts gezien, maar daarmee kom je niet verder. Dus toen we de kans kregen om een PWA shop te bouwen, besloten we om er gewoon voor te gaan en te zien waar we zouden uitkomen. We hadden het geluk dat we een klant tegenkwamen die bereid was om dit avontuur met ons aan te gaan! Wensen van de klant Toen de klant ons benaderde, hadden ze geen idee wat een PWA was en wat het inhield. Uitgeverij Pluim is een Nederlandse uitgeverij die in 2018 is gestart. Ze geven literaire fictie en non-fictie boeken uit gericht op de Nederlandse markt. We pitchten hen PWA en legden uit wat dit voor hen kon betekenen. Twee van de belangrijkste voordelen van PWA zijn de snelheid van de webshop en de hoge Google Pagespeed Insight scores die relatief eenvoudig haalbaar zijn ten opzichte van een standaard Magento 2 frontend implementatie. De vereisten waren vrij eenvoudig, wat ons het vertrouwen gaf om te beginnen met het bouwen van een PWA. Op dit moment zijn de PWA's nog niet zo rijk aan functies als de standaard Magento 2 frontend en gelijkwaardige functies zijn nog ver weg. De belangrijkste initiële vereisten voor fase 1 waren Mogelijkheid om auteurs te tonen Mogelijkheid om boeken te tonen Mogelijkheid om aankomende agendapunten te tonen Mogelijkheid om nieuwsberichten te tonen Gemakkelijk onderhoudbaar Snelle website De volgende vereisten voor fase 2 waren; Mogelijkheid om producten te verkopen Mogelijkheid om iDeal te gebruiken als betaalmethode Mogelijkheid tot basis e-mailmarketing Vanwege de relatief kleine hoeveelheid boeken in de shop (ongeveer 20 tot 50 op een bepaald moment), konden we het doen zonder filteropties en zoekfunctie. Vanwege de beperking tot de Nederlandstalige markt, konden we het ook stellen zonder internationalisatie en complexe belastinginstellingen etc. We zijn toen op zoek gegaan naar manieren om deze twee fasen te scheiden en de contentsite (zonder e-commerce functionaliteit) zo snel mogelijk online te krijgen. React Eerst praten we over onze onderliggende tech stack. We zijn van oudsher een PHP-bureau - we hebben altijd met Magento gewerkt en een paar jaar geleden zijn we begonnen met het ontwikkelen van microservices en ondersteunende tools voor e-commerce in Laravel, wat ook een PHP-framework is (maar niet specifiek gericht op een bepaald type webapp). Onze frontend stack is altijd gewoon HTML/JS/CSS geweest (en XML met betrekking tot Magento). PWA-aanbiedingen zijn echter niet gebouwd in PHP. Ze worden geschreven in Javascript en meer specifiek in een Javascript frontend framework. Er zijn hier twee belangrijke spelers: Vue en React. We hebben beide overwogen en uiteindelijk voor React gekozen. Ik ga niet dieper in op waarom we React verkozen boven Vue, die keuze kun je zelf nalezen. Uiteindelijk komt het neer op persoonlijke voorkeur (en discussiëren klinkt vaak als een religieus debat). Gatsby Nadat we een tijdje geleden besloten hadden om met React te gaan werken, begonnen we te spelen met het bouwen van pure React-apps (zoals onze tableratesgenerator.com) en het bouwen van sites met behulp van Gatsby, wat een React-gebaseerde statische site-generator is. In feite is de site waarop je dit leest gebouwd op Gatsby. Gatsby stelt ons in staat om efficiënt en snel extreem snelle sites te bouwen in een relatief korte tijd en zonder veel training voor ontwikkelaars. React-componenten zijn uiteindelijk gewoon kleine bundeltjes Javascript, waardoor het voor iedereen met wat Javascript-ervaring vrij eenvoudig is om te begrijpen wat er in zo'n framework gebeurt. Bovendien zijn de Gatsby-documenten gewoon uitstekend en is de community erg gastvrij (hallo Jason!). Aangezien de eerste mijlpaal was om een content site up and running te krijgen, besloten we voor Gatsby te gaan om de site up and running te krijgen. We hadden een ontwerp in pure HTML/JS/CSS en hebben dit herschreven naar een Gatsby-thema, dat in feite een verzameling React-componenten is. Hierdoor konden we deze componenten later met relatief gemak overzetten naar onze PWA-oplossing, aangezien we ook voor React kozen toen we de PWA-route voor e-commerce kozen. De Gatsby-site is nog steeds hier toegankelijk. Prismic Nu is het tijd om Prismic te introduceren. Prismic is een van de vele interessante headless CMS-aanbiedingen. Een headless CMS is een content management systeem waarmee je je content kunt beheren zonder dat je iets te zeggen hebt over hoe die content op de voorkant wordt gepresenteerd. Als je bijvoorbeeld Wordpress gebruikt zonder frontend, maar alleen de Wordpress API gebruikt om je gegevens van de Wordpress backend te halen en deze weer te geven in je eigen aangepaste frontend, dan gebruik je het in feite als een headless CMS. We hebben een vrij diepgaande vergelijking gemaakt tussen een aantal headless CMS aanbieders zoals Prismic, Sanity, Contentful, ButterCMS en Cockpit. Deze vergelijking zou een blogpost op zich kunnen zijn, maar samengevat kozen we voor Prismic vanwege zijn prijspunt (goedkoop maar niet te goedkoop), functieset (redelijk compleet) en hun reactiesnelheid op onze vragen (erg snel). We wilden ook een gehoste SaaS-oplossing (om de overhead te minimaliseren), dus zelf gehoste oplossingen werden niet overwogen. Contentful is een geweldige optie maar waanzinnig duur. Het opzetten van Prismic is een zeer aangenaam proces; hun backend is snel en een lust voor het oog. Hun documentatie is uitgebreid en diepgaand en bovenal is de hoeveelheid bibliotheken en tools die ze aanbieden in een grote verscheidenheid aan talen en frameworks ongeëvenaard. Dit lijkt een typisch Frans iets te zijn, aangezien de Algolia-integraties net zo eindeloos zijn. Vooral de NodeJS en React componenten voor Prismic.io waren echte tijdbespaarders tijdens ons project. Prismic biedt ook een GraphQL API endpoint dat we hebben gebruikt om er gegevens uit te halen. Toen we Prismic hadden ingesteld, vroegen we de klant om alle gegevens in te voeren. We maakten aangepaste types voor een aantal entiteiten; Vervolgens koppelden we Prismic aan Gatsby via het gatsby-source-prismic pakket om alle gegevens beschikbaar te maken in onze Gatsby site. Omdat Gatsby een statische site bouwt en geen server nodig heeft nadat deze is geïmplementeerd, gebruikten we Netlify voor (gratis!) hosting van de site. Magento 2 Op naar e-commerce! Tegen die tijd hadden we de contentsite bijna klaar voor gebruik, maar we moesten de producten op de site tonen, zij het zonder e-commerce functionaliteit. We zetten een vrij standaard Magento 2 instance op en configureerden die zodat de klant er producten aan kon toevoegen. Nadat ze hun producten in Magento hadden geüpload, konden we de gatsby-source-magento2 gebruiken om productgegevens van Magento 2.3 op te halen via GraphQL. Deity Falcon Dit is waar de magie gebeurt. We hebben alle voorwaarden gecreëerd om aan de slag te gaan met de PWA-implementatie; we hadden een Magento 2-instantie met productgegevens en een Prismic-instantie met alle andere content, zoals auteurs, agendapunten, nieuwsberichten en contentpagina's. We wilden werken in React, zodat we de componenten die we al hadden geschreven in Gatsby konden overzetten naar de PWA-oplossing. We wilden in React werken zodat we de componenten die we al in Gatsby hadden geschreven, konden overzetten naar de PWA-oplossing. We hebben een aantal prettige gesprekken gehad met het Eindhovense Deity, dat een reeks producten ontwikkelt voor e-commerce, waaronder Falcon en PushPro. Hun Falcon product is een PWA oplossing geschreven in React die bestaat uit twee hoofdonderdelen; Falcon Server en Falcon Client. Falcon Server fungeert als de lijm tussen onze backend systemen (zoals Magento en Prismic) en de frontend. De frontend is in dit geval Falcon Client, maar het systeem is onafhankelijk opgezet - we hadden ervoor kunnen kiezen om onze Gatsby site als frontend te gebruiken en Falcon Server te gebruiken om e-commerce functionaliteit in ons project te introduceren. Waarom hebben we dan gekozen om ons ontwerp in Falcon Client te implementeren in plaats van e-commerce functionaliteit in de vorm van een Falcon Server implementatie in Gatsby? Omdat we al veel aangepaste React componenten hadden geschreven in Gatsby, was het vrij eenvoudig om dit over te zetten. We hadden ook geen afhankelijkheid met betrekking tot data, omdat dit was geabstraheerd in Magento en Prismic. We gokten dat dit minder werk was dan het schrijven van onze eigen implementatie van Falcon Server voor Gatsby en achteraf gezien lijkt het erop dat we de juiste keuze hebben gemaakt, in ieder geval qua tijd. Merk op dat we geen gebruik hebben gemaakt van Falcon UI, wat een UI-component bibliotheek is voor React. Dit komt omdat we het ontwerp niet vanaf nul hebben opgebouwd; we hadden het al omgezet in gewone HTML/JS/CSS. Falcon UI zou een optie zijn om te gebruiken wanneer we het ontwerp nog moesten omzetten van Figma naar code, naast andere UI component library zoals Storybook. Aangepast werk in Falcon API-providers Tot nu toe had de enige grote brok aangepast ontwikkelingswerk te maken met de frontend. Maar Prismic data naar Falcon Server halen was iets dat nog niet eerder gedaan was; we moesten onze eigen sourcing pakketten schrijven. Uiteindelijk schreven we 5 API providers om de 5 custom content types van Prismic te sourcen (Agenda, Auteur, Homepage, Nieuws, Pagina). Boeken werden al gesourced van Magento door Falcon's Magento 2 module, hoewel we een extensie moesten schrijven om custom velden van Magento door te geven via Falcon Server naar Falcon Client (zie het Deity Falcon data flow schema): Sitemap generator We hebben ook een sitemap generator geschreven in Falcon Server. We konden de Magento 2 sitemap niet gebruiken omdat deze ons de Magento URL's voor de producten zou geven in plaats van de Falcon URL's en het zou alleen URL's voor de boeken hebben, maar we hebben 5 andere content types die we ook geïndexeerd willen hebben. Falcon Server is de plek om dit te doen; dit is het enige systeem dat op de hoogte is van alle routes die beschikbaar zijn binnen de site. We zullen deze sitemap generator binnenkort open-sourcen, dus houd onze Github pagina in de gaten. Afbeeldingen CDN Dan hadden we nog de kwestie van afbeeldingen; we hadden afbeeldingen die binnenkwamen vanuit Magento en we hadden afbeeldingen die binnenkwamen vanuit Prismic. Dit zou in essentie prima werken, maar we wilden een enkele repository om deze afbeeldingen te beheren en we wilden een CDN voor afbeeldingen implementeren. We besloten voor Cloudinary te gaan omdat we goede dingen hadden gehoord en ze een geweldige Magento 2 extensie hebben. Door deze extensie te gebruiken, zou Magento ons de Cloudinary-versie van de productafbeelding retourneren, maar Prismic doet dit niet. Daarom schreven we ons @elgentos/cloudinary-automatic-image-uploader pakket voor Falcon Server. Wanneer we een URL van een afbeelding ontvangen van Prismic, hashen we deze en controleren we of er een corresponderend bestand bestaat in Cloudinary. Zo ja, dan sturen we die URL terug. Zo niet, dan uploaden we het naar Cloudinary met behulp van hun NodeJS SDK en halen we de resulterende Cloudinary URL op. Een van de (vele) coole dingen is dat we de gezichtsbeeldtransformatie kunnen toepassen voor de auteursfoto's, zodat Cloudinary automatisch bijsnijdt naar het gezicht van de auteur. iDeal betaalmethode integratie Falcon biedt out of the box een PayPal en een Adyen integratie. Helaas biedt de Adyen integratie alleen een credit card implementatie en geen iDeal integratie, die we nodig hadden. We wilden gaan voor een eenvoudige iDeal betaalimplementatie en kozen voor Mollie vanwege hun extreem eenvoudige API en hun geweldige Magento 2 extensie. De Magento 2 extensie doet eigenlijk al het zware werk; we moesten de extensie alleen een beetje uitbreiden om een andere redirect URL te kunnen doorgeven. Dit is omdat we de klant terug moeten sturen naar de Falcon frontend in plaats van de standaard Magento 2 frontend. Je kunt ons vinden op onze Github pagina; Falcon Mollie implementatie voor Magento 2. Pagespeed Insights optimalisatie We wilden een snelle site, en een snelle site is wat we kregen! We hebben veel tijd besteed aan het optimaliseren van de code en de Webpack bundels waaruit onze uiteindelijke site bestaat, maar hier is het resultaat (en ja, daar zijn we best trots op!); Hosting We zijn al lange tijd fan van het Hypernode-aanbod van Byte en draaien al onze Magento-webshops op dat platform. Aangezien dit een relatief lichte site is, wilden we de hele stack op een enkele Hypernode kunnen draaien. Dit had zo zijn uitdagingen omdat we natuurlijk de eersten waren die dit probeerden. Hypernode is een beheerd platform, dus we hadden niet volledig de vrije hand om alles naar onze wensen in te richten. Maar we kregen geweldige hulp van het ondersteuningsteam van Hypernode en we kregen het aan de praat. In het kort, hier is een deel van het werk dat we moesten doen om onze Hypernode compatibel te maken met Falcon; Node en yarn (of npm) installeren Crons instellen die de Falcon client en server zullen starten wanneer ze niet draaien Nginx configureren zodat het poort 80/443 proxy doorgeeft aan poort 3000 (waarop Falcon client draait) Configureer Nginx zodat de Magento site beschikbaar zal zijn op een sub-subdomein (magento.projectname.hypernode.io) Redirect www naar niet-www Redirect http naar https Uren Hoe lang heeft dit alles geduurd? We hadden een aanloopperiode waarin de klant zijn wensen bepaalde, inhoud creëerde, enz. We zijn half april begonnen met het bouwen van de Gatsby site, half mei met het bouwen van de Falcon shop en op 4 juli hebben we de shop gelanceerd. Hier is een visueel overzicht; Hier volgt een uitsplitsing van de belangrijkste projectonderdelen die we hebben besproken; Component Sub-component Uren Magento 2 opzet 9 Prismic opzet 17 Gatsby implementatie 48 Falcon implementatie totaal 250 Prismic 65 Cloudinary 32 Mollie 16 Hosting 7 CI/CD opzet 4 Sitemap generator 2 Overige 124 Projectbeheer 20 Totaal 344 Conclusie We zijn al met al erg blij met ons proces en hoe de webshop is geworden. We hebben veel geleerd en hebben het gevoel dat we een gelijkaardig project in de helft van de tijd zouden kunnen doen (neem dit ons niet kwalijk ;-)). Ontwikkelen in Falcon/React was een beetje een leercurve omdat we uit de PHP wereld kwamen. Falcon is nog niet bug-vrij of feature-compleet, maar het team werkt hard en ze zijn erg reactief op Slack. Ze luisteren naar feedback en implementeren voorgestelde wijzigingen vrij snel. We zijn ontzettend trots dat we de eerste Deity Falcon webshop op hun nieuwe architectuur hebben gelanceerd en we zijn benieuwd wat de toekomst ons brengt! ### [AI afbeeldingen genereren voor e-commerce: 4 praktische toepassingen](https://elgentos.nl/blog/ai-image-generation-in-ecommerce) Ontdek 4 concrete toepassingen van AI image generation in e-commerce, van realistische achtergronden tot categorie hero images. De nieuwe update van ChatGPT 4o maakt AI image generation toegankelijker en indrukwekkender dan ooit. Wat eerder veel prompt engineering, nabewerking en trial & error vereiste, is nu in veel gevallen te realiseren met een enkele instructie. Zodra deze functionaliteit beschikbaar komt via de API, zullen wij hier direct op inspelen. Hieronder laten we vier concrete toepassingen zien waarmee we nu al testen en die straks volledig geautomatiseerd kunnen worden ingezet. Voorbeeld 1: realistische achtergronden genereren voor vrijstaande producten Voor onze klant Acaza hebben we een bijzettafel die oorspronkelijk op een witte achtergrond stond, geplaatst in een moderne woonkamer. Wat deze nieuwe technologie uniek maakt: De achtergrond is niet simpelweg "achter" het object geplaatst, maar past qua perspectief, belichting en stijl perfect bij het product. De AI heeft zelfs de hoek van het object subtiel aangepast, alsof de foto opnieuw is genomen. Eerdere tools liepen vast op verkeerde verhoudingen of niet-passende stijlen. Dat probleem lijkt nu definitief opgelost. Input: Output: Gebruikte prompt: Plaats deze bijzettafel in een modern Nederlandse inrichting. Het moet lijken alsof het een professionele productfoto is, gemaakt in een zorgvuldig samengesteld interieur in een studio. Zorg dat de belichting, schaduwen en kleuren van het model overeenkomen met de witte studio-achtergrond en de bestaande bijzettafelfoto. De focus moet volledig op de bijzettafel blijven, dus weinig afleidende elementen en accessoires. De stijl moet passen bij een high-end meubel foto. Voorbeeld 2: een passend model genereren voor bestaande kleding Voor een werkbroek van Fristads wilden we een model laten genereren dat exact dit kledingstuk draagt. De AI heeft: Een realistisch ogend model gecreëerd met correcte anatomie (geen zes vingers meer!). Het exacte kledingstuk herkenbaar en correct toegepast, zonder afwijkende texturen of verkeerde pasvorm. Een natuurlijke houding en expressie gegenereerd, alsof het een echte fotoshoot betreft. Ook dit was voorheen nauwelijks haalbaar zonder custom 3D-modelling of uitgebreide Photoshop workflows. Input: Output: Gebruikte prompt: Voeg een mannelijk model toe aan deze studiofoto van een korte werkbroek. Het model moet de broek dragen alsof het een professionele productfoto is, met een neutrale expressie, lichtjes rechtopstaand in een natuurlijke pose. Het product is werkkleding en de doelgroep is de bouw, dus het mag een stoer uitziende maar goed verzorgde man zijn. Zorg dat de belichting, schaduwen en kleuren van het model overeenkomen met de witte studio-achtergrond en de bestaande broekfoto. De focus moet volledig op de broek blijven, dus geen afleidende elementen, accessoires of achtergronden. De stijl moet passen bij een high-end fashion PDP-foto. Voorbeeld 3: mensen genereren in een bestaande achtergrond bij een uitgesneden model We hebben een model in een carnavalsoutfit laten genereren en vervolgens mensen op de achtergrond toegevoegd in een bijpassende sfeer. Het resultaat: Het model blijft scherp en realistisch, terwijl de gegenereerde achtergrondmensen op natuurlijke wijze bijdragen aan de sfeer. De kleuren en belichting zijn perfect op elkaar afgestemd. De AI begrijpt context: geen mensen in pakken bij een Oktoberfest, maar een feestende carnavals-menigte in passende outfits. Input: Output: Gebruikte prompt: Voeg een achtergrond toe aan deze studiofoto van een man in carnavalskleding. Het moet lijken alsof deze foto in een binnenstad genomen is waar een carnavalsfeest gaande is. Zorg dat de belichting, schaduwen en kleuren van het model overeenkomen met de witte studio-achtergrond en de bestaande broekfoto. De focus moet volledig op de bestaande man in de carnavalskleding blijven, dus geen andere mensen, afleidende elementen of accessoires toevoegen. De stijl moet passen bij een high-end fashion PDP-foto. Voorbeeld 4: categorie hero images genereren op basis van productfoto’s Voor A4H-Tech.nl hebben we drie verschillende einddempers gepakt en daar een categorie-header van laten genereren: De AI draait de producten naar een logisch perspectief en schaalt ze naar verhouding. Een achtergrond van een autowerkplaats wordt gegenereerd die perfect aansluit bij het onderwerp. De compositie is direct bruikbaar als hero image op een Magento-categoriepagina. Input (3 losse afbeeldingen): Output: Gebruikte prompt: Hier 3 foto's van einddempers voor Honda auto's in de tuning markt. Ik wil dat je met behulp van deze foto's een hero image voor de productcategorie "Einddempers" genereert. De achtergrond kan bijvoorbeeld een auto-werkplaats zijn waar deze producten klaar liggen om ingebouwd te worden. De focus moet volledig op de bestaande einddempers blijven, dus geen andere producten, mensen, afleidende elementen of accessoires toevoegen. De stijl moet passen bij een high-end PDP-foto. De hero image dient een 16:9 verhouding te hebben. Voeg zelf geen teksten toe op de afbeeldingen. Van alle voorbeelden biedt dit het meeste potentieel: veel klanten hebben goede product- en sfeerfoto's, maar missen sterke, samengestelde beelden voor hun categoriepagina's. Zodra de API beschikbaar komt, zullen we hiervoor een Magento-extensie ontwikkelen waarmee automatisch categoriebeelden gegenereerd kunnen worden. Met Sora valt hier zelfs een korte video van te maken: Wat komt er nog aan? Zodra de API live is, kunnen we deze toepassingen volledig integreren in onze processen: Automatisch gegenereerde categoriebeelden voor Magento-webshops. Slimme generatie van banners, ads en sociale media visuals. Productvariant-beelden (kleur, context, doelgroep) genereren zonder fotoshoots. AI image generation is geen gimmick meer. De combinatie van gebruiksgemak, realisme en controle opent een heel nieuw spectrum aan visuele mogelijkheden. Ook benieuwd naar mogelijkheden voor jouw webshop? Neem contact met ons op! ### [Magento AI-agent: Digitale werknemer lost issues op](https://elgentos.nl/blog/magento-ai-agent-digitale-werknemer) Ontdek hoe een AI-agent Magento 2 ontwikkeling automatiseert. Van probleemanalyse tot code-generatie en implementatie van wijzigingen. AI transformeert veel branches in een razend tempo, en de ontwikkeling van Magento 2 is daarop geen uitzondering. Met grote taalmodellen (LLM's) die zich in een verbazingwekkend tempo verbeteren, is het automatiseren van delen van de ontwikkelingsworkflow niet langer een toekomstige droom—het gebeurt al. Een AI-agent trainen voor Magento 2 Om de mogelijkheden van AI in Magento 2-ontwikkeling te verkennen, trainden we een LLM in een aantal lagen. De standaard LLM, daarop een laag met Magento documentatie en code voorbeelden, daarna Hyva best practices en documentatie, vervolgens hetzelfde maar dan van Elgentos. Om als laatste de project context toe te voegen. Dit resulteerde in meerdere GB's aan data die het model een diepgaand begrip van het framework, de structuur en best practices gaf. Deze kennis kan het model toepassen op het project. Gezien de gevoellige informatie waarop deze LLM getraind is, hebben we uiteraard gekozen om deze LLM niet te hosten in de USA of op een manier waarop deze data gebruikt kan worden buiten onze scope. Daarom hebben gekozen voor een lokale AI hosting partij. Zodra het model was getraind, bouwden we een AI-agent eromheen en integreerden we het in onze GitLab-workflow. Het doel? Het automatiseren van het proces van issue-creatie tot implementatie—het minimaliseren van de noodzaak van menselijke tussenkomst terwijl de kwaliteit behouden blijft. Hoe het werkt Dit is de workflow van hoe de AI-agent werkt. We zullen de stappen verder hieronder beschrijven. 1. Klant opent een issue Het proces begint wanneer een klant een nieuw issue indient. Dit kan een verzoek om een bugfix, een kleine functie of een andere verandering binnen de Magento 2-shop zijn. 2. AI-agent neemt het over De AI-agent analyseert het issue, genereert code en opent een merge-request. Vervolgens commit het de wijzigingen naar een nieuwe branch en triggert het een GitLab-pipeline. 3. Geautomatiseerde review-omgeving De pipeline zet een unieke review-omgeving op, waardoor de klant de door AI gegenereerde wijzigingen kan verifiëren voordat een developer wordt betrokken. 4. Code review door developer Als de klant tevreden is met de aanpassing, kan een developer de merge request beoordelen, waarbij erop wordt toegezien dat de wijzigingen voldoen aan onze coding standards en business rules voordat het wordt gemerged. 5. Implementatie van wijzigingen Na goedkeuring en mergen van de merge request, wordt de aanpassing gedeployed naar de live-omgeving. Huidige mogelijkheden en toekomstige verbeteringen Op dit moment behandelt de AI-agent eenvoudige ontwikkelingstaken effectief. Het kan eenvoudige Magento 2 en Hyvä code aanpassen en genereren, zoals: Kleine bugfixes Kleine lay-out of sjabloonwijzigingen Basis configuratie-updates We zijn echter nog aan het testen hoe we de mogelijkheden kunnen verbeteren. Momenteel draait het op het Llama 3.3 model met een Magento 2 en Hyvä dataset, maar we zijn van plan om DeepSeek R1 te testen om de resultaten te vergelijken. Na verloop van tijd verwachten we dat het meer complexe taken op zich zal nemen, mogelijk het implementeren van grotere functies en diepere integraties. De toekomst van AI in Magento development Hoewel AI ontwikkelaars niet zal vervangen, blijkt het nu al een waardevolle assistent te zijn. Het automatiseren van routinetaken stelt ontwikkelaars in staat zich te concentreren op complexere problemen, architectuurbeslissingen en hoog-niveau optimalisaties. Naarmate AI-modellen zich blijven ontwikkelen, zouden we kunnen zien dat ze steeds meer geavanceerde verantwoordelijkheden op zich nemen. Het potentieel is enorm, en deze door AI aangestuurde workflow is nog maar het begin. Door AI te integreren in Magento-ontwikkeling maken we onze workflows niet alleen efficiënter, maar herdefiniëren we ook hoe onze teams communiceren met klanten en hun verzoeken. ### [Hyva: verbeter wire:model in de Hyva Checkout](https://elgentos.nl/blog/hyva-verbeter-wiremodel-in-de-hyva-checkout) Usecase Toen ik voor een klant aan de Hyva Checkout werkte, kwam ik een probleem tegen waarbij de klant om betere prestaties op een specifiek veld vroeg. Om het beeld te schetsen, in het adresformulier hebben we een veld voor het btw-nummer. Dit veld heeft een aangepaste haak die server-side validatie van vies btw bevat. Dit veld wordt heel vaak gevalideerd en creëert daarom ook veel verzoeken. We hebben dit al geminimaliseerd door de debounce-modifier toe te voegen met een debounce-tijd van 1500ms. Dit resulteert erin dat het verzoek slechts 1500ms na de laatste toetsaanslag op dat veld wordt verzonden. Dit voldeed echter niet voldoende aan de eisen van onze klant, en daarom moesten we wat dieper in de functionaliteit van de modeldirectief (wire) duiken. Welke opties hebben we Om de werking van dit veld te verbeteren, moeten we kijken naar de opties die we hebben. Aangezien de Hyva Checkout is gemaakt met Magewire, dat zelf uit Livewire is opgebouwd, kunnen we kijken naar de opties die je hebt. Debounce Modifier Zoals we al in de inleiding besproken hebben, gebruiken we de debounce-modifier. Die wacht een bepaald aantal milliseconden na de laatste toetsaanslag voordat het het verzoek naar de server stuurt. Implementatie Om een debounce toe te passen, voeg je een modifier .debounce.1000ms toe aan het einde van de wire. Dit zal het verzoek voor 1 seconde vertragen. Je kunt de debounce-tijd aanpassen door de 1000 te vervangen. Dit om het aan te passen aan jouw wensen. Het eindresultaat ziet er als volgt uit: Reden waarom we het niet gebruikten Wanneer je een invoerelement invult en je gebruikt deze debounce-functie, moet de klant dit binnen een bepaalde tijd doen. De klant zal niet altijd zo snel zijn met de invoer, en dan zal het al het verzoek versturen. In veel gevallen zal dit geen enorm probleem zijn, maar in dit geval was de validatie van het veld gedaan in een dienst van derden. Dit maakt dat het verzoek eerst naar Magento wordt gestuurd, dan naar deze dienst. Dit creëert veel overhead als dit te vaak gebeurt. Dus onze klant keurde deze optie niet goed. Lazy Modifier Om het kort te houden, zou je bijvoorbeeld een andere modifier kunnen gebruiken, zoals de .lazy modifier. Deze modifier activeert alleen bij het verlaten van een veld (wanneer je buiten het veld drukt). Dit zorgt ervoor dat je het veld in je eigen tempo volledig kunt uittypen zonder gehaast te worden door de debounce. Op deze manier wordt slechts één oproep uitgevoerd en heb je een fatsoenlijke ervaring. Implementatie Om de lazy modifier te implementeren, plaats je simpelweg .lazy aan het einde van de wire. Dat ziet er zo uit: Reden waarom we het niet gebruikten Dit voldeed echter niet volledig aan onze wensen, aangezien het minder gewenst zou zijn omdat wanneer je dat veld verlaat, je al begint met typen in een ander veld. Dit komt omdat de validatie doorgaat via een API van derden nadat deze door onze API is gekomen. Dan wanneer het verzoek terugkomt zal dit resulteren in een validatiefout op het veld terwijl je al halverwege het typen in het volgende veld bent. Aangepaste Directief In sommige gevallen zoals de onze is er een gebrek aan dekking door de standaardfuncties van een framework. In deze gevallen ben je verplicht om aangepaste oplossingen voor dit te bouwen. Om dit met Magewire te doen, doe je dit voornamelijk via directieven. Een directief heeft de mogelijkheid om functies toe te voegen die je door de hele applicatie heen kunt hergebruiken. Directieven worden toegepast op allerlei HTML-elementen. Dit kan variëren van formulierelementen waar je luisteraars voor gebeurtenissen plaatst of invoervelden waar je de gegevens van het component aan koppelt. Implementatie Om een ​​nieuwe directive te maken moeten we eerst een nieuwe lay-out specificeren waar we dit kunnen plaatsen. Maar voordat we dit doen moeten we eerst een bestand maken dat ons script zal bevatten. Omdat we dit voor een specifieke module maken, plaatsen we het op deze locatie: Elgentos_HyvaCheckoutViesVat::form/field/script.phtml. Begin met het bestand en geef het een eenvoudige bootstrap-inhoud: Nu we een bestand hebben, kunnen we beginnen met het maken van het bijbehorende layoutbestand. Omdat dit alleen wordt toegepast op de checkout, kunnen we de handle: hyva_checkout_components.xml gebruiken om onze directive in te voegen. Voor directives reserveert magewire een specifieke container met de naam: magewire.directive.scripts . Je layoutbestand ziet er dus ongeveer zo uit: We hebben nu een template die wordt geladen wanneer de klant in de checkout is. Dit zou dus het moment zijn waarop we beginnen met het schrijven van ons eerste deel van de directive. Om te beginnen schrijven we een eenvoudige directive om te zien hoe we ermee aan de slag kunnen. We schakelen terug naar het script.phtml-bestand en voegen deze code toe aan hun: Dit onderdeel zorgt voor de initialisatie van de directive die we bouwen. Je kunt deze directive nu toevoegen aan een veld waaraan je dit wilt toevoegen. Je kunt het als volgt toevoegen: Dit zal onze char-limiet op het werkelijke model initialiseren. We hebben nog steeds de modeldirective nodig om te definiëren dat het daadwerkelijk een model is. De directive die we bouwen, zal alleen het gedefinieerde model ondersteunen. Zoals je ziet, bestaat onze directive uit twee delen, het heeft de modifier na de directive zelf: .1500ms en de waarde 7 . Laten we ons eerst richten op het ophalen van de waarde. We doen dit door dit toe te voegen aan de directivecode: Deze code resulteert in het geval dat we de directive in het invoerelement dat we eerder hebben gemaakt, hebben gedefinieerd op 7. Laten we nu de modifier ophalen: Opnieuw gebaseerd op de input van eerder zal dit ons nu 1500 geven. Dit is hoe je de data kunt extraheren die je definieert in de elementen. Vervolgens moeten we vinden wat het model voor ons heeft gedefinieerd. Om de modeldirective in zijn functionaliteit te kunnen ondersteunen, moeten we het pad dat het heeft gedefinieerd daarin hebben. We doen dit door het volgende toe te voegen: Nu hebben we een script dat ons het pad geeft dat we in het model zelf hebben gedefinieerd. We kunnen dit pad nu gaan gebruiken om onze functionaliteit te creëren. De eerste stap die we moeten nemen is om de controle over de acties van de elementen te nemen. Omdat de kern van de bibliotheek dit doet met de x-model-directive van Alpine, zullen we dit ook doen. Het creëert deze modeldirective pragmatisch in JavaScript, zoals dit: Nu dat gedeelte is afgerond, hebben we een component die kan worden aangesloten. Zoals je ziet hebben we return component.$wire.get(path); ingevoegd. Dit zorgt ervoor dat het magewire-model wordt verbonden met het alpine-model. Anders zal de ene de andere gewoon overschrijven en niet coherent werken. Vervolgens gaan we de werkelijke invoergegevens van de clients gebruiken. Laten we beginnen met het lezen van de invoer en controleren of deze de tekenlimiet overschrijdt: Nu hebben we daadwerkelijk onze eerste echte feature gemaakt met de methode data. Voor de volgende stap moeten we ook de debounce implementeren. Omdat de scope van de debounce code van magewire ons blokkeert om dit te hergebruiken, heb ik de vrijheid genomen om het te kopiëren en te gebruiken in deze directive. Door dit te doen, hebben we ook de laatste stap van het implementeren van de directive in onze codebase voltooid. Hier is dus de voltooide directive: Conclusion Concluderend vereiste het verbeteren van de prestaties en functionaliteit van een specifiek BTW-nummerveld binnen de Hyva Checkout een op maat gemaakte aanpak die verder ging dan de beschikbare standaardopties. Door de debounce en andere modifiers te onderzoeken en ermee te experimenteren, werd het duidelijk dat geen van beide volledig voldeed aan de behoeften van de klant vanwege de complexiteit van server-side validatie met services van derden. Daarom werd een aangepaste directive gemaakt, die een verfijndere oplossing bood door het combineren van tekenlimiethandhaving met debounced input handling. Deze aanpak zorgde ervoor dat aan de vereisten van de klant werd voldaan, wat zorgde voor een soepelere en efficiëntere gebruikerservaring terwijl robuuste validatieprocessen werden gehandhaafd. ### [Hyva: Altijd eerst het default thema kopieren](https://elgentos.nl/blog/hyva-development-kopieer-altijd-eerst-de-default-theme) Eerst een beetje achtergrond. Volgens de documentatie die je hier kunt vinden, is het een goede praktijk om te beginnen met het opzetten van je Hyva-thema met de themastructuur zoals: Hyva/reset, Hyva/default-theme, Vendor/child-theme. Dit kan erg nuttig zijn als je denkt dat de TTM erg lang is en je verwacht meerdere thema-upgrades tijdens het proces, dat je zeer beperkte capaciteit hebt om Hyva tijdens de ontwikkeling te upgraden of je klant geeft gewoon niets om het ontwerp :) Ik ben bereid te betogen dat het in bijna alle gevallen beter is om gewoon te beginnen met het dupliceren van het Hyva/default-thema en het thema te hernoemen. Dit heeft veel voordelen, zoals een schone tailwind.config.js, alle elementen zijn niet meer gestyled, dus het is gemakkelijk te zien of je daar aan moet werken of niet. Maar, het belangrijkste voordeel is dat je op deze manier ervoor zorgt dat er geen branding-elementen lekken in het nieuwe ontwerp. Bijvoorbeeld als Hyva “text-red-600” gebruikt, wil je ervoor zorgen dat deze kleur exact de kleur is die jouw klant gebruikt in hun merkstrategie. Uiteraard geldt dit ook voor lettergrootte, regelafstand, koppen, randkleuren, enz. Mijn persoonlijke ervaring is dat de winkel gewoon niet "af" voelt als dit niet exact overeenkomt met het merkboek van de klant. Ja. Dit zal wat extra tijd kosten tijdens de ontwikkeling wanneer Hyva een groot thema-update uitrolt. Echter, met tools zoals onze upgrade helper, zul je met groot gemak door elk gewijzigd bestand scrollen. ### [Winkelwagen Leegmaken - Hyvä compat module](https://elgentos.nl/blog/hyva-winkelwagen-leegmaken) Winkelwagen Leegmaken - Hyvä compat module In de sterk concurrerende wereld van eCommerce zijn het de kleine dingen die jouw winkel kunnen onderscheiden. De Magento 2 Clear Cart module lijkt misschien een kleine toevoeging, maar de mogelijkheid om de gebruikerservaring te verbeteren en het winkelwagenbeheer te stroomlijnen is aanzienlijk. Door een eenvoudige manier te bieden om een winkelwagen leeg te maken, kun je frustratie verminderen en mogelijk je verkoop verhogen. Waarom deze module een gamechanger is Je vraagt je misschien af, "Waarom heb ik een winkelwagen leegmaken knop nodig?" Het lijkt misschien een kleine functie, maar de waarheid is dat het een wereld van verschil kan maken. 1. Verbeter de gebruikerservaring (UX) Online winkelen draait om gemak en eenvoud. Hoe eenvoudiger het is voor klanten om door je site te navigeren en hun winkelwagens te beheren, hoe waarschijnlijker het is dat ze een aankoop zullen voltooien. Een winkelwagen leegmaken knop stroomlijnt het proces, vooral voor shoppers die vaak van gedachten veranderen. In plaats van items één voor één te verwijderen, kunnen ze opnieuw beginnen met slechts één klik. 2. Bespaar tijd van klanten In de huidige snelle wereld wil niemand tijd verspillen aan het handmatig verwijderen van items uit een winkelwagen. De winkelwagen leegmaken knop bespaart tijd en verbetert de algehele winkelervaring. En onthoud, tevreden klanten komen eerder terug. 3. Naadloze compatibiliteit met Hyvä-thema's Als je al geniet van het strakke design en de prestaties van Hyvä-thema's, zul je blij zijn te weten dat de Clear Cart-module naadloos integreert. Het behoudt de moderne, gepolijste uitstraling van je winkel terwijl het essentiële functionaliteit toevoegt. 4. Eenvoudige installatie met composer Een van de grootste voordelen van deze module is hoe gemakkelijk deze te installeren is met Composer. Composer is een tool voor beheer van afhankelijkheden voor PHP waarmee je pakketten efficiënt kunt installeren en beheren. Met slechts een paar commando's heb je de Clear Cart module operationeel, waardoor je UX met minimale inspanning verbetert. De module induiken: hoe het werkt Nu je overtuigd bent van de voordelen, gaan we eens bekijken hoe deze module werkt. Voor degenen die de technische kant waarderen, is deze sectie voor jou. De Clear Cart-module werkt door rechtstreeks te integreren met het Magento 2 afrekensysteem. Wanneer een klant op de winkelwagen leegmaken knop klikt, stuurt de module een commando naar de backend van Magento om alle items uit de winkelwagen te verwijderen. Het maakt gebruik van de ingebouwde functies van Magento, wat zorgt voor een soepele werking zonder conflicten. Technische details Namespace en module naam: De module is ondergebracht in de Elgentos\ClearCart namespace, waardoor het gemakkelijk is om te vinden en te beheren in je Magento-installatie. Controller: De kern van de module is de Clear-controller, verantwoordelijk voor het leegmaken van de winkelwagen. Het werkt samen met de afrekeningssessie om de huidige winkelwagen op te halen en verwijdert vervolgens elk item afzonderlijk. Lay-out en sjabloonintegratie: De module bevat een XML-lay-outbestand dat de winkelwagen leegmaken knop op de winkelwagenpagina plaatst. De knop wordt weergegeven via een PHTML-sjabloon, die je gemakkelijk kunt aanpassen aan het ontwerp van je winkel. Het aanpassen van de winkelwagen leegmaken knop Wil je een eigen draai geven aan de winkelwagen leegmaken knop? Geen probleem! Het PHTML-sjabloon van de module is eenvoudig te wijzigen, zodat je de tekst, stijl of plaatsing van de knop kunt aanpassen aan je merk. Hoe de module te installeren en configureren via composer Het installeren van de Clear Cart-module met Composer is snel en eenvoudig. Volg deze stappen om aan de slag te gaan: 1. Installeer de module met Composer Open eerst je terminal en navigeer naar je Magento-rootdirectory. Voer vervolgens het volgende Composer-commando uit: composer require elgentos/magento2-clearcart Dit commando haalt de module rechtstreeks uit de Composer-repository en installeert deze in je Magento-installatie. 2. Schakel de module in Na de installatie moet je de module inschakelen door de volgende Magento-commando's uit te voeren: bin/magento module:enable Elgentos_ClearCart bin/magento setup:upgrade bin/magento setup:di:compile bin/magento setup:static-content:deploy Deze commando's schakelen de module in, werken je Magento-installatie bij en genereren de nodige bestanden. 3. Pas de knop aan (optioneel) Als je de knop voor het legen van de winkelwagen wilt aanpassen, kun je het PHTML-sjabloonbestand in de view/frontend/templates-map van de module bewerken. Hiermee kun je de HTML en CSS wijzigen zodat ze passen bij de unieke stijl van je winkel. 4. Test de functionaliteit Maak ten slotte je Magento-cache leeg en bezoek de winkelwagenpagina op je storefront. Je zou nu de knop voor het legen van de winkelwagen in actie moeten zien. Klik erop en zie hoe alle items als bij toverslag uit de winkelwagen verdwijnen! Veelgestelde vragen Is de Clear Cart-module compatibel met alle Magento 2-thema's? Hoewel de module is ontworpen met Hyvä-thema's in gedachten, zou deze met de meeste Magento 2-thema's moeten werken. Afhankelijk van de structuur van je thema moet je mogelijk enkele aanpassingen doen. Zal de module mijn winkel vertragen? De Clear Cart-module is lichtgewicht en geoptimaliseerd voor prestaties. Het gebruikt de native functies van Magento om de winkelwagen leeg te maken, dus het zou de snelheid of prestaties van je winkel niet mogen beïnvloeden. Kan ik de knop voor het legen van de winkelwagen aanpassen? Absoluut! De sjabloonbestanden van de module zijn gemakkelijk aan te passen, zodat je het uiterlijk en de functionaliteit van de knop voor het legen van de winkelwagen kunt wijzigen om aan je merk te voldoen. Hoe verwijder ik de module als ik deze niet meer nodig heb? Om de module te verwijderen, voer je het volgende Composer-commando uit: composer remove elgentos/magento2-clearcart Na het verwijderen van de module, volg je dit op met: bin/magento setup:upgrade bin/magento setup:di:compile bin/magento setup:static-content:deploy Deze commando's werken je Magento-installatie bij en verwijderen alle resterende sporen van de module. Waar kan ik ondersteuning krijgen voor deze module? Als een open-source project is de GitHub-pagina van de module een geweldige plek om ondersteuning van de gemeenschap te zoeken. Voor professionele hulp kun je overwegen een Magento-ontwikkelaar in te huren. ### [Hyva: Product attachments voor Magento2 & Hyva](https://elgentos.nl/blog/magento2-product-attachments-met-hyva) Verbeter de gebruikerservaring en conversie met productbijlagen Het kunnen aanbieden van correcte en complete data over je producten is een van de manieren waarop je bezoekers kunt overtuigen om een aankoop te doen. Productbijlagen zijn hier een cruciaal onderdeel van. Denk bijvoorbeeld aan de handleiding, bouwbeschrijving of garantiebewijzen. Daarom hebben wij bij Elgentos een robuuste Product Attachment Extension gemaakt die naadloos integreert met Magento en Hyva. Waarom een Product Attachment Extension overwegen? Verbeterde Toegankelijkheid van Informatie Klanten zoeken vaak naar gedetailleerde productinformatie om geïnformeerde aankoopbeslissingen te kunnen maken. Door een productbijlage-extensie te integreren, kun je essentiële bronnen zoals gebruikershandleidingen, technische specificaties, maattabellen en meer direct op je productpagina's aanbieden. Verbeterde Gebruikerservaring Bijlagen verrijken de winkelervaring door ervoor te zorgen dat alle benodigde informatie direct beschikbaar is zonder de productpagina te verlaten. Dit gemak kan de bounce rates verlagen en het vertrouwen van klanten bevorderen. Verhoogde Conversieratio's Gedetailleerde productbijlagen helpen aarzeling bij de koper te elimineren door veelvoorkomende vragen en zorgen aan te pakken via downloadbare inhoud zoals PDF's, video's en afbeeldingen. Gestroomlijnd Productbeheer Voor winkelmanagers wordt het toevoegen en beheren van productgerelateerde bestanden een gestroomlijnd proces, wat tijd bespaart en de kans op fouten vermindert. Of het nu gaat om het bijwerken van garantie-informatie of het toevoegen van nieuwe instructievideo's, alles kan direct vanuit de Magento-backend worden beheerd. Bij Elgentos hebben we de volgende functies in deze extensie gemaakt: Ondersteuning voor Meerdere Bestandsformaten Ondersteuning voor een breed scala aan bestandstypen (bijv. PDF, DOCX, MP4, JPG) zorgt voor veelzijdigheid in de soorten content die je aan je klanten kunt bieden. Drag-and-Drop Interface Een gebruiksvriendelijke backend-interface die eenvoudig bestandsbeheer mogelijk maakt, inclusief drag-and-drop functionaliteiten, vereenvoudigt het proces van het koppelen van bestanden aan producten. Aanpasbare Iconen Aangepaste iconen kunnen worden gebruikt om verschillende bestandstypen te vertegenwoordigen, waardoor het voor klanten gemakkelijker wordt om het type bestand dat ze downloaden te identificeren. Downloadbeperkingen Beheer wie bijlagen kan bekijken en downloaden op basis van klantgroepen of winkelweergaven, wat een laag van aanpassing toevoegt aan hoe informatie wordt gedistribueerd. Prestatieoptimalisatie Zorg ervoor dat de extensie geoptimaliseerd is voor prestaties, met minimale impact op laadtijden van pagina's, zelfs bij meerdere bijlagen. Conclusie Als je producten verkoopt op de shop die een uitgebreide handleiding hebben, of iets dergelijks, probeer deze dan toe te voegen op de shop. Dit verbeterd de conversie. Met deze extensie kan je dit gemakkelijk beheren in de backend van magento. Voor meer informatie kom in contact met elgentos en neem ook eens een kijkje op de hyva.io site! ### [Store Switcher - Hyvä compat module](https://elgentos.nl/blog/hyva-winkelzicht-wisselaar) De elgentos Store Switcher, met zijn verbeterde multi-store-switching-mogelijkheden en naadloze integratie met het Hyvä-thema, is een krachtig hulpmiddel voor elk bedrijf dat meerdere winkels beheert. Of je nu verschillende regio's, talen of gewoon meerdere merken onder één domein bedient, deze extensie zorgt ervoor dat je klanten moeiteloos tussen winkels kunnen navigeren zonder enige moeite. Wat is de elgentos Store Switcher? De elgentos Store Switcher is een krachtige Magento 2-extensie die is ontworpen om de standaard Hyvä Store Switcher te verbeteren. Het stelt klanten in staat om moeiteloos te schakelen tussen verschillende winkels of winkelweergaven binnen hetzelfde domein, vanaf elke pagina op je site. Dit is bijzonder nuttig voor bedrijven die een multi-website setup hebben, waar het aanbieden van een soepele en intuïtieve winkelervaring cruciaal is. Standaard Magento 2 winkelovergang Voordat we bespreken hoe de elgentos Store Switcher werkt, is het belangrijk om de beperkingen van de standaard winkelovergang functionaliteit in Magento 2 te begrijpen. Beperkingen van de standaard winkelovergang Inconsistente toegankelijkheid: de standaard winkelovergang is niet altijd toegankelijk vanaf elke pagina, wat het omslachtig maakt voor gebruikers om naadloos tussen winkels te schakelen tijdens hun browse-ervaring. Problemen met URL-structuur: voor multi-store setups die hetzelfde domein delen, kan het standaardgedrag van Magento leiden tot verwarrende URL-structuren en mogelijke conflicten, waardoor de navigatie minder intuïtief wordt voor gebruikers. Beperkte aanpassingsmogelijkheden: de standaard switcher biedt minimale aanpassingsopties qua uiterlijk en functionaliteit, wat de algehele gebruikerservaring en merkconsistentie kan beïnvloeden. Prestatieproblemen: het schakelen tussen winkels kan soms resulteren in paginareloads of vertragingen, wat de browse ervaring onderbreekt en mogelijk leidt tot hogere bouncepercentages. Deze beperkingen kunnen de bruikbaarheid en efficiëntie van een multi-store Magento 2-website aanzienlijk beïnvloeden, vooral bij het bedienen van diverse doelgroepen in verschillende regio's of talen. Belangrijkste kenmerken van de elgentos 'Store Switcher' Hier is een nadere blik op wat de elgentos Store Switcher een opvallende keuze maakt voor Magento 2 multi-store setups: 1. Geavanceerde winkelovergang Deze extensie verbetert de basis winkelovergang functionaliteit van Magento 2, waardoor gebruikers kunnen schakelen tussen winkels of weergaven vanaf elke pagina op je site. Dit is vooral nuttig voor complexe multi-store setups waar verschillende winkels hetzelfde domein delen. 2. Naadloze integratie met Hyvä-thema De elgentos 'Store Switcher' is volledig compatibel met het Hyvä-thema, een van de meest populaire thema's voor Magento 2. Het integreert soepel, waardoor de winkelovergang perfect past bij het algehele ontwerp en de functionaliteit van je site. 3. Aanpasbare renderstijlen Kies hoe de winkelovergang op je site verschijnt met aanpasbare renderstijlen. Je kunt de winkelnaam, code of een pictogram weergeven. Bovendien, als je kiest voor de pictogram rendermodus, kun je een uniek SVG-pictogram voor elke winkel instellen, wat een visueel onderscheidende manier biedt om tussen winkels te differentiëren. 4. Eenvoudige configuratie Het configureren van de elgentos Store Switcher is eenvoudig. Na installatie kun je de instellingen rechtstreeks vanuit het Magento-beheer paneel openen. Van daaruit kun je de switcher in- of uitschakelen, je voorkeursrenderstijl selecteren en pictogrammen aanpassen indien nodig. 5. Verbeterde klantervaring Door het voor klanten gemakkelijker te maken om tussen winkels te wisselen, verbetert de elgentos Store Switcher de gebruikerservaring aanzienlijk. Dit leidt tot een hogere klanttevredenheid, meer betrokkenheid en mogelijk meer verkoop. Vereisten voor het gebruik van de elgentos 'Store Switcher' Voordat je de elgentos 'Store Switcher' kunt gebruiken, zijn er een paar vereisten waaraan je moet voldoen: Magento 2.4.x: de extensie is ontworpen om te werken met Magento 2.4.x, dus zorg ervoor dat je winkel op deze versie of hoger draait. Hyvä Thema 1.3.x of hoger: de store switcher is gebouwd om te integreren met Hyvä Thema versie 1.3.x of later. Composer Geïnstalleerd: je hebt Composer op je server nodig om de extensie te installeren en beheren. Hoe de elgentos 'Store Switcher' te installeren en configureren Het opzetten van de Elgentos Store Switcher is eenvoudig en kan direct vanuit het Magento beheerpaneel worden gedaan. Zo begin je: 1. Installeer de extensie: Eerst moet je de Elgentos Store Switcher installeren met Composer. Open je terminal en navigeer naar je Magento 2 hoofdmap, voer dan het volgende commando uit: composer require elgentos/magento2-store-switcher Dit commando downloadt en installeert de extensie op je Magento 2 winkel. 2. Toegang tot de configuratie-instellingen: Na de installatie moet je de extensie configureren. Ga naar Stores > Configuration > Elgentos > Store Switcher in het Magento beheerpaneel. 3. Schakel de store switcher in of uit: Gebruik de meegeleverde schakelaar om de store switcher in of uit te schakelen volgens je behoeften. 4. Selecteer je weergavestijl: Kies hoe je wilt dat de store switcher wordt weergegeven. Je kunt kiezen uit Naam, Code of Icoon. 5. Stel SVG-iconen in (optioneel): Als je de Weergavestijl Icoon hebt geselecteerd, kun je een SVG-icoon specificeren voor elke winkel. Dit is optioneel, maar kan een geweldige manier zijn om een visueel element aan je store switcher toe te voegen. 6. Sla je configuratie op: Zodra je je keuzes hebt gemaakt, sla je de instellingen op om de wijzigingen toe te passen. FAQs 1. Welke Magento-versies ondersteunt de Elgentos Store Switcher? De extensie is compatibel met Magento 2.4.x en hoger. 2. Hoe installeer ik de Elgentos Store Switcher? Installatie gebeurt via Composer. Gebruik het commando composer require elgentos/magento2-store-switcher om de extensie te installeren. 3. Heeft het gebruik van de Elgentos Store Switcher invloed op de prestaties van de website? Nee, de extensie is ontworpen om licht en efficiënt te zijn, zodat het de prestaties van je website niet negatief beïnvloedt. ### [Is Hyvä een headless oplossing?](https://elgentos.nl/blog/is-hyva-een-headless-oplossing) In de snel evoluerende wereld van e-commerce is het voorop blijven niet alleen een optie, het is een noodzaak. Met klanten die naadloze ervaringen en razendsnelle websites eisen, zijn ontwikkelaars voortdurend op zoek naar tools en frameworks die aan deze verwachtingen kunnen voldoen. Daar komt Hyvä, een relatief nieuwe naam die golven maakt in de Magento-gemeenschap. Maar naarmate de populariteit toeneemt, is er een brandende vraag gerezen: is Hyvä headless? Om dit te beantwoorden, moeten we dieper duiken in de wereld van headless commerce, onderzoeken wat Hyvä te bieden heeft en of het aansluit bij de headless benadering die steeds populairder wordt. Dus maak je klaar, want we staan op het punt om een reis te maken die baanbrekende technologie combineert met de toekomst van online retail. Wat is headless commerce? Voordat we ingaan op de vraag of Hyvä headless is of niet, laten we eerst ervoor zorgen dat we allemaal op dezelfde pagina zitten over wat headless commerce eigenlijk is. Je hebt de term waarschijnlijk de laatste tijd veel gehoord, maar wat betekent het echt? In wezen scheidt headless commerce de front-end en back-end van een e-commerce platform. In traditionele systemen zijn deze twee nauw verbonden, wat betekent dat de front-end (wat je klanten zien) en de back-end (waar de magie gebeurt) als twee handen op één buik verbonden zijn. Dit kan geweldig zijn voor eenvoud, maar niet zozeer voor flexibiliteit. Zo verandert headless commerce het spel: Front-end vrijheid: met headless kun je elke front-end technologie kiezen om de gebruikerservaring te leveren, of het nu een website, mobiele app of zelfs een spraakgestuurd apparaat is. Deze flexibiliteit stelt ontwikkelaars in staat om zeer aangepaste ervaringen te creëren zonder beperkt te worden door de beperkingen van een traditioneel platform. Snellere ontwikkeling: omdat de front-end en back-end onafhankelijk zijn, kunnen updates en wijzigingen sneller worden doorgevoerd. Geen noodzaak om het hele systeem te herzien om slechts één component aan te passen. Omnichannel mogelijkheden: een headless architectuur maakt het gemakkelijker om een consistente ervaring te bieden over meerdere kanalen. Of je klanten nu winkelen op hun telefoons, tablets of desktopcomputers, ze krijgen dezelfde naadloze ervaring. Schaalbaarheid: als je bedrijf groeit, kan een headless setup gemakkelijker opschalen, waardoor je meer verkeer en complexere gebruikersinteracties aankunt zonder problemen. Met deze voordelen in gedachten, is het geen wonder dat headless commerce als een lopend vuurtje aanslaat. Maar waar past Hyvä in dit alles? Wat is Hyvä? Als je ondergedompeld bent in het Magento-ecosysteem, is de kans groot dat je Hyvä bent tegengekomen. Maar voor degenen die dat niet hebben, laten we het uitleggen. Hyvä is een front-end framework dat specifiek is ontworpen voor Magento 2, en het trekt om alle juiste redenen de aandacht. Gelanceerd door Willem Wigman eind 2020, werd Hyvä geboren uit de wens om een sneller, eenvoudiger en efficiënter alternatief te creëren voor Magento's standaard front-end, Luma. Hierom zijn ontwikkelaars enthousiast over Hyvä: Prestaties: Hyvä’s lichte en minimalistische aanpak verbetert de laadtijden van pagina's drastisch, wat een grote winst is in een tijd waarin zelfs een vertraging van één seconde kan leiden tot verloren verkopen. Eenvoud: Hyvä verwijdert de complexe afhankelijkheden en opgeblazen JavaScript die bij Luma komen kijken. Het resultaat? Een schonere, beter onderhoudbare codebase die gemakkelijker is om mee te werken. Developer ervaring: Hyvä staat bekend als gebruiksvriendelijk voor ontwikkelaars. Met minder bewegende onderdelen en moderne technologieën zoals Tailwind CSS en Alpine.js is het eenvoudiger om een shop te bouwen en aan te passen zonder je haar uit je hoofd te trekken. Gemeenschap en ondersteuning: Ondanks dat het relatief nieuw is, heeft Hyvä een groeiende gemeenschap en sterke ondersteuning, waardoor het een levensvatbare optie is voor diegenen die hun Magento-winkels toekomstbestendig willen maken. Maar hier is de miljoen-dollar vraag: Is Hyvä headless? Laten we dieper graven. Is Hyvä headless? Om deze vraag te beantwoorden, moeten we verduidelijken wat het betekent voor een framework zoals Hyvä om headless te zijn. Strikt genomen is Hyvä zelf niet inherent headless. Het is voornamelijk een front-end framework ontworpen om te werken binnen de traditionele, gekoppelde Magento-architectuur. Met andere woorden, Hyvä's front-end is nauw geïntegreerd met Magento's back-end, waardoor het meer lijkt op het traditionele model dan een echte headless-oplossing. Echter, en dit is een grote echter, is de situatie niet zo duidelijk als het lijkt. Hoewel Hyvä niet ontworpen is als een headless oplossing vanaf het begin, betekent dit niet dat het niet kan worden gebruikt in een headless architectuur. Hyvä in een headless omgeving Hier wordt het interessant. Hoewel Hyvä niet headless is van ontwerp, kan het nog steeds worden gebruikt in een headless opzet. Hoe? Door Hyvä te gebruiken als de front-end in een losgekoppeld systeem waar de back-end wordt beheerd door Magento, maar de twee niet direct zijn verbonden. In een headless omgeving kun je API's gebruiken om te communiceren tussen Magento's back-end en Hyvä's front-end. Dit stelt je in staat om te genieten van het beste van beide werelden: Hyvä's prestaties en eenvoud: je krijgt de razendsnelle snelheid en schone codebase waarvoor Hyvä bekend staat. Headless flexibiliteit: door de front-end los te koppelen van de back-end, krijg je de vrijheid om te innoveren en je bedrijf te schalen op manieren die niet mogelijk zouden zijn met een strak gekoppeld systeem. Het is een beetje alsof je je taart hebt en hem ook opeet. Hoewel Hyvä van nature misschien niet headless is, is het zeker headless-compatibel, waardoor je een krachtig hulpmiddel hebt in je e-commerce arsenaal. Waarom kies je voor Hyvä voor je headless opzet? Als je een headless aanpak overweegt, vraag je je misschien af waarom je Hyvä zou moeten kiezen als je front-end framework. Nou, laten we de voordelen uiteenzetten: Razendsnelle prestaties: snelheid is koning in e-commerce, en Hyvä levert. Door gebruik te maken van moderne technologieën en onnodige ballast te elimineren, zorgt Hyvä ervoor dat je site snel laadt, wat zorgt voor een betere gebruikerservaring en mogelijk je zoekmachine rankings verbetert. Ontwikkelaar-vriendelijk: laten we eerlijk zijn, werken met Magento's standaard Luma-thema kan een hoofdpijn zijn. Hyvä vereenvoudigt het ontwikkelproces, waardoor het gemakkelijker wordt om je site te bouwen en te onderhouden. Bovendien is het gebouwd op technologieën waar ontwikkelaars van houden, zoals Tailwind CSS en Alpine.js. Aanpasbaar en flexibel: of je nu een kleine boetiekwinkel runt of een groot e-commerce platform, Hyvä's flexibiliteit stelt je in staat om een front-end te creëren die is afgestemd op jouw behoeften. En wanneer gebruikt in een headless opzet, strekt deze flexibiliteit zich ook uit tot de back-end, waardoor je volledige controle hebt over je tech stack. Toekomstbestendig: e-commerce evolueert snel, en de tools die je vandaag kiest, zullen je bedrijf jarenlang beïnvloeden. Door headless te gaan met Hyvä, houd je niet alleen de trends bij—je positioneert je bedrijf voor langetermijnsucces. Gemeenschapsondersteuning: de Hyvä-gemeenschap groeit, en daarmee komt toegang tot een schat aan kennis, middelen en ondersteuning. Of je nu net begint of een ervaren ontwikkelaar bent, er is een gemeenschap van gelijkgestemden die klaar staat om je te helpen slagen. Hoe Hyvä op te zetten in een headless architectuur Dus, je bent verkocht op het idee van het gebruik van Hyvä in een headless setup. Maar hoe ga je eigenlijk te werk? Hier is een vereenvoudigd stappenplan om je op weg te helpen: 1. Definieer je front-end en back-end rollen In een headless architectuur zijn je front-end en back-end aparte entiteiten. Beslis welke technologieën je voor elk zult gebruiken. Hyvä zal bijvoorbeeld je front-end framework zijn, terwijl Magento’s back-end voor databeheer, voorraadbeheer en andere zakelijke logica zal zorgen. 2. Stel je Hyvä front-end in Als je Hyvä nog niet hebt geïnstalleerd, installeer het dan als je Magento-thema. Dit omvat het instellen van Tailwind CSS en Alpine.js, samen met eventuele andere aanpassingen die je nodig hebt voor jouw specifieke use case. 3. Benut APIs voor communicatie Omdat de front-end en back-end ontkoppeld zijn, moet je een communicatiekanaal tussen beide opzetten. Magento biedt REST en GraphQL APIs die je kunt gebruiken om gegevens op te halen voor je Hyvä front-end. Zorg ervoor dat je in kaart brengt welke gegevens je van de back-end moet ophalen en hoe deze op de front-end worden weergegeven. 4. Bouw en pas je front-end aan Met je APIs ingesteld, kun je beginnen met het bouwen van je front-end ervaring met Hyvä. Omdat Hyvä zeer aanpasbaar is, kun je een unieke look en feel creëren die overeenkomt met je merk. 5. Test en optimaliseer Testen is cruciaal in een headless setup. Zorg ervoor dat de communicatie tussen je front-end en back-end naadloos verloopt en dat je site goed presteert op alle apparaten. Optimaliseer voor snelheid, responsiviteit en gebruikerservaring om het meeste uit je headless setup te halen. FAQs Is Hyvä geschikt voor kleine bedrijven of alleen voor grote ondernemingen? Hyvä is geschikt voor bedrijven van elke omvang. De eenvoud en prestaties maken het een uitstekende keuze voor kleine bedrijven, terwijl de flexibiliteit en schaalbaarheid het een krachtig hulpmiddel maken voor grotere ondernemingen. Kan ik Hyvä gebruiken met een traditionele Magento setup, of moet ik headless gaan? Je kunt Hyvä absoluut gebruiken met een traditionele Magento setup. Het is ontworpen om naadloos te werken binnen Magento’s architectuur, dus headless gaan is optioneel, niet verplicht. Wat zijn de belangrijkste voordelen van het gebruik van Hyvä boven andere front-end frameworks? De belangrijkste voordelen van Hyvä zijn snellere prestaties, eenvoudigere ontwikkeling en een schonere codebase. Bovendien biedt het betere aanpassingsmogelijkheden en heeft het sterke ondersteuning vanuit de gemeenschap. Conclusie Dus, is Hyvä headless? Het antwoord is genuanceerd. Hoewel Hyvä niet out of the box headless is, kan het onderdeel zijn van een headless architectuur, waardoor je het beste van beide werelden krijgt: de prestaties en eenvoud van Hyvä, gecombineerd met de flexibiliteit en schaalbaarheid van een headless setup. Of je nu een kleine online winkel of een groot e-commerce platform runt, Hyvä is een veelzijdig hulpmiddel dat zich kan aanpassen aan jouw behoeften, waardoor het een waardevol bezit is in de concurrerende markt van vandaag. Als je je volgende stappen overweegt, denk dan aan de lange termijn doelen voor je bedrijf. Een headless setup met Hyvä kan precies de sleutel zijn om de concurrentie voor te blijven, uitzonderlijke klantenervaringen te bieden en je e-commerce site toekomstbestendig te maken voor de komende jaren. ### [Bestel op SKU — Hyvä compatibiliteitsmodule](https://elgentos.nl/blog/hyva-compat-module-order-by-sku) Een manier om de gebruikerservaring te verbeteren is door klanten in staat te stellen producten direct te bestellen op hun SKU's (Stock Keeping Units), vooral in winkels met grote inventarissen of B2B-platforms waar klanten vaak de exacte SKU's kennen die ze nodig hebben. De Elgentos Bestel op SKU extensie voor Magento 2 biedt precies dat - gebruikers kunnen snel bestellingen plaatsen met behulp van SKU's, waardoor het koopproces wordt vereenvoudigd. In deze blog zullen we de Elgentos Bestel op SKU extensie verkennen, de vereisten, hoe het werkt met Hyvä Theme 1.3.x of hoger, en waarom het een waardevolle toevoeging is voor jouw Magento 2 winkel. Als je op zoek bent naar een manier om het bestelproces voor je klanten te stroomlijnen, biedt deze gids alle informatie die je nodig hebt. Wat is de elgentos 'Bestel op SKU' extensie? De Elgentos Bestel op SKU extensie is een krachtig hulpmiddel ontworpen voor Magento 2 winkels. Deze extensie stelt klanten in staat bestellingen te plaatsen door product SKU's rechtstreeks in te voeren of te uploaden. Het is bijzonder nuttig voor bedrijven met een groot catalogus of die zich richten op B2B klanten die liever op SKU bestellen in plaats van door pagina's met producten te bladeren. Belangrijkste kenmerken van de elgentos Bestel op SKU extensie Snel op SKU gebaseerde bestellingen: klanten kunnen snel producten aan hun winkelwagen toevoegen door SKU's in te voeren, waardoor het afrekenproces sneller en efficiënter wordt. Gebruiksvriendelijke interface: de extensie integreert naadloos met de voorkant van je Magento winkel en biedt een eenvoudige en intuïtieve interface voor klanten. Foutafhandeling: de extensie bevat functies voor foutcontrole die gebruikers waarschuwen als ze een ongeldige SKU invoeren of als een product niet op voorraad is. Hyvä thema compatibiliteit: met de release van Hyvä Theme 1.3.x of hoger is de extensie volledig compatibel, waardoor het bestelproces zowel snel als visueel aantrekkelijk is. Vereisten voor het gebruik van de elgentos 'Bestel op SKU' extensie Voordat je de elgentos Bestel op SKU extensie kunt gebruiken, zijn er enkele vereisten waaraan je moet voldoen: Magento 2.4.x: de extensie is ontworpen om te werken met Magento versie 2.4.x. Zorg ervoor dat je winkel deze versie gebruikt om compatibiliteitsproblemen te voorkomen. Hyvä Theme 1.3.x of hoger: als je het Hyvä Thema gebruikt (wat sterk wordt aanbevolen vanwege de prestaties en eenvoud), zorg dan dat je op versie 1.3.x of hoger zit. Dit zorgt voor volledige compatibiliteit met de Elgentos Bestel op SKU extensie. Composer geïnstalleerd: je hebt Composer op je server nodig om de afhankelijkheden van de extensie te beheren en de installatie te vergemakkelijken. Hoe de elgentos 'Bestel op SKU' extensie te installeren Het installeren van de elgentos Bestel op SKU extensie is eenvoudig als je de stappen correct volgt. Hier is een stapsgewijze handleiding: Stap 1: Installeren via Composer Eerst moet je de extensie installeren met Composer. Open je terminal en navigeer naar je Magento 2 hoofddirectory. Voer het volgende commando uit: composer require elgentos/magento2-order-by-sku Dit commando zal de extensie en zijn afhankelijkheden downloaden. Stap 2: De extensie inschakelen Zodra de extensie is geïnstalleerd, moet je deze inschakelen. Voer de volgende commando's uit in je terminal: php bin/magento module:enable Elgentos_OrderBySku php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento cache:clean Deze commando's zullen de module inschakelen, je Magento-instantie bijwerken en de cache leegmaken. Stap 3: Verifieer installatie Nadat je de extensie hebt ingeschakeld, log je in op je Magento-beheerpaneel en navigeer je naar Winkels > Configuratie > Elgentos > Bestellen Op SKU om de extensie in te stellen volgens de behoeften van je winkel. Veelgestelde vragen Is de Elgentos 'Bestellen op SKU'-extensie alleen voor B2B-winkels? Nee, hoewel het vooral nuttig is voor B2B-winkels, kan elke Magento-winkel met een grote productcatalogus of klanten die vaak specifieke producten opnieuw bestellen, profiteren van deze extensie. Kan ik de foutmeldingen in het SKU-bestelproces aanpassen? Ja, de extensie stelt je in staat om foutmeldingen aan te passen, zodat klanten duidelijke en nuttige feedback ontvangen als ze een ongeldige SKU invoeren of als een product niet op voorraad is. Ondersteunt de extensie alle Magento-producttypen? De extensie ondersteunt de meeste Magento-producttypen, waaronder eenvoudige, configureerbare en gebundelde producten. Het is echter altijd een goed idee om het te testen met je specifieke productcatalogus om compatibiliteit te garanderen. Zal het gebruik van deze extensie mijn site vertragen? Wanneer gebruikt met het Hyvä-thema, dat is geoptimaliseerd voor prestaties, zou de extensie de snelheid van je site niet merkbaar moeten beïnvloeden. Sterker nog, het gestroomlijnde bestelproces kan de algehele efficiëntie verbeteren. De Elgentos Bestellen op SKU extensie is een waardevolle toevoeging aan elke Magento-winkel, vooral voor winkels met grote catalogi of een B2B-focus. Door klanten in staat te stellen producten rechtstreeks op SKU te bestellen, stroomlijn je het aankoopproces, verbeter je de gebruikerservaring en voldoe je aan de behoeften van terugkerende en bulkklanten. In combinatie met het Hyvä-thema 1.3.x of hoger, verbetert deze extensie niet alleen de functionaliteit, maar zorgt er ook voor dat je winkel snel, efficiënt en visueel aantrekkelijk blijft. Of je nu de winkelervaring voor je klanten wilt verbeteren of je backend-processen wilt optimaliseren, de Elgentos Bestellen op SKU-extensie is een tool die de moeite waard is om te overwegen voor je Magento 2 winkel. ### [Tool: HTTP Statuscode Checker](https://elgentos.nl/blog/tool-elgentos-http-statuscode-checker) We regularly build and open-source tools that are useful in our day-to-day work. One of these is our HTTP Status Code Checker. With this command-line tool you can check the HTTP status codes (200, 404, etc.) based on your sitemap XML or a CSV file with URLs (which you can get from the UA Query Explorer, for example). Especially useful before and after a migration to check whether your redirects are set up correctly! See the tool on Github; elgentos/http-statuscode-checker ### [Tool: Magento Upgrade GUI](https://elgentos.nl/blog/tool-magento-upgrade-gui) Have you ever struggled with a Magento 2 upgrade? Quite a daunting task at times.. But since we started working with Ampersand's Upgrade Patch Helper, upgrading Magento 2 installs became a lot easier! Especially since Luke Rodgers built in support for third-party extensions. The past year we've been working on a tool internally to make this process easier still - a GUI to do your Magento 2 upgrades! This is a desktop app to make it easier for you to read and process the output files of the Upgrade Patch Helper. We just open-sourced it, so it is available for everyone on Github: elgentos/magento2-upgrade-gui ### [Tool: Table Rates Generator](https://elgentos.nl/blog/tool-table-rates-generator) Een van de eerste taken die wij altijd doen bij het opzetten van een nieuwe Magento shop is het volgen van een zelf opgestelde checklist. Onder het kopje “Checkout (Shipping)” in de PDF vind je het puntje “Shipping Methods”. Daaronder hoort bij veel shops het instellen van de table rates. Table rates zijn verzendkosten gekoppeld aan gewicht, aantal bestelde producten of het subtotaal van de bestelling. Zo is het mogelijk per land verschillende prijzen in te stellen aangaande verzending. Handig voor als je zoals veel Nederlandse shops ook aan het buitenland levert. Maar het instellen van deze table rates is niet altijd even duidelijk voor iedereen. Ten eerste zijn er, zoals genoemd, drie condities om ze op te configureren; op gewicht, op aantal producten en op subtotaal van de bestelling. Deze instellingen kan je vinden onder Systeem > Configuratie > Verzendwijzen > Table Rates. Om de landen en prijzen op te geven dien je een CSV bestand te maken die je ook in dit scherm kan uploaden. Hiervoor dien je wel eerst de “Scope huidige configuratie” op je website (en niet winkelzicht) te zetten. Dit CSV bestand aanmaken is echter handmatig nogal een klus, vooral als je niet gewend bent om met CSV bestanden te werken. Ook dien je de exacte lettercodes voor alle landen op te zoeken. Om dit te vergemakkelijken hebben wij een Table Rates Generator gemaakt waarmee je landen kan aanvinken, verzendkosten kan opgeven en de conditie kan aangeven. Ook kan je per land meerdere rijen opgeven waarmee het mogelijk is om bijvoorbeeld gratis verzendkosten vanaf een vastgesteld orderbedrag in te stellen. Binnen een paar minuten heb je je table rates bestand al klaar. De generator is hier te vinden: www.tableratesgenerator.com ### [MageUnconference 2017 Cologne](https://elgentos.nl/blog/mageunconference-2017-cologne)  4 min read Last weekend (March 3rd - 5th), we attended the MageUnconference in Cologne with the entire team. The German unconference was this year organised again by the Firegento association, in particular Carmen, Sonja, Rico and Fabian. First of all, thanks for your hard work! This was not the first time we attended an unconference. We also attended the MageUnconference in Berlin last year, aswell as the MageUnconference in Utrecht (The Netherlands), which we also sponsored. Unconferences are our favorite type of conferences, and we’ll use this blog post to explain why. The talks Which talks? Well, you don’t know beforehand. An unconference is a conference with speakers, they’re just not set when you enter the venue. Everybody is invited to put up a topic they either want to hear about or want to talk about. When the windows are filled with A4 with topics (not necessarily Magento-related), the voting starts. The topics with the most votes get in the schedule and we’re off. Some examples of the topics; - Future of Magento - Javascript basics - Dependency Injection 101 - Bee keeping & its benefits - Continuous Deployments - Using Docker in production - Help, my shop is hacked! - Module Migration - First aid: Paramedics insides - Magento 1.9.x Frontend Performance Why is this a good thing? Because it makes the conference as relevant as possible. No ‘case studies’ which actually are sales talks or ego-boosting one-man shows. Only topics that people want to hear about will be chosen. Besides that, because of the (usually) short time of preparation beforehand, the talks usually end up being group discussions, which is great for everybody attending. Talking at an unconference is a low-barrier entry to the speaking world. Testing the water with like-minded people who have actually shown their interest in the topic you are talking about beforehand – you can’t really get a better springboard to start speaking than that. Unconference fosters new speakers, and that’s a great thing. The social aspect of it Parties and drinks, those are just the ingredients. The actual worth in those parties and drinks are the people you meet. The chats you have with people who do the same thing as you on a daily basis, the stuff you find out you have in common with them. Because at the end of every conference, I come to realize that I have more in common with all attendees than we have in difference. But you learn from those differences, it what makes us better programmers; look around, talk to people and learn from them. And you learn just as much (if not more) from those brilliant minds at the (after-)party than at the conference itself. Team building We try to attend these unconferences with the whole team. It’s not obligated in any way, but we highly encourage participation. So far, everybody has enjoyed these bi-yearly outings very much. It strengthens team spirit, widens the gaze, narrows tunnel vision and teaches everybody on a wide variety of subjects (including lockpicking!). This is why we also sponsor the Unconference in The Netherlands; we feel that it is conferences like these that is the glue of the Magento community. At our unconference retrospective this week, everybody agreed it was a very fun event and they learned tons. It certainly gave everybody new tools & techniques to learn about, like vim, regular expressions, Knockout JiSse, Prometheus, git rerere and even lockpicking. Walking towards the venue - 360 video 2017; The Netherlands The next MageUnconference will be the one in Utrecht, the Netherlands. It’s held at an actual fortress and this year it’s in summer (August 25 - 27) so you can pitch your own tent if you feel like it! Visit the site for more information, we hope to see you there! ### [Extensie: Imgix voor Magento 2](https://elgentos.nl/blog/extensie-imgix-magento-2) Ooit afgevraagd hoe je snel optimaliseren van de beelden in je Magento 2 winkel? We hebben gewerkt met beeld optimalisatie oplossing Imgix voor een tijdje nu. We zijn zulke grote fans, dat we zelfs een Magento 2 extensie hebben geschreven en open-sourced voor hun service! Met behulp van deze extensie, worden alle afbeeldingen op je winkel (dus niet alleen de product & categorie afbeeldingen) geoptimaliseerd. Dat betekent dat hun bestandsgrootte kleiner is en ze worden geserveerd in WebP indien mogelijk. Maar Imgix is veel krachtiger dan dat; je kunt ook allerlei soorten beeldmanipulatie doen. Een voorbeeld hiervan is te zien op de schrijvers-pagina van onze klant Uitgeverij Pluim. De foto's van de schrijvers (die worden geserveerd vanuit het Prismic CMS) worden automatisch bijgesneden & ingezoomd op het gezicht van de schrijver - geen handmatige bewerking nodig! Je kan de extensie hier krijgen; elgentos/magento2-imgix ### [Magento-ontwikkeling stroomlijnen met CI/CD](https://elgentos.nl/blog/magento-ontwikkeling-stroomlijnen-met-cicd) In de snel evoluerende wereld van e-commerce vereist het voorblijven van de concurrentie niet alleen een krachtig platform, maar ook efficiënte ontwikkelpraktijken. Dit is waar Continuous Integration (CI) en Continuous Deployment (CD) om de hoek komen kijken. Deze praktijken hebben de ontwikkeling van software getransformeerd door de kosten te minimaliseren, de betrouwbaarheid te verbeteren en de samenwerking te vergemakkelijken. Op het gebied van Magento-ontwikkeling heeft CI/CD bewezen een game-changer te zijn, die bureaus in staat stelt hun processen te stroomlijnen en uitzonderlijke resultaten te leveren. In deze blogpost verkennen we het belang van CI/CD voor Magento-ontwikkeling en introduceren we een uitgebreide oplossing die is ontworpen om een revolutie teweeg te brengen in de manier waarop Magento-agentschappen werken. Voordeel 1: Kosten besparen Traditionele benaderingen voor softwareontwikkeling gaan vaak gepaard met lange ontwikkelingscycli, handmatig testen en afzonderlijke implementatiefasen. Dit kost niet alleen kostbare tijd, maar leidt ook tot hogere ontwikkelingskosten. CI/CD voor Magento biedt een oplossing door de integratie-, test- en implementatieprocessen te automatiseren. Dit betekent dat fouten eerder in de ontwikkelcyclus worden gedetecteerd, waardoor er later minder dure bugfixes nodig zijn. Met geautomatiseerd testen en uitrollen kunnen ontwikkelaars zich richten op het maken van nieuwe functies in plaats van op het oplossen van problemen, wat uiteindelijk tijd en middelen bespaart. Voordeel 2: Betrouwbaarheid en stabiliteit In de wereld van e-commerce is downtime geen optie. CI/CD zorgt voor een stabielere en betrouwbaardere ontwikkelomgeving door testprocedures te automatiseren en een consistent implementatieproces af te dwingen. Met zero downtime implementaties kunnen wijzigingen naadloos worden geïntegreerd in de live omgeving zonder de klantervaring te verstoren. Bovendien elimineert de push-only deployment aanpak het risico van code manipulatie op productieservers, wat de veiligheid en stabiliteit ten goede komt. Voordeel 3: Efficiënte workflow De geïntegreerde aard van CI/CD in Magento-ontwikkeling bevordert de samenwerking tussen ontwikkelaars, testers en operationele teams. Wijzigingen worden automatisch getest in een gecontroleerde omgeving, waardoor de kans op het introduceren van bugs op de productiesite afneemt. Dit bevordert een soepelere workflow waarbij problemen in een vroeg stadium worden geïdentificeerd en opgelost, waardoor knelpunten worden voorkomen en de algehele efficiëntie wordt verbeterd. Introductie van MageCICD: de ultieme Magento CI/CD oplossing Met trots introduceren we een geavanceerde oplossing die speciaal is afgestemd op Magento-agentschappen die de kracht van CI/CD willen benutten. Onze oplossing is uitgerust met een reeks functies die ontworpen zijn om uw ontwikkelingsproces te verbeteren: Teststappen in de pijplijn: End-to-end testen met Cypress: Zorg voor uitgebreide tests van de gebruikerservaring van uw Magento-applicatie. Linting voor JSON/XML/PHP: Handhaaf code kwaliteit en consistentie. Statisch testen: Gebruik tools zoals phpcs, phpmd, phpstan, phpcpd, pdepend en phpmetrics om problemen in een vroeg stadium op te sporen. Prestatiestappen in de pijplijn: Lighthouse: Evalueer de prestaties en toegankelijkheid van uw Magento-website. Sitespeed: Analyseer de snelheid van de website en optimaliseer de laadtijden. Smoke Tests: Voer basistests uit om de kernfunctionaliteit te controleren. Beveiligings- en debuggingstappen in de pijplijn: Beveiligingsberichten: Blijf op de hoogte van beveiligingspatches en -berichten. OWASP ZAP-checklist: Zorgen voor naleving van beveiligingsstandaarden. Sentry-release: Maak automatisch Sentry-releases voor effectieve foutopsporing. Customized implementatie: Pas aangepaste Varnish VCL's toe: Caching configuraties aanpassen aan je behoeften. Wis opcache na implementatie: Voorkom problemen door verouderde code in de opcache. Ondersteuning voor semaio/Magento2-ConfigImportExport: Vereenvoudig configuratiebeheer. Auto-upgrade Magento en Composer pakketten: Houd je platform en afhankelijkheden up-to-date. Reviewomgeving en samenwerking: Implementeer naar aparte reviewomgevingen: Test wijzigingen geïsoleerd voordat ze live gaan. Aangepaste hostnaam en domein: Boots productieomgeving na voor nauwkeurig testen. Database importeren en beheerders aanmaken: Realistische testomgevingen opzetten. Integratie met GitLab en Slack: Stroomlijn communicatie en issue tracking. Eenvoudig inloggen op draaiende reviewomgevingen via command line tools. Omdat de eisen van e-commerce blijven groeien, moeten Magento-agentschappen efficiënte en robuuste ontwikkelpraktijken toepassen. Onze uitgebreide oplossing, op maat gemaakt voor Magento-agentschappen, stelt ontwikkelaars in staat om effectief gebruik te maken van deze praktijken, wat resulteert in snellere, stabielere en veiligere Magento-implementaties. Met een indrukwekkende reeks functies die zijn ontworpen om elk aspect van het ontwikkelproces aan te pakken, is deze oplossing klaar om een revolutie teweeg te brengen in de manier waarop Magento-agentschappen werken en hen te helpen uitzonderlijke resultaten te leveren in de steeds veranderende wereld van e-commerce. Als u geïnteresseerd bent in het gebruik van onze CI/CD-oplossing, gebruik dan het contactformulier op deze site of op www.magecicd.com. ### [Extensie: Prismic.io headless CMS](https://elgentos.nl/blog/extensie-prismic-io-headless-cms) CMS inhoud beheren in Magento is niet leuk. Zo, we hebben het gezegd. Hoewel iedereen die heeft gewerkt met Magento dit al weet. Magento heeft vorig jaar Page Builder uitgebracht voor alle merchants, wat geweldig is. Maar er zijn andere oplossingen, zoals Prismic.io. Prismic.io is een headless CMS. Het grote voordeel van een headless CMS is dat alle inhoud leeft in een systeem dat speciaal is gebouwd om dit soort inhoud te beheren. Je hebt ook het voordeel van het loskoppelen van je e-commerce software van je marketing content, wat vooral handig is wanneer je te maken hebt met grotere teams en grotere hoeveelheden content. We hebben de Prismic.io Magento 2-extensie gebouwd en open-sourced, waarmee u naadloos uw Prismic-inhoud kunt integreren in je Magento 2-winkel. Hier zijn een paar van onze klanten waar we Prismic geïmplementeerd hebben in hun Magento 2 winkel; - www.dutchlabelshop.com - www.takeaware.nl - www.limburgiavlaai.nl - www.uitgeverijpluim.nl Bekijk deze video over hoe eenvoudig het is om te implementeren: Je kunt de extensie hier op Github vinden; elgentos/magento2-prismicio ### [Verbeter je Magento 2 checkout met de Hyvä Checkout](https://elgentos.nl/blog/verbeter-je-magento-2-checkout-met-hyva-checkout) Waarom genoegen nemen met gemiddeld als je het beste kunt hebben? 🤩 Als laatste stap in de winkelervaring van de klant speelt de conversieratio van de afrekenpagina een cruciale rol. Hyvä Checkout pakt dit aan door het ontwerp en de gebruiksvriendelijkheid van het afrekenproces aanzienlijk te verbeteren, wat kan leiden tot een stijging van maar liefst 35% in conversieratio's. Hyvä Checkout revolutioneert de afrekenervaring voor alle betrokken partijen. Voor shoppers biedt het een snel, soepel en intuïtief afrekenproces, met een laadtijd die op mobiele apparaten 13 keer sneller is dan de standaard Magento Luma afrekenpagina. Voor handelaren leidt het tot meer verkopen met een betere conversieratio en out-of-the-box configuratieopties. En voor ontwikkelaars vermindert het de tijd en moeite die nodig is om de Magento Checkout aan te passen met minstens een factor tien. De Hyvä Checkout wordt standaard geleverd met meerdere lay-outopties, zoals een afrekenproces in drie stappen of een "one-step checkout", waarbij alle stappen op één pagina worden weergegeven. Deze lay-outopties kunnen vrij eenvoudig worden gewijzigd en het toevoegen van een aangepaste lay-out is ook eenvoudig. De Hyvä Checkout is gebouwd bovenop Magewire, een systeem waarmee onze backend-ontwikkelaars de logica voor de afrekenpagina kunnen maken in PHP en XML en deze kunnen verbinden met de frontend zonder grote delen JavaScript te hoeven schrijven. Omdat de logica aan de serverkant wordt geplaatst, is de afrekenpagina erg snel, omdat deze niet afhankelijk is van de prestaties aan de clientzijde. Integraties Het toevoegen van functionaliteiten zoals betaalmethoden, verzendmethoden en adresvalidatie gaat vele malen sneller dan het bouwen ervan in de oude Luma afrekenpagina. De Hyvä Checkout is vanaf het begin gebouwd met het idee van eenvoudige aanpasbaarheid, wat echt tot uiting komt. De momenteel beschikbare integraties voor Hyvä Checkout zijn: Mollie Multisafepay PostNL ShipperHQ EU VAT calculation PayPal Amazon Pay Intern hebben we ook een integratie gebouwd met Paazl. Voor een andere klant hebben we een lijst van beschikbare UPS ophaalpunten geïmplementeerd als verzendmethode. Dit kostte slechts enkele uren in plaats van dagen. Technisch de diepte in Voor de implementatie hoefden we alleen de gegevens van de winkelwagen via PHP naar een API-eindpunt te sturen en de ophaalpunten terug te krijgen. Met de standaard Hyvä Modal konden we deze gegevens eenvoudig converteren naar een gebruiksvriendelijke interface voor de klant. Wanneer de gebruiker een ophaalpunt selecteert, stuurt Magewire het geselecteerde punt naar de offerte. Een van de geweldige functies die de afrekenpagina biedt, zijn de validatiemethoden. Met Magewire kunt u eenvoudig de createBlocking-methode gebruiken, die deel uitmaakt van de EvaluationResultFactory, om te controleren of de gebruiker al een ophaalpunt heeft geselecteerd. Zo niet, dan blokkeert het de gebruiker om een bestelling te plaatsen. In combinatie met andere methoden zoals createSucces en createErrorMessage is het heel eenvoudig om de invoer van de gebruiker aan de backend te valideren en automatisch feedback aan hen te geven in de frontend. Deze methoden maken het ook erg gemakkelijk om het afrekenproces op verschillende manieren op te splitsen. Het is heel eenvoudig om een afrekenproces op één pagina te maken, maar hetzelfde geldt voor een afrekenproces in meerdere stappen. Voor frontend-validatie gebruikt de afrekenpagina een combinatie van Magewire samen met de standaard Hyvä Form-validatie. Dit maakt het gemakkelijk om berichten weer te geven terwijl de gebruiker het formulier invult op een toegankelijke manier. Het voordeel van de afrekenpagina die geen grote delen JavaScript bevat en ook geen framework bevat, maakt het ook gemakkelijk om betalings- of verzendopties toe te voegen die werken met iFrames of gebaseerd zijn op standaard JS, zoals Paazl. Normaal gesproken zou je deze in RequireJS moeten "haken" of in een framework zoals React moeten integreren. In de Hyvä Checkout kun je gewoon de standaardscripts gebruiken en misschien wat gebeurtenisluisteraars toevoegen om feedback naar de backend te sturen. Op deze manier kunnen we grote delen van de oorspronkelijke extensie hergebruiken. Deze eenvoudige methoden die zijn ingebouwd in Magewire maken het echt gemakkelijk om de afrekenpagina uit te breiden en volledig aan te passen in veel minder tijd dan voorheen, zonder concessies te doen aan de vereiste betrouwbaarheid van een afrekenpagina. ### [Our development process uncovered](https://elgentos.nl/blog/our-development-process-uncovered) 13 min read When we started with elgentos back in 2011, a large part of our development and deployment process was manual. At that time, most of the tools we use today were not available. Over the years, we realized that processes take a rather large amount of our time, while we’re in the business of automating things! Gradually, we started implementing industry standards aside from adopting cutting-edge technology and, well, cutting ourselves. This is an overview of our journey from back in 2011 to where we are today, which technology stack we’re using to automate our internal processes and where we want go from here. Development process Our development process changed a lot over the years, growing with our company as it increased in team members. At the start, we were with 2 developers and pretty much the only tool we used was Git. We used some servers we had laying around as our development servers and synced the codebase on our local machine to the development servers, which we accessed over the Internet. The main advantage of this was that our clients could look in on our development process. The main disadvantage of this was that the shops usually were in a state of disrepair since we were actively developing on them, causing panicked clients to call all day long. We later realized this did not scale. We decided to move from developing on a development server to developing locally and only pushing the develop branch to the development server. Since most of us ran OS X, but a few (sometimes) ran Linux (in its ever-changing varieties), we couldn’t standardize on a development environment. Pretty much every dev was on its own when it came to installing and maintaining the LAMP/MAMP stack. Needless to say, version numbers were all over the place and only by sheer coincidence matched the production versions. We’ve always outsourced our hosting since the beginning (we’ve fully switched to Byte’s Hypernode offering by now) so we didn’t have full control over what ran there. Along come Vagrant and it was all the rage. Unfortunately, Vagrant is slow and bulky. So it didn’t run well on our i5 128GB SSD Mac’s. We decided to ignore Vagrant; although we sometimes had issues with differing versions, it wasn’t that big of a problem to make us want to work with Vagrant. Fast-forward a few years and suddenly Docker appeared! Lightweight, containerized and native to Linux, but uh-oh, not to Mac. We dabbled with it for a while but it was too cumbersome (especially with the MySQL volumes at first and later also with syncing files from guest to host) and abandoned it. Thankfully by this time Homebrew had come onto the scene and made our life working with Mac’s a lot easier. We could kinda keep our differing versions in check and generally, we were pleased. Composer & Packagist Installing extensions in Magento has always been a bit weird. There are a lot of edge cases you need to keep in mind while installing and especially when removing an extension. Composer was the new hot thing in PHP-land and Magento 1 developers started adopting it. This helped us keep extension versions and constraints in control and facilitated adding and removing extensions to and from Magento. Right now, we run a private Packagist repository on Packagist.com with our extensions, which are hosted in our Gitlab installation. Codebase as our project management system Since our start, we worked with Codebase for our project and Git repository management. What we liked about Codebase was the combination of Git repository and ticketing in one system, a feature pretty standard nowadays but pretty unique at that time (a lot of companies were using Beanstalk for Git and Zendesk for ticketing at the time, for example). Codebase gradually developed new features over the years but our preferences and tastes concerning development also changed. We felt Codebase didn’t keep up with our methodologies, which become more and more agile (scrum) based as time went on. About two years ago we decided to introduce code reviewing. At first, it was asking a colleague over to your desk to look at pieces of code you just wrote. Gradually, we started implementing code reviews for all our code using Merge Requests (exactly the same as Github’s Pull Requests but with a better descriptive name). We told the developers to create a merge request in Codebase and assign it to a colleague. The workflow was like this; Merchant creates ticket with a feature request or bug Developer goes to his terminal, checks out the project and creates a new branch Developer does the work Developer pushes the branch upstream Developer creates a merge request, assigns it to a colleague Developer assigns ticket to colleague, gives status ‘Needs Merge’ Colleague does code review, maybe assigning and reassigning ticket to original developer Colleague merges branch Colleague closes ticket Colleague removes branch Colleague tells developer it’s merged Developer deploys functionality There were a number of manual actions that were open to human error, sometimes resulting in an accidentally abandoned ticket or branch. We needed to, and could, do better. Deployment process Initially, everything concerning deployment was manual. Log in to SSH server, git pull origin master, run database updates, clear caches, reindex indexers, etc. Because all of those steps were manual and sometimes optional (purging Varnish, purging CDN cache, deploying to multiple web servers, etc) these were open to human error and unavoidably resulted in unforeseen (and always ill-timed) downtime. We decided to implement an automated deployment process that begin with simple shell scripts but we quickly switched to Capistrano. This is a deployment system written in Ruby. It suited us well but since we are PHP developers, writing deployments in Ruby didn’t go as fast or easy as we wished. We then ran into Deployer. Deployer is basically a Capistrano clone in PHP. It uses the same structure for deployments as we were used to (with releases, shared and current folders and symlinks) so swapping Capistrano with Deployer was pretty easily done. By now, we have pretty much all of our clients in a Deployer setup, eliminating human error in our deployment process. Deployer also fires our functional testing suite powered by Ghostinspector. GrumPHP In an effort to raise code quality on a purely syntactically basis, we implemented GrumPHP. This is a tool written by our Belgian neighbours at PHPro to run automated checks on a per-commit basis. We have it configured to run the following tests; PHP Code Sniffer with Magento’s EQP standards (based on PSR-2); PHP7 Compatibility Checker to ensure we don’t use deprecated functions; SecurityChecker to check for vulnerabilities in our composer modules; Git Blacklist to prevent committing blacklisted words or functions such as var_dump, exit or die; Composer validate to make sure our composer files are valid; XMLLint to check our XML files are syntactically valid; JSONLint to check our JSON files are syntactically valid. Docker development environment When Jeroen joined our company, he made it very clear to us he is a big Docker fan. He also convinced us that by then, Docker was a feasible environment for our development needs, although Mac support still is a bit slow and/or sketchy. The majority of developers by now had moved to Linux though. We now make extensive use of Jeroen’s Docker development environment. This allows our developers to use exactly the same environment. We can instantly and effortlessly switch between PHP5.6, PHP7.0 and PHP7.1 just by changing the hostname. We can also set the hostname to include .magento. or .magento2. to have it set the correct environment variables. The environment also includes Redis, Varnish, Mailhog, Percona, Xdebug and Blackfire, all ready to go. Gitlab Now that we had a formalized deployment process up and running, we wanted to go a bit further and dive into this whole Continuous Integration / Continuous Delivery concept. We tried Jenkins and Travis a few times but it didn’t really stick for various reasons. Then we found Gitlab-CI, the Continuous Integration toolset built into Gitlab. The more we looked into Gitlab, the more excited we got. Gitlab solved a lot of issues we ran into with Codebase and was a more robust and feature-rich project and Git management system than Codebase was (and was likely to become in the short term). Extra bonus; Gitlab is originally a Dutch company! We spent a few months writing a Codebase to Gitlab migration tool which migrated over all our projects, tickets, attachments, users, Git repositories (client projects, internal projects and extensions) and all the other little details. Now we could unleash the power of Gitlab to streamline our processes. Merge Request flow in Gitlab Gitlab considerably improved our merge request flow by automating several steps. The biggest change is the ability to create a new branch from Gitlab, straight from the issue page. When viewing an issue, we now click the ‘Create new branch’ button to immediately created a branch with the issue’s name. After pushing code to this branch, a developer can create a merge request by clicking the URL Gitlab gives us right in the terminal. Thirdly, after a colleague approves the merge request, the branch is automatically deleted. These may seem incremental changes and they are, but it really adds up when you do 30 merge requests a week, per developer. We also use a Chrome plugin called TamperMonkey to inject a custom created ‘Track Time’ button on the issue page. When clicked, a pop-up opens that allows us to start a timer in Harvest, our time tracking and invoicing tool. The project is automatically selected and the issue name is inserted as the time entry’s description. Protected branches Gitlab offers a feature called protected branches. We use the default Gitlab approach; the master branch is protected, which means no-one (not even Masters, the highest role in Gitlab) can push to the master branch. Only Masters can merge a merge request into master. Our project leads are the Masters for every project. This way, the project lead ensures quality by checking all code that comes into the master branch through merge requests. Usually, developers create a merge request for their feature branch into the current release branch. At the end of a sprint, the project lead will merge the release branch into master. This allowed us to have a better control of the flow of code through releases and minimize code breakages or bugs. Gitlab CI & Pipelines Then we set up Gitlab CI to automatically deploy code that is merged into master to the production environment. We booted up a few Digital Ocean droplets with the one-click Docker install and registered them as a ‘runner’ in Gitlab. A runner is a server that can execute any code you tell it to through your CI configuration. In Gitlab, CI configuration is done by adding a .gitlab-ci.yaml file to the root of the project. When the pipeline is run, the Git repository is automatically checked out and your commands are run on the runner. We use the pipeline for Magento 1 to run code checks such as linting, PHP Code Sniffer (with Magento’s Extension Quality Program (EQP) standards), composer Security Checker and more (we also use GrumPHP to run these on a per-commit basis locally). Back to Docker! Gitlab has a Container Registry built into every project; we can build Docker images locally and push them to the Container Registry for them to be used by our runners. These Docker containers are the basis for our pipelines; they contain all prerequisites for building, testing & deploying a Magento 1 or Magento 2 installation. After the testing stage has finished, Deployer will be invoked on the runner just as we did on our local machine to deploy to production. When the pipeline is finished, the new release will be live. Most of our clients are in a separate channel in our Slack, through which way they are notified of a new deployment (with the latest commit messages) so they know exactly what is deployed and when. For Magento 2, we also do SASS generation on the runner, as well as static content deployment and DI compilation. We then upload the generated files to the production server. The test stage is where we run Magento 2’s unit tests as well. For our extensions, we have a separate pipeline that runs PHP CodeSniffer on our code to make sure it complies to Magento’s EQP standards. Dynamic Environments All the things we talked about in this blog were done to finally culminate in our grand vision; dynamic environments. This is a term Gitlab uses and we were very happy to find out Gitlab actually has built in support for this. Dynamic environments are the basis for what Gitlab calls ‘Review Apps’. In short, it’s an automatic deployment on branch level, which feeds the URL of the temporary environment for a specific branch back into the Merge Request. This allows a developer to create a merge request, and another developer that will review it to click a link and immediately see the work the developer has done in a fully fledged copy of the shop with this specific branch checked out. These environments run in a Docker container on a Digital Ocean droplet which we automatically spin up. This also allows us to have our QA team test our merge requests much, much faster. Since it automatically deploys the branch, it doesn’t discriminate in what it deploys; small textual changes or big refactors; everything gets its own test environment. When the reviewing developer approves the merge request, the code is merged into the release branch and the dynamic environment is automatically deleted, along with the DNS record that pointed to it. We will be rolling out Dynamic Environments to all our projects in the upcoming weeks. Future We continue on our mission to create a better development and deployment process for both our developers and our customers. We are planning to integrate Docker more and more in our daily life since it allows us to easily and quickly replicate dependable environments. We also would like to expand on using GrumPHP and writing custom tasks for it to ward off common mistakes that are not caught by the default tasks. Magento 2 is taking a more and more prominent role in our company; right now we’re at about 50/50 Magento 1 and Magento 2 and aim to be at 25/75 by the end of the year. This also makes writing and running unit, functional and integration tests a lot easier so we are taking a more BDD/DDD approach to writing our software. On to better software! ### [Extensie: Cypress voor Magento 2](https://elgentos.nl/blog/extensie-cypress-magento-2) Cypress.io tests voor Magento 2 publiek beschikbaar!!! 🥳 Het testen van Magento (vooral na upgrades) is veel werk. Het is tijdrovend en er zijn veel bewegende delen om bij te houden. Na het testen van honderden Magento installaties na hun upgrades, hebben we besloten dat we beter konden doen. Sneller. Goedkoper. Cypress.io gaf ons de tools die we nodig hadden om een geautomatiseerde functionele test suite te creëren om automatisch, repetitief en betrouwbaar Magento 2 winkels te testen. Het beschikt over Hyvä en Luma tests voor zowel desktop & mobiel 🔥 We hebben 78 veel voorkomende scenario's geïdentificeerd om te testen en hebben op dit moment 72% van deze gedekt. En na bijna 400 uur werk verspreid over maanden, zijn we erg blij om de publieke beschikbaarheid van onze open source Cypress test suite voor Magento 2 aan te kondigen! Klik hier om de code te zien op Github; elgentos/magento2-cypress-testing-suite ### [Onze GA4 & GTM config - de weg naar 100% kloppende data](https://elgentos.nl/blog/google-analytics-4-met-serverside-purchase-events) Met de invoering van GA4 is er een hoop veranderd op het gebied van website analytics. Het grootste verschil is natuurlijk dat GA4 event driven is en niet session driven maar event driven. De belangrijkste reden voor deze verandering is dat het voor Google steeds moeilijker wordt om een compleet data beeld te krijgen van de gebruiker. Bijvoorbeeld dat iOS 3rd party tracking blokkeert, maakt het lastiger om de juiste data naar je analytics platform te sturen. Maak ook gebruik van adblockers stijgt bijvoorbeeld nog steeds. De praktijk In dit artikel wil ik dieper ingaan op onze standaard GA4 en GTM configuratie. We gebruiken hier de volgende extensies voor: - Yireo GoogleTagManager - https://github.com/yireo/Yireo_GoogleTagManager2 - Elgentos Server side analytics - https://github.com/elgentos/magento2-serversideanalytics Uiteraard zijn beide extensies gratis te downloaden van github. Daarnaast is het belangrijk om een server side container van GTM geïnstalleerd te hebben. Ik zal daar in dit artikel niet verder op ingaan, dit ligt normaal gesproken ook buiten onze scope, maar hier kunnen we wel bij helpen. Een server side container is belangrijk omdat je er voor kan zorgen dat gtm.js van je eigen domein gedownload wordt. De "initiator" van het sturen van data valt dan binnen het eigen domein. Ook de data kan dan naar een eigen domein gestuurd worden. Hiervoor maak je bijvoorbeeld de CNAME marketing.JEDOMEINNAAM.com aan. Alle data is nu 1st party geworden en heb je dus ook voor iOS tracking gefixed. Meer informatie kan je daarover hier vinden: https://developers.google.com/tag-platform/tag-manager/server-side De Yireo GTM extensie creëert events in de datalayer. Deze kan je afvuren in je GTM configuratie. Standaard gaat het om deze events: view_item view_item_list select_item add_to_cart remove_from_cart view_cart begin_checkout add_payment_info add_shipping_info purchase Deze events moeten allemaal in GTM worden aangemaakt en doorgestuurd naar GA4 en/of andere endpoints. Vaak hebben onze klanten maatwerk hierop nodig. Bijvoorbeeld als we een reorder flow willen bijhouden vanaf de homepage of de account pagina. Onze ambitie is dat minimaal de purchase data 100% klopt in Google Analytics. Voor GA1 & UA hadden we al een serverside extensie gemaakt die het purchase event serverside naar GA stuurt wanneer de order betaald was. Voor GA4 was dit natuurlijk ook weer de bedoeling. In deze versie hebben we ook rekening gehouden met headless projecten. Het belangrijkste is om zo snel mogelijk een GA userID en een GA sessionId op te slaan. We hebben de volgende flow gehanteerd: - User bezoekt de site en voegt een item toe aan de cart - Op dit moment kijkt de extensie of een user_id en/of session_id aanwezig is - Deze worden in een aparte tabel opgeslagen met een quote_id referentie - Als de order geplaatst is wordt de tabel geupdate met het order_id - Als de order betaald is wordt deze naar GA4 gestuurd met het measurement protocol We hebben een feature gebouwd die er voor zorgt dat als er geen session_id aanwezig is, door bijvoorbeeld gebruik van een adblocker dan wordt dit gevuld met een fallback session_id. Dit kan een range zijn of een default id. Toekomst Op dit moment ondersteuren we in server side analytics alleen het purchase event. Ik zou me goed kunnen voorstellen dat we dit gaan uitbreiden als de usecase zich voordoet. ### [Magento Monolith's Strongest Weakness](https://elgentos.nl/blog/magento-monoliths-strongest-weakness) 13 min read A personal message from Jeroen Boersma and why my name is on the Open Letter. TLDR Why a fork could be the future. It would awesome if it could go hand-in-hand with Magento. Some insights into my years working with the system. Introduction After years of working with Magento, a part of the community finally voiced a clear signal. Things need to change and people and companies need to wake-up! We all have great ideas, but it feels like we are swimming upstream. Currently there is a pile of work, in the form of Open Issues (I don’t even know where to start), unmerged Merge Requests (some that I created myself) and stale branches. There is no clear perspective on what the future will bring (also known as a roadmap) or what to expect as a agency to do some proper planning. A lot already has been said. I know for sure that Adobe is awake and paying attention. For the first time I have the feeling that I need to put some words down. It’ll be a long read. I think it is that important! A trigger for me was the latest panel discussion. Panel discussion Last Monday (September 20th, 2021) there was a panel discussion at Meet Magento Poland (great to see they made room for the voice of the community) which I think made clear what the open letter is about! Community members from all over the world booked tickets to be there in person and to support that statement. I think it was a pity to see only two members from the Magento Association there in person. However, they came empty-handed. What I hoped for was that they reached out and said, “Hear, hear our beloved community, we heard you, we spoke to our stakeholders, we have done our stinking best and have set up the following schedule to get everything on track”. Someone stated that Adobe couldn’t be there because of COVID restrictions. Although I understand that, I’m flabbergasted that while in 2021, with people working from home, which are able to have online video calls and chats, Adobe has issues with doing a simple video call. I think this was a missed opportunity from Adobe to get in touch with their community. (update: it was by choice of the organisation to not do a mixed panel) It was great to see someone from an existing community (Typo3 <3) drop in to share their thoughts and give real and valuable input. This is also something that we shared already with the Magento Association. About me For years I’ve been working in the Magento ecosystem, the wonderful community, where I feel at home. I’m so happy about all those people I met over years and more in the years to come. I started off as early as Magento 1.3 (played around with 1.0, killed some servers doing so). Started giving back and contributing through visiting Hackathons, meetups, Meet Magento events, sleepovers, (un-)conferences and starting fresh chats with those lovely people around me. When Magento 2.0 was released it started a whole new era (of problems) with better technology and a better stack (or so they said). As a company, we already had some existing experience with the IT industry and made a wise decision to not jump the Magento 2.0 train yet for commercial implementations. I still know a Hackathon in Groningen (It’ll be fun they said) and I was able to see in real life the whole bunch of experienced Magento developers needing a whole day to just install a fresh Magento 2 development version. After that first hands-on experience we upgraded all our hardware for all developers to make working with Magento 2 feasible. We started creating our first MR’s, creating issues and having fun! As much as I loved hackathons, I always felt a little uncomfortable attending Magento Contribution days, it felt like just doing normal work, processing issues, but in our spare time. For me, hackathons were kickstarters for great new ideas and added value to the existing product. Contribution Days weren’t focused on that. Current state from a technical point of view I want to sum up a few things which have been bothering me for years, for most of us things we have accepted, but are not actually normal. As everything needs to be on the table, this also needs to be addressed. Slow release cycle Magento 2 chose to maintain one Git repository to rule them all, so all (important) stuff is in there. I guess this is the reason that my name is on the letter. It is also something I already addressed several times in in-person meetings but so far, no clear answer was given as to why. It is the cause why we have planned (big bang) releases, use patches (why??), have bundled unused crapware and errors which means we have big replaces sections in our composer.json files. All in all, this has brought a whole new level of security risks because of merchants choosing not to upgrade even if this means that they run vulnerable software. Patches Magento 2 uses package managers for distributing code. The Composer implementation for Magento via their repo.magento.com built into shippable packages from the Monolith is just weird to me. The whole idea behind Composer is that you can quickly apply semeantic versioning and release patches and/or minor/major releases to your project without you thinking about it. However, Magento chose their own approach. Everything needs to be released and signed off and scripts need to run to update the private repository. A two-line bug fix needs to go through the whole release pipeline where everything is tagged and released at once and this can quickly take up to three months before being available upstream. People got fed up with this and composer-patches specifically tailored for Magento were born in return. Magento released “quality patches” to apply to your project before the next big bang release. Currently we also have half of the packages served via packagist.org and also available in repo.magento.com, which can and may differ or be outdated, causing conflicts to occur. The good thing about the curated repository is that they can run a marketplace, where you can buy/sell stuff quickly to merchants via a token based authentication. IMHO everything else could just be served via existing channels if you ask me. Version numbers So you tell me you’re running Magento 2.4.1-p1. Yes, that is the commercial version convention. Internally it starts at 100 + the minor of the commercial release number. AFAIC it makes sense knowing that if applying semver, 2.3 to 2.4 is a major version bump is, so technically, 103.* to 104.*. So a package running version 102.0.1-p1 should line up with 2.2.0-p1. I found examples where this didn’t match, so it’s technical debt. Replaces Magento ships a whole lot of awesomeness by default, however there are also paying vendors (which could be fine) we don’t need in our installations. There is no other solution than adding all these packages to the replaces section in composer.json. You tell composer, “I handle this myself”. In this case it creates a black hole. So in the next release it becomes problematic if new code is released and depends on this black-holed code, the build process breaks. Another reason to put packages in the replace section is because not all packages need to go to production. Fixing the release cycle When Magento at first announced the “headless” future for Magento 2 I was very happy - this would be an opportunity to break the current Git repository into smaller packages, deprecate and decouple a lot, which then could be moved and maintained by the community. We were talking about this three years ago and currently this idea is on hold. We need to break the big Git repository down into smaller packages, making the release cycle a lot smoother because we can just apply regular semver. No more scripting involved, no more patching. Let people run RenovateBot or dependabot and update that one package as soon as it is available, like most community packages. The Magento Multi Source Inventory modules are an example of this effort. These fixes should also be done if a fork would happen to remove a lot of technical debt. We can run a build script to fill the private repository, why not create or update all individual packages once in new Git repositories, create a reference from the root projects composer.json and everything will keep working as expected. We gain from this that we still can have commercial releases on 2.4.4(-p1) on the metapackage but also can update a patch for a package invoking composer update {PACKAGE} because packages are tagged individually. No more patching required! Root package would still be able to run all tests like before. Fixing the replaces section If the repository is fixed, new meta packages can be created, where we finally can have a Magento bare|minimal|default, without packages like the rest API, or GraphQL, or a backend. or a CMS. Upgrades would work because all classes can be found and dependencies are correct, also patches could always be applied, because there aren’t any left. The Community In the last couple of years I have seen people whom I consider friends leaving the Magento community in favor of other platforms or other work. Some even went through time of uncertainty in terms of work and money. Some even needed to find a whole new way of making a living. I think that people leaving for something else is more scary than people standing up writing an open letter because the latter still care before walking away! We are not only talking about individuals. If your company makes a decision to move elsewhere and your services and knowledge is no longer needed, you can feel left alone or lost. These voices are being heard and ignored for a long time. This has nothing to do with a fork. If a fork would make people feel more involved again, that would directly feed into the success of the community, not for Magento, an Adobe product. This is why we reach out to you, Adobe, I think we got your attention, now it’s time to act. It worries me hearing voices in favor of leaving (again; reasons stated over and over); “not feeling heard”, “development pace is slow”, “I’m fed up waiting for my MR to be merged”, “today I’ll be adding my 23rd patch”. People I trust working with Magento for years leave Adobe and all I read is a brief Twitter message or LinkedIn update. It breaks my trust in the product and it raises questions about the future. These people made me feel included, where I could reach out too if I had a question. One tip I would make to Adobe to make sure that your community is well-informed. The Open Letter So why did I sign the open letter to the Community? I just knew it was the right and only thing to do. On behalf of the whole community, it’s when you want to act now. The way it is evolving, having it set up correctly and doing this the right way! Seeing people care about this too, as of moment of writing, more than 1400 additional people signed the letter. It confirms my first thought signing the letter. Upstream compatible We want to create an upstream compatible fork. Here’s a quote from the letter: The fork will be upstream-compatible with Magento Open Source as long as it is supported by Adobe. That means, when the monolith is ultimately deprecated, all companies who want to remain on the monolith platform will be able to do so. New features in a fork can also be fed back into the main repo, just delivered faster. This could mean that the fork will evolve more quickly as the main repository, a change I am waiting for for years but where everyone profits. Our company We do Magento development and we will do so in years to come. I wrote this with my personal view on things, also how I see that we as a company will benefit from this. We cannot run this alone, we need to do this together, that’s why we as a company signed, and also want to invest in this community, with organising events, hackathons, meetups or even making a fork. Wrap up I hope that writing this gives more insight into why I think that there needs to be a change.It’s up to you to form your own opinions. If you are with me and haven’t signed yet, please do so. Thanks for bearing with me to the end, Jeroen What others say Finally I want to share all good reads from last couple of weeks. I think all people are awesome and I sorted the list alphabetically. A constructive response to Igor about Magento 2 OSCA - Damian Retzinger Accelerating Innovation through a Simplified Release Strategy - Magento Re: A constructive response to Igor about Magento 2 OSCA - Igor Miniailo Adobe’s response on public forum Die Zukunft von Magento Open Source zwischen Adobe - Matthias Zeis Here and back again - Jisse Reitsma Imagine - Karen Baker Jisse Reitsma | Mage Open Source Community Alliance - Brent Peterson Magento Open Source Future - Thoughts - Jakub Winkler Magento 2 OpenSource/CE Inches Towards a Fork - Alan Storm Open Letter to the Magento Community Open Source, Leadership and Direction - Kristoff Ringleff Re: Open letter to the Magento Community - Guido Jansen Upcoming releases - Magento The Future of Magento Open Source - Hyva The Future of Magento: An Update for the Magento Community - Wagento The Magento Community Alliance (and more!) - Brent Peterson There isn’t much to add - Thomas Goletz Why and why not - Marius Social interactions: Reddit: Reactions Twitter: It’s not gonna work - Guido Jansen Twitter: LOL - Max Twitter: Magento PHP Monolith - Aaron Sheehan Twitter: No Microservices and deprecation - Muhammed Vatansever Twitter: Uprising Community - Kalen Jordan Twitter: Thread on builds - Anton Krill Twitter: No deprecation of services - Matthew Zimmerman Youtube: MM21PL: Building Magento Open Source Future Updates Adobe couldn’t be there because of travel restrictions, MMPL decided to not do a mixed panel, updated section. ### [Hulp bij Magento performance problemen](https://elgentos.nl/blog/hulp-bij-magento-performance-problemen) De sleutel tot een snellere Magento shop In de wereld van e-commerce is snelheid uiteraard erg belangrijk. Een trage webshop kan klanten wegjagen en de omzet schaden. Bij elgentos begrijpen we dit als geen ander en zijn we gespecialiseerd in het oplossen van performanceproblemen van Magento webshops. Onze expertise is gebaseerd op jarenlange ervaring met betrekking tot de meest voorkomende oorzaken van trage Magento webshops. Veelvoorkomende oorzaken en onze aanpak In onze praktijk komen we regelmatig dezelfde issues tegen. Dit stelt ons in staat om snel en efficiënt te handelen. Een paar voorbeelden: Externe koppelingen: Vaak zijn het de externe koppelingen die voor vertraging zorgen. Wij analyseren en optimaliseren deze connecties voor betere prestaties. Slechte FPC configuratie: Full Page Caching (FPC) is cruciaal voor snelle laadtijden. Onjuiste configuraties van Fastly of Varnish kunnen echter averechts werken. Wij zorgen voor een optimale instelling. Wij hebben onze kennis van Varnish ook ingezet om de standaard implementatie van Varnish in Magento te verbeteren, in samenwerking met experts van Adobe en Varnish zelf. Onnodig cache clearen: Overmatig cachegeheugen legen kan de laadsnelheid beïnvloeden. We implementeren strategieën om dit te minimaliseren. Slechte extensies: Niet alle Magento-extensies zijn even goed. Wij identificeren en vervangen, of verbeteren ondermaats presterende extensies. Dikwijls gaat het hierbij om extensies van de grote bekende Magento extensie partijen. WIj prefereren kleine (zelfgeschreven) extensies die precies doen wat ze moeten doen boven one-size-fits-all extensies met tientallen opties die je niet gebruikt. Geavanceerde tools voor diepgaande analyse Bij elgentos zetten we state-of-the-art tools in om performanceproblemen te identificeren en op te lossen. Enkele van de tools die we gebruiken zijn: Blackfire: voor diepgaande performance-analyse en het opsporen van bottlenecks. New Relic: voor real-time monitoring en het analyseren van gebruikerservaringen. Xdebug: voor het debuggen en profilen van code om inefficiënties te vinden. Sentry: voor het monitoren van Magento exceptions en foutmeldingen en het aggrereren van metadata om de probleemstelling helderder te krijgen. Deze tools stellen ons in staat om snel de oorzaak van het probleem te vinden en de bijbehorende oplossingen te implementeren. De voordelen van performance optimalisatie Het oplossen van performanceproblemen levert aanzienlijke voordelen op. Een snellere shop betekent niet alleen een betere gebruikerservaring en meer conversie, maar kan ook leiden tot lagere hostingkosten. Door efficiënter gebruik te maken van de resources van de server kunnen kosten worden bespaard. Zo hebben wij bij een klant de hostingkosten teruggebracht van 6.000 euro per maand naar 1.000 euro per maand. Elgentos staat voorop als het gaat om het oplossen van Magento performanceproblemen. Onze expertise, gecombineerd met geavanceerde tools, stelt ons in staat om de unieke uitdagingen van elke Magento webshop aan te pakken. Door ons te richten op de veelvoorkomende oorzaken en deze efficiënt aan te pakken, zorgen we voor snellere, soepelere en kostenefficiënte e-commerce oplossingen. ### [Onze klant Dutch Label Shop wint de MM23NYC Tapestry Award!](https://elgentos.nl/blog/dutchlabelshop-wint-mm23nyc-tapestry-award) Tijdens Meet Magento New York 2023 is onze klant Dutch Label Shop onderscheiden met de prestigieuze Tapestry Award. Deze prestatie is een bewijs van hun uitzonderlijke expertise en innovatie in de e-commerce industrie. Innovatieve productoplossingen Dutch Label Shop onderscheidt zich in haar niche door het aanbieden van kledinglabels op maat in buitengewoon lage aantallen - vanaf slechts 30 stuks per bestelling! Dit is een opmerkelijke prestatie als je bedenkt dat de norm in de industrie duizenden stuks is. Hun toewijding aan kwaliteit, in combinatie met concurrerende prijzen, onderscheidt hen in een markt die gedomineerd wordt door concurrenten met grote volumes. 🛍️ Een naadloze en aangepaste winkelervaring Dankzij een langdurige samenwerking met onze Magento expertise, biedt Dutch Label Shop een gebruiksvriendelijke online winkel geïntegreerd met op maat gemaakte productontwerpers. Met deze op React gebaseerde ontwerpers kunnen klanten gepersonaliseerde labels maken met unieke lettertypen, symbolen en kleuren, of hun eigen logo's uploaden voor directe offertes. 🚀 Bestelbeheersysteem op maat Het OMS is veel meer dan de naam doet vermoeden. Het is ontwikkeld na een uitgebreid bezoek aan de productiefaciliteiten van Dutch Label Shop en regelt de productie, logistiek, kwaliteitsborging en klantenservice. Het is het operationele hart van Dutch Label Shop en weerspiegelt ons diepgaande begrip van hun interne processen. 💡Content revolutie met Prismic De implementatie van het headless CMS Prismic was een game-changer. Het stelde de contentmakers van Dutch Label Shop in staat om snel landingspagina's, blogs en informatieve artikelen te produceren met behoud van merkconsistentie. 🤝 Een partnerschap gedefinieerd door groei Onze 8-jarige reis met Dutch Label Shop is ongelooflijk lonend geweest. Vanaf hun eerste Magento 1 build tot de overgang naar Magento 2, hebben we het voorrecht gehad om hun evolutie naar een miljoenenbedrijf te ondersteunen. Deze reis omvatte de integratie van partners zoals Adyen, Avalara, Hyvä , Klaviyo, Prismic en Yotpo, die cruciaal waren voor het uitbreiden van hun bereik naar nichemarkten en platforms zoals Etsy. Neem zelf een kijkje op www.dutchlabelshop.com ! ### [Het proces vanuit de project manager](https://elgentos.nl/blog/proces-vanuit-de-project-manager) Faciliteren van een gestroomlijnd proces dat resulteert in succesvol en tijdig releasen van hoogwaardige producten.Als projectmanager zijn we niet alleen de bewaker van de planning en de voortgang, maar ook de motivator die teams aanzet tot topprestaties. We creëren een omgeving waarin creativiteit, samenwerking en efficiëntie gedijen.Door het stellen van haalbare doelen, het faciliteren van effectieve communicatie en het wegnemen van obstakels, zorgen we ervoor dat het development team ongehinderd kan werken. We zijn als het ware de motor die het Scrum-framework draaiende houden, met als resultaat een gestructureerde aanpak en een geoptimaliseerde doorlooptijd.Het ultieme doel is voor ons duidelijk: maximale releases van hoogwaardige producten. Onze rol als projectmanager is niet alleen gericht op het behalen van mijlpalen, maar ook op het waarborgen van de kwaliteit van elke release. Door het team te inspireren om te streven naar voortdurende verbetering, streven we naar een iteratieve ontwikkelingscyclus waarin elke release beter is dan de vorige! ### [Anonymizing databases - introducing Masquerade](https://elgentos.nl/blog/anonymizing-databases-introducing-masquerade) 6 min read Retrospective A bit less than a year ago, we wrote about our deployment pipeline with Kubernetes. That blogpost details how we leverage Gitlab CI with Docker & Kubernetes to create disposable Magento testing environments. I ended that blog with a few bullet points for future implementation, of which one was: Anonymize database so we have near-production data available We now have tackled this issue and in this blogpost I’ll explain the why and the how. Why anonymize the database ? When we set up a review environment for our clients, we download the database from our backup location on Amazon S3. We store three versions of the database there; the full backup including all customer and order data, a stripped version without any customer or order data and recently, also an anonymized version where all personally identifiable information has been anonymized, that is; replaced with fake data. When working with customer data, we feel it is our duty to handle these as carefully as possible to avoid data leakage (not to mention GDPR). The best way to avoid data leakage is to avoid using the data in the first place, which is why we decided to only ever use the production data when it is absolutely necessary. For development and testing purposes, we usually use the stripped database. Sometimes however, this empty database isn’t enough; we need some actual data to test certain features or bugfixes. This is where the anonymized version comes in. What were the options? We started by looking at the systems that were available to anonymize databases. We found two that looked interesting, we’ll discuss them here. integer-net/Anonymizer This Magento extension does pretty much what we want; it uses the popular fake data generation package fzaninotto/Faker to replace the actual values with fake data. However, this is a Magento 1 extension and we migrated (almost) all our clients to Magento 2. Porting it would’ve been an option but we felt like a Magento extension wasn’t the most flexible way to do this; we’d actually need a Magento installation up and running to anonymize the database and we didn’t want to do that. experius/Magento-2-Module-Experius-FakeMyData This is a Magento 2 module that basically does the same as the integer-net Magento 1 extension. Unfortunately, its still a Magento 2 extension and not a standalone tool. It also doesn’t offer any customization options. It does use names from personas from Game of Thrones, so that’s cool. DivanteLtd/anonymizer This project looked a lot more promising and indeed, it is a pretty impressive package. Even so impressive, that we felt the large plethora of options were a bit too much. We had a hard time getting it up and running, mainly because it’s written in Ruby, which most of the devs at our company aren’t too familiar with. We feel more at home with PHP-based packages. We worked with Ruby in the past when we used Capistrano and when we moved to its PHP-based clone Deployer, we were better off since everybody could work on the project instead of just the people with enough Ruby experience. We decided to write our own. We’re developers after all! Introducing Masquerade We had a few demands for our own anonymizer; It needed to be platform-agnostic; It needed to have Magento 2 configuration files out of the box; It needed to be configurable to a certain extent; It needed to be a standalone PHAR application (no extension or package for a certain framework). This is why we built Masquerade. Masquerade can anonymize a MySQL database for you following a set of rules configured in YAML files. Each YAML file refers to a group, which can contain multiple database tables, each with multiple columns. An example of a YAML file for Magento 2 is this (part of); // customer.yaml customer: customer_entity: columns: email: formatter: email unique: true nullColumnBeforeRun: true prefix: formatter: name: fixed value: firstname: formatter: name: firstName middlename: formatter: name: fixed value: lastname: formatter: lastName suffix: formatter: name: fixed value: It uses Faker formatters for most data that needs to be generated and you can add your own Provider with a Formatter (or several) to generate custom data. This is a pretty simple PHP class that you can place in ~/.masquerade or in the relative dir .masquerade from where you run Masquerade. The PHP class looks like this; RUN apt-get update # Install awscli RUN apt-get install -y libpython-dev python-dev libyaml-dev python-pip RUN pip install awscli --upgrade --user # Install mysql-client RUN apt-get install -y mysql-client # Install masquerade RUN curl -LO https://github.com/elgentos/masquerade/releases/download/0.1.9/masquerade.phar RUN chmod +x ./masquerade.phar && mv ./masquerade.phar /usr/bin/masquerade # Run original image's entrypoint manually CMD ["/sbin/entrypoint.sh"] Conclusion Masquerade allows us to anonymize databases quickly and easily and it does this for multiple frameworks. We also build Laravel applications to support our Magento webshops in various ways and also use Masquerade there to create anonymized databases. Allowing our clients to have a testing/review environment with anonymized data enabled them to quickly test new features without taking an unnecessary risk concerning data leakage. ### [The Future of Magento](https://elgentos.nl/blog/the-future-of-magento) 1 min read Magento has been a big part of our life over here at elgentos. We started with Magento almost 10 years ago and went through a lot of ups an downs with it, but we still love it! The Magento Community is a strong and vibrant one, and one that has given us lots of joy, knowledge and meaningful relationships over the years. However, since Adobe has acquired Magento, there are some concerns about the lifespan of what is generally called the Magento Monolith. We are kickstarting an intitiave to making sure the Magento Community has a bright future ahead. To safeguard this, we have pledged our support to the Future of Magento by signing an open letter to the Magento Community, written by what is for now called the Mage Open Source Community Alliance. This letter is signed by multiple prominent agencies and individuals working with Magento Community who want to make clear Magento is here to stay. You can read our open letter and join us here; The Future of Magento. ### [Beheer je Magento shop via de command line - n98-magerun](https://elgentos.nl/blog/magento-shop-via-de-command-line) 4 min read n98-wat? n98-magerun (voorts ‘magerun’) is een command line (SSH) tool ontwikkeld door o.a. Christian Münch van het Duitse netz98. Deze tool is gebouwd om het beheren van en ontwikkelen voor Magento shops prettiger te maken door vaak voorkomende taken via one-line SSH commands uit te voeren. Ook een groot aantal minder vaak voorkomende maar moeilijkere taken kunnen via magerun worden gestart. Er zijn meerdere command line tools voor Magento ontwikkeld, zoals bijvoorbeeld wiz of mijn eigen (ter grave gebrachte) mate. Magerun heeft echter door zijn vele functies, goede opbouw & code en doorlopende ontwikkeling een grote aanhang gekregen binnen de Magento community en kan ondertussen als de de facto Magento command line tool gezien worden. Een paar functionaliteiten voor webshop beheerders De hele functielijst van magerun is te vinden op o.a. hun Github pagina maar ik zal een aantal veelgebruikte toelichten. $ n98-magerun.phar cache:flush Met deze optie kan je snel de gehele cache flushen. De hele Magento XML configuratie wordt geflushed, niet alleen de bestanden in var/cache. $ n98-magerun.phar admin:user:create [username] [email] [password] [firstname] [lastname] [role] Hiermee maak je een admin user aan. Handig als je geautomatiseerd meerdere users toegang wilt geven. $ n98-magerun.phar sys:cron:list Deze optie geeft een lijst van alle cronjobs en wanneer deze worden gestart. Normaal zou je in de database de map cron_schedule moeten openen, maar dan nog zie je alleen de ingeplande teken en niet waneer ze eigenlijk gestart worden. Onmisbare feature om goed overzicht in je shop te houden. $ n98-magerun.phar sys:url:list --add-products 4 Deze optie geeft alle product URL’s in je webshop. Handig om bijvoorbeeld crawlers mee te cheken of om een bot aan te sturen voor (Varnish/Redis) cache warming. De sys:url:list optie geeft ook mogelijkheden om dit te doen voor categorieën en CMS pages. Een paar functionaliteiten voor ontwikkelaars $ n98-magerun.phar install Met deze functie kan je snel en simpel een Magento installatie neer zetten. Alle benodigde informatie zal aan je worden gevraagd tijdens dit proces. Draai eerst even n98-magerun.phar self-update om de laatste versie binnen te halen zodat de meest recente Magento versie beschikbaar is. $ n98-magerun.phar sys:setup:incremental Deze functie draait alle setup scripts één voor één. Dit geeft je meer transparantie in het update proces, vooral handig bij grootschalige updates (van bijv CE 1.6 naar CE 1.8). Als het update proces fout gaat, weet je precies wáár. $ n98-magerun.phar dev:template-hints [store_code] $ n98-magerun.phar dev:template-hints-blocks [store_code] Met deze functies kan je de template (block) hints in en uit schakelen voor verschillende stores. $ n98-magerun.phar dev:theme:duplicates theme [originalTheme] Hiermee kan je duplicate files vinden binnen je themes, om zo cascading templates op te sporen. $ n98-magerun.phar dev:module:rewrite:conflicts Met deze functie zoekt magerun naar conflicten binnen je Magento shop; extensies die dezelfde classes en/of blocks overriden worden zo makkelijk en snel inzichtelijk. Zo zijn er nog veel meer opties, zoals het maken van een database dump, het snel neerzetten van een extensie skelet, het listen en installeren van extensies, openen van een MySQL console, etc. Mocht je lokaal ontwikkelen en met de IDE phpStorm werken, dan kan je magerun vanuit je IDE gebruiken. Kijk op de magerun.net site voor meer informatie over hoe dit in te stellen. n98-magerun uitbreiden met eigen extensies Je kan magerun zelf makkelijk uitbreiden met eigen of third party extensies in de vorm van Symfony2 commands. Een mooi voorbeeld hiervan is de ‘Create dummy order’ extensie van Kalen Jordan waarmee je een test order kan inschieten vanaf de command line. Hoe je dit zelf kan doen valt hier te lezen. Ook heeft Magento goeroe Alan Storm hier een mooie blog over geschreven; Developing Commands for n98-magerun. In de develop branch in de Github repository zit ondertussen een versie van magerun (geschreven door Byte) waar bash completion in zit, zodat je met de tab toets command names kan aanvullen; een welkome aanvulling gezien de soms lange commands. Adoptie door Byte Byte heeft magerun standaard beschikbaar gemaakt op hun servers. Draait je shop niet op een Byte server, bekijk dan de Github pagina of de magerun.net pagina hoe magerun te installeren op jouw server (of verhuis je shop naar Byte ;-)). Deze blog is bedoeld om een korte introductie te geven tot magerun. Ben je geinteresseerd in hoe de specifieke commands werken, wat ze doen en wat je er allemaal mee kan, kijk dan eens naar Alan Storm’s n98-magerun blog series. ### [Magazijnbeheer stroomlijnen met de BarTrack Magento 2 extensie](https://elgentos.nl/blog/bartrack-magento-2-koppeling-magazijnbeheer) In de wereld van e-commerce en magazijnbeheer is efficiëntie erg belangrijk. Met deze gedachte in het achterhoofd hebben wij voor onze klant Delftechniek een koppeling in de vorm van een Magento 2 extensie ontwikkeld voor hun klanten die gebruik maken van BarTrack. Deze extensie maakt niet alleen het beheer van magazijninventaris makkelijker, maar verbetert ook de winkelervaring voor deze gebruikers. Wat is BarTrack? BarTrack is een systeem/app voor voorraadbeheer voor groothandels dat gebruik maakt van barcodes. Het stelt klanten in staat om snel en efficiënt producten te bestellen bij de groothandels waar ze inkopen. Dit gebeurt door het scannen van barcodes met een speciale app, beschikbaar voor zowel iOS als Android. Maar hoe integreert deze technologie met de e-commerce omgeving van Magento 2? Door middel van de door ons ontwikkelde Magento extensie! Gebruik van BarTrack door Delftechniek Delftechniek, een prominente speler in de industrie, bouw, scheepvaart, en installatietechniek sector, gebruikt BarTrack om hun klanten makkelijker te laten bestellen. Met de Magento 2 extensie wordt BarTrack naadloos geïntegreerd in hun online platform. Dit biedt klanten een unieke functionaliteit: de mogelijkheid om alle product barcodes uit hun magazijn te printen vanaf de productpagina in hun 'Mijn Account'-sectie om daarmee vervolgens snel te kunnen bestellen. Functionaliteit van de extensie Zodra een klant de BarTrack optie inschakelt, wordt er een 'Print Barcode' knop zichtbaar op de productpagina's. Met een simpele klik kunnen klanten dan de barcodes van producten in hun magazijn afdrukken. Deze barcodes kunnen vervolgens op de picklocaties in het magazijn worden geplakt. Magazijnmedewerkers kunnen de barcodes vervolgens scannen met de BarTrack app, waarna de producten automatisch aan de winkelwagen worden toegevoegd. Dit inkoopproces maakt het aanvullen van voorraden en het beheren van magazijninventaris eenvoudiger en nauwkeuriger dan ooit tevoren. Integratie van nieuwe producten Een mooie functie van deze extensie is de mogelijkheid om nieuwe producten automatisch toe te voegen aan Magento. Wanneer producten binnen BarTrack bestaan maar (nog) niet in Magento, zorgt de extensie ervoor dat deze producten automatisch worden toegevoegd vanuit het ERP van Delftechniek en in de winkelwagen worden geplaatst. Dit biedt een enorme tijdsbesparing voor Delftechniek, die deze productdata vervolgens kan verrijken en de producten ook voor niet-BarTrack gebruikers beschikbaar kan maken. De BarTrack Magento 2 extensie van Delftechniek markeert een mooie stap voorwaarts in de integratie van e-commerce en magazijnbeheer. Deze innovatie biedt een naadloze, efficiënte en gebruiksvriendelijke ervaring voor zowel de merchant als de eindgebruiker. Met deze technologie zet Delftechniek zichzelf op de kaart als een vooruitstrevend bedrijf dat de toekomst van online winkelen en magazijnbeheer vormgeeft. ### [Betere conversie met AI-gedreven productaanbevelingen](https://elgentos.nl/blog/betere-conversie-met-ai-gedreven-productaanbevelingen) Sta je op het punt om de winkelervaring in jullie online shop aanzienlijk te verbeteren, zonder dat jullie zelf diep in de productaanbevelingen hoeven te duiken? Wij hebben hiervoor een passende oplossing ontwikkeld: een geavanceerde Magento 2 extensie die gebruikmaakt van AI voor het genereren van productaanbevelingen. Deze extensie maakt het niet alleen gemakkelijker voor je om gerelateerde en up-sells producten aan te bevelen, maar het kan ook je verkopen aanzienlijk verhogen. De voordelen van AI-aanbevelingen Stel je voor dat je geen tijd meer hoeft te besteden aan het handmatig instellen van productaanbevelingen. De AI neemt dit volledig uit handen, wat betekent dat je meer tijd overhoudt voor andere belangrijke taken. Door gebruik te maken van jouw klantgegevens zoals bezochte pagina's, winkelwagentjes, historische orders en favorieten, biedt deze technologie uiterst relevante aanbevelingen. Dit leidt tot een gepersonaliseerde winkelervaring voor je klanten, wat de kans vergroot dat ze terugkeren. Wat biedt onze Magento extensie? Analyse van de winkelwagen: Aanbevelingen worden gedaan op basis van wat klanten van plan zijn te kopen. Klantgedrag in kaart: De AI analyseert het gedrag van klanten - van het browsen tot het toevoegen aan favorieten en de aankoopgeschiedenis - om beter te begrijpen wat zij zoeken. Kenmerken promoten: Producten met bepaalde kenmerken krijgen een boost in de aanbevelingen. Selectief filteren: Onwenselijke producten, zoals die met een lage marge, kunnen worden gefilterd uit de aanbevelingen. Praktische toepassingen Met onze extensie kun je onder meer: Een gepersonaliseerde homepage creëren: Maak elke bezoek aan de homepage uniek voor de gebruiker. Alternatieve producten voorstellen: Bied alternatieven of vervangingen voor uitlopende producten. Slim zoeken met filters: Laat klanten producten vinden op basis van specifieke zoekcriteria. Gepersonaliseerde e-mails versturen: Verbeter de shopervaring met op maat gemaakte productaanbevelingen in e-mails. Populaire en trending producten aanbevelen: Aanbevelingen zijn afgestemd op de individuele voorkeuren van de klant. Upselling en cross-selling: Moedig klanten aan om een duurdere versie van een product te kopen of aanvullende producten te overwegen. Favoriete merken tonen: Presenteer merken die aansluiten bij de voorkeurshistorie van de klant. Klantcase: Carnavalskleding Een uitstekend voorbeeld van de effectiviteit van onze AI-aanbevelingen is te zien bij Carnavalskleding. Met onze extensie bieden ze in de winkelwagen slimme, aan de klant aangepaste productaanbevelingen. Dit heeft geleid tot een hogere klanttevredenheid en een toename in de gemiddelde orderwaarde. Lees meer over deze case; Case Carnavalskleding.nl Klaar voor de volgende stap? Ben je klaar om je Magento shop te transformeren met AI-gedreven productaanbevelingen? Onze extensie maakt het eenvoudiger dan ooit om de verkopen te verhogen, tijd te besparen en een onvergetelijke winkelervaring te bieden die klanten doet terugkomen. Laten we samenwerken en je shop naar een hoger niveau tillen! ### [Partner highlight: Sansec](https://elgentos.nl/blog/partner-highlight-sansec) Magento is een erg populair open-source e-commerce platform Dit wijdverspreide gebruik heeft helaas ook tot gevolg dat Magento-winkels een lucratief doelwit kunnen zijn voor criminelen, wat het cruciale belang van beveiliging voor deze winkels benadrukt. Schokkend feit: 1 op de 5 winkels wordt jaarlijks getroffen door malware. Dure inbraken Een inbraak in uw winkel kan kosten met zich meebrengen in de vorm van misgelopen omzet als gevolg van downtime, reputatieschade (vooral wanneer de hack moet worden bekendgemaakt) en kosten die gepaard gaan met het verwijderen van de hack en ervoor zorgen dat de winkel weer veilig is. Deze kosten bedragen doorgaans tussen de $50.000 en $2.000.000 aan schade, boetes, onderzoekskosten en reputatieherstel. We doen er alles aan om dergelijke situaties te voorkomen. Een van de belangrijkste acties die we ondernemen om een hack te voorkomen, is ervoor zorgen dat uw Magento-winkel altijd draait op de nieuwste versie. We zorgen er ook voor dat de extensies die de winkel gebruikt up-to-date zijn. Directe meldingen Om op de hoogte te worden gesteld van mogelijke problemen, vertrouwen we op onze partner Sansec. Sansec is een cybersecuritybedrijf dat is gespecialiseerd in e-commercebeveiliging. Hun belangrijkste product, eComscan, is een geautomatiseerde beveiligingsscanner die is ontworpen om Magento-winkels te beschermen tegen aanvallers. Het wordt gebruikt en vertrouwd door toonaangevende Magento-bureaus en hostingbedrijven. eComscan biedt verschillende voordelen. Het helpt bij het identificeren van de oorzaak van hacks, voorkomt winkeldowntime en opschorting van advertentiecampagnes, beveiligt de online reputatie, zorgt voor naleving van de normen van de Payment Card Industry (PCI) en voorkomt lekken van persoonlijk identificeerbare informatie (PII). Het is ontworpen om kwaadaardige activiteiten vroegtijdig te detecteren, wat kan helpen om de gevolgen van een gegevenslek te beperken of te voorkomen. Hoe we Sansec benutten We gebruiken Sansec om al onze winkels dagelijks te scannen en doen wekelijks een diepgaande scan. Als er onregelmatigheden worden gevonden, krijgen we onmiddellijk melding van de monitoringdienst via Slack, e-mail en SMS voor urgente problemen. We maken ook gebruik van de integriteitscontrole van Sansec. Vanwege de uitgebreide database van code die het controleert, kan het afwijkende code herkennen door de juiste code van alle geïnstalleerde versies te verzamelen. Wanneer de code van een bepaald pakket afwijkt van het gemiddelde met een bepaalde drempel, krijgen we een melding dat er mogelijk iets mis is. Op deze manier kunnen we kwaadaardige code detecteren, zelfs wanneer de gebruikte kwetsbaarheid nog niet openbaar is. We voeren deze controle uit telkens wanneer we een implementatie doen om ervoor te zorgen dat geïnfecteerde code via een aanval op de toeleveringsketen de productieserver niet kan bereiken. Kortom, Sansec helpt ons 's nachts gerust te slapen, in de wetenschap dat uw winkel in veilige handen is en nauwlettend in de gaten wordt gehouden. ### [Partner highlight: RUMvision](https://elgentos.nl/blog/partner-highlight-rumvision) Improve performance with real user monitoring Our main focus is building the best technical solution for our customers. Because in the end this boosts the performance of our projects. To monitor frontend performance and UX we are partnering with RUMvision. The possibility to react in realtime to performance and UX changes is going to be a game changer on tackling CWV metrics. Together we are going to strive for the highest UX performance scores possible because this directly relates to more revenue. Our in-house developed Magento 2 extension for RUMvision allows you to easily integrate RUMvision into your store! You can find it here; https://github.com/elgentos/magento2-rumvision ## Cases ### [Bouwmaterialen: snelle Hyvä-webshop op Magento](https://elgentos.nl/cases/bouwmaterialen) Hoe we voor een bouwmaterialenshop een snelle Hyvä-webshop op Magento Open Source bouwden, met prijs per eenheid, bezorging op postcode, afhaallogica en herbestellen. Bouwmaterialen Een snelle webshop voor een logistiek complex assortiment. Deze speler in bouwmaterialen verkoopt online aan particulieren én aan de bouw. Het assortiment loopt van plaatmateriaal en hout tot complete bouwmaterialen: vaak volumineus, zwaar en per eenheid verkocht. Daardoor is niet de catalogus, maar de logistiek en de afrekenervaring het echte vraagstuk. We bouwden een nieuwe, razendsnelle storefront op Magento Open Source met Hyvä, met de nadruk op een soepele checkout en slimme bezorg- en afhaallogica. Uitdagingen & doelstellingen Bouwmaterialen zijn volumineus en zwaar, dus bezorging is complex en kostbaar. Klanten willen vóór het bestellen weten of, hoe en wanneer er bij hen bezorgd kan worden. Veel producten worden per eenheid verkocht: per m², per strekkende meter of per verpakking. De prijsweergave en het bestelproces moeten dat meteen duidelijk maken. Orders zijn vaak groot en gemengd, dus snelheid en een soepele checkout zijn cruciaal. En de shop moest zowel particulieren als zakelijke klanten vanuit één omgeving bedienen. Oplossing & implementatie We zetten een snelle, stabiele storefront neer op Magento Open Source met Hyvä, en losten de logistieke complexiteit op met maatwerk rond prijs, bezorging en afhalen. Snelle Hyvä-storefront Hyvä levert een lightweight frontend met korte laadtijden. Dat telt extra bij grote, gemengde orders waarin klanten veel producten naast elkaar vergelijken. Prijs per eenheid We bouwden maatwerk dat prijzen per eenheid toont en doorrekent: per m², per strekkende meter of per verpakking. Zo ziet de klant direct wat een product écht kost, ongeacht hoe het wordt verkocht. Bezorgen op postcode, of afhalen Per postcode bepaalt de shop of en hoe snel er bezorgd kan worden, met express-bezorging waar dat mogelijk is. Producten die alleen af te halen zijn, worden duidelijk als zodanig gemarkeerd, met een gerichte promotie om afhalen aantrekkelijk te maken. Zo voorkomen we verrassingen in de checkout en onnodige retouren. Makkelijk herbestellen Vaste klanten bestellen een eerdere order in een paar klikken opnieuw, handig voor wie regelmatig dezelfde materialen nodig heeft. Zakelijke klanten Voor zakelijke afnemers valideren we het BTW-nummer automatisch, zodat de juiste prijzen en facturatie van toepassing zijn. Zoeken, betalen en groeien Smile ElasticSuite zorgt voor snelle, relevante zoekresultaten en filtering in een breed assortiment. Betalen gaat via Mollie. Productfeeds lopen via Channable naar Google en Facebook Shopping, e-mailmarketing via Klaviyo, en met Sentry houden we de foutmonitoring scherp. Door een snelle Hyvä-storefront te combineren met maatwerk voor prijs per eenheid en bezorg- en afhaallogica, past de shop bij een assortiment dat logistiek allesbehalve standaard is. Ook benieuwd naar de mogelijkheden voor jouw Magento 2-shop? Ook zo'n snelle shop? Neem contact op! ### [Installatietechniek: B2B-webshop op Magento & Hyvä met ERP-koppeling](https://elgentos.nl/cases/installatietechniek) Hoe we voor een groothandel in de installatiebranche een snelle Hyvä-webshop op Magento Open Source bouwden, met het ERP centraal: klantspecifieke nettoprijzen, realtime voorraad, bestellen op lengte en raamcontracten. Installatietechniek Een B2B-webshop met het ERP in het hart, voor installateurs en monteurs. Deze groothandel bedient de installatiebranche: installateurs en monteurs die dagelijks materiaal nodig hebben, van kabel en leidingwerk tot complete installatiecomponenten. De uitdaging zit niet in de webshop alleen, maar in de koppeling met de fysieke handel: klantspecifieke nettoprijzen, voorraad per vestiging en vaste contractafspraken. We zetten een snelle Hyvä-storefront neer op Magento Open Source en plaatsten het ERP centraal, zodat prijzen, voorraad en orders realtime synchroon lopen. Uitdagingen & doelstellingen Installateurs werken met eigen nettoprijzen en contractafspraken. Online moeten die exact kloppen, niet bij benadering: een verkeerde prijs is meteen een verkeerde order. Prijzen, voorraad en facturen leven in het ERP. De webshop moest daar realtime mee in sync zijn, niet via een nachtelijke export die altijd achterloopt. De branche heeft eigen bestelgewoonten: bestellen op lengte (kabel per meter), restlengtes benutten, snel herbestellen en werken met raamcontracten en afroeporders. En één installatiebedrijf heeft vaak meerdere monteurs die elk bestellen, vanuit hetzelfde account. Oplossing & implementatie We zetten een snelle, stabiele storefront neer op Magento Open Source met Hyvä, en losten de echte complexiteit op door het ERP centraal te zetten en de bestelgewoonten van de branche in de shop te vertalen. Snelle Hyvä-storefront We bouwden de shop op Magento Open Source met Hyvä. Dat levert een lightweight frontend met korte laadtijden, ook voor monteurs die onderweg of op de bouwplaats bestellen. ERP in het hart van de shop We koppelden Microsoft Dynamics 365 Business Central via OData, met een asynchrone wachtrij die piekdrukte opvangt. Orders gaan vrijwel realtime naar het ERP, en klantspecifieke nettoprijzen, actuele voorraad en factuurhistorie komen terug de shop in. Zo ziet elke klant zijn eigen, contractueel afgesproken prijzen en de juiste voorraad per vestiging. Bestellen op lengte, en restlengtes benutten Voor producten die per meter van een rol worden verkocht, zoals kabel, bouwden we branche-specifiek maatwerk. Klanten bestellen exacte lengtes, en de shop toont en benut restlengtes: overgebleven stukken per vestiging. Dat scheelt verspilling en helpt de installateur sneller aan precies wat hij nodig heeft. Zakelijke accounts en contracten Met company accounts werken meerdere medewerkers van één installatiebedrijf vanuit hetzelfde account. Een btw incl./excl.-schakelaar past de weergave aan op de vakman, en met raamcontracten en afroeporders bedienen we klanten met vaste afspraken. Productdata en zoeken Een PIM-koppeling met Skwirrel voert technische productdata, filterbare kenmerken en datasheets aan, zodat installateurs in een groot, technisch assortiment snel het juiste artikel vinden. Smile ElasticSuite zorgt voor snelle, relevante zoekresultaten en filtering. Betalen, content en monitoring Betalen gaat via Mollie, contentbeheer via een headless CMS, en met Sentry houden we de foutmonitoring scherp. Door het ERP centraal te zetten en de bestelgewoonten van de branche in de shop te vertalen, kreeg de groothandel een self-service-omgeving die net zo betrouwbaar is als de balie: juiste prijzen, actuele voorraad en orders die direct in het ERP landen. Ook benieuwd naar de mogelijkheden voor jouw Magento 2-shop? Ook zo'n slimme B2B-shop? Neem contact op! ### [Technische groothandel: B2B-webshop op Magento & Hyvä](https://elgentos.nl/cases/technische-groothandel) Hoe we een technische groothandel van een verouderd OpenCart-platform naar een snelle B2B-webshop op Magento Open Source en Hyvä migreerden, met company accounts, klantspecifieke prijzen en OCI Punchout. Technische groothandel Van een verouderd OpenCart-platform naar een snelle, schaalbare B2B-webshop. Deze technische groothandel levert gereedschap, veiligheidsmiddelen en toebehoren aan zakelijke klanten. Met decennia aan ervaring, een breed merkenaanbod en een groot voorraadassortiment is vakkundig advies nooit ver weg. De groothandel draaide al jaren op OpenCart, maar dat platform was verouderd en liep op alle fronten tegen zijn grenzen aan. Doorontwikkelen zat er nauwelijks meer in. Daarom keken we breder en viel de keuze op Magento Open Source. De keuze voor elgentos kwam voort uit open en eerlijke gesprekken, waarin onze expertise op zowel technisch als B2B-vlak doorslaggevend was. Uitdagingen & doelstellingen De oude website was traag, dus snelheid was een belangrijk speerpunt. We kozen meteen voor Hyvä, waarmee we met relatief weinig inspanning een razendsnelle site neerzetten. Een andere uitdaging was het overzetten van de bestaande data, zoals klanten, orders en productgegevens. Als groothandel heeft deze klant veel zakelijke afnemers. Voor die B2B-klanten wilde de groothandel specifieke functionaliteiten toevoegen, zoals verschillende rechtenniveaus in de orderflow, klantspecifieke prijzen en een OCI Punchout-koppeling voor grote afnemers. Daarnaast wilde de groothandel het invoeren van productdata vereenvoudigen en het beheer van contentpagina's verbeteren via een CMS. Oplossing & implementatie Bij het moderniseren van de online omgeving was een snelle en stabiele website essentieel. Daarvoor migreerden we de webshop naar Magento Open Source, met de Hyvä-themetechnologie. Hyvä levert een lightweight, efficiënte frontend die de laadtijden flink verbetert. Die keuze leverde meteen een merkbare snelheidswinst op, wat cruciaal was gezien de hoge verwachtingen van zakelijke klanten. Data-migratie Een van de grootste uitdagingen was het migreren van de bestaande data. De klantendatabase, orders en gedetailleerde productinformatie moesten volledig en correct naar het nieuwe platform. We plannen en voerden dit zorgvuldig uit, zodat er geen data verloren ging en alle klantgegevens na de migratie klopten. Ook zorgden we ervoor dat wachtwoorden uit OpenCart meeverhuisden naar Magento, zodat klanten hun account niet opnieuw hoefden te activeren met een nieuw wachtwoord. B2B-functionaliteiten Vanwege het zakelijke karakter lag er een sterke focus op B2B-specifieke functionaliteit. Zo implementeerden we company accounts, waarmee verschillende medewerkers van één klantorganisatie met eigen rechten bestellingen plaatsen en goedkeuren. Daarnaast richtten we klantspecifieke prijzen in, zodat elk bedrijf de voor hen afgesproken prijzen ziet. Die prijzen komen rechtstreeks uit het ERP-systeem. Voor grote afnemers voegden we een OCI Punchout-integratie toe, waarmee ze rechtstreeks vanuit hun eigen systeem bestellen in de webshop. Dat verhoogt de efficiëntie en de klanttevredenheid. Integraties Gezien het grote assortiment en de complexiteit van de bedrijfsprocessen waren naadloze integraties met de bestaande systemen essentieel. We koppelden het ERP-systeem (AGP Trade van Kerridge Commercial Systems) zodat voorraden en prijzen altijd actueel zijn. De integratie met BarTrack zorgt voor accurate barcoderegistratie en voorraadbeheer. Daarnaast zetten we een PIM-koppeling met Skwirrel op om het beheer van productinformatie te stroomlijnen en te centraliseren. Zo beheert en update de groothandel productdata snel en efficiënt, wat cruciaal is voor zo'n uitgebreid assortiment. Hyvä React Checkout Om de gebruikerservaring verder te optimaliseren kozen we voor de Hyvä React Checkout. Deze snelle en gebruiksvriendelijke checkout zorgt voor een soepel en vlot afrekenproces, wat niet alleen de conversie verhoogt maar ook het aantal verlaten winkelmandjes verlaagt. CMS en contentbeheer Tot slot besteedden we aandacht aan beter contentbeheer. Het nieuwe CMS, geïntegreerd in Magento, maakt het eenvoudiger om contentpagina's te beheren en aan te passen zonder technische kennis. Dat maakt het platform flexibeler en stelt de groothandel in staat snel in te spelen op veranderingen en klantvragen. Implementatie We voerden deze oplossingen gefaseerd uit, in nauwe samenwerking met de groothandel en de betrokken derde partijen. De migratie van OpenCart naar Magento Open Source duurde zes maanden, met sterke nadruk op minimale downtime en een soepele overgang. Gedurende het traject testten we regelmatig, zodat alles goed functioneerde en de gebruikerservaring optimaal bleef. Door een snelle site, een naadloze data-migratie, geavanceerde B2B-functionaliteit en sterke integraties met bestaande systemen te combineren, heeft de groothandel nu een toekomstbestendige online omgeving die aansluit op de groeistrategie en de verwachtingen van klanten. Ook benieuwd naar de mogelijkheden voor jouw Magento 2-shop? Ook zo'n snelle B2B-shop? Neem contact op! ### [Alius: B2B-webshop voor de energietransitie — gebouwd met Magento, Hyvä en Elgentos](https://elgentos.nl/cases/alius) Ontdek hoe Alius met Elgentos en Hyvä een gesloten B2B-webshop bouwde voor installateurs in de energietransitie — met klantspecifieke prijzen, ERP-integratie en continue doorontwikkeling. B2B-webshop voor de energietransitie Alius We hebben het project overgenomen van een collega agency. Inmiddels draait de shop volledig op Hyvä met Hyvä Checkout, is Magento geüpgraded naar 2.4.8, en is de codebase stap voor stap gemoderniseerd. B2B platform met klantspecifieke prijzen Mijnalius.nl is een gedeeltelijk gesloten B2B-omgeving: prijzen, voorraad en bestelknoppen zijn pas zichtbaar na inloggen. Elke klant ziet zijn eigen afgesproken prijzen, inclusief staffelprijzen, opgehaald uit Microsoft Business Central. We bouwden een async prijsophaal-mechanisme zodat de cataloguspagina's snel laden ondanks de klantspecifieke data. Business Central-integratie via NVision Microsoft Business Central is het ERP-systeem dat de ruggengraat vormt. Samen met onze integratiepartner NVision Commerce Solutions zorgen we ervoor dat klantdata, productprijzen, staffelprijzen, voorraad en orderstatus continu synchroniseren. We onderhouden de connector, lossen compatibiliteitsproblemen op en zorgen dat de koppeling stabiel draait — inclusief patches voor specifieke edge cases bij tierprijzen in de checkout. Trainingsplatform Alius biedt trainingen en cursussen aan voor professionals. We bouwden een trainingsmodule met een kalenderweergave (FullCalendar), overzichtspagina's en detailpagina's — volledig gestyled in Tailwind en geïntegreerd in de Magento-installatie. Offertes en supportcases Zakelijke klanten kunnen offertes opvragen, die vanuit Business Central worden teruggespeeld in het klantaccount. Daarnaast bouwden we een casemanagement-systeem in het klantportaal, inclusief drag-and-drop, paginering en statusweergave — zodat klanten hun vragen en meldingen kunnen volgen. Slim bestellen De checkout is uitgebreid met gewenste leverdatums, extra fees met contactformulier, ophaalopties en crosssell-producten. Bundleproducten worden ondersteund voor samengestelde artikelen. En met de "contact for purchase"-functie kunnen klanten direct contact opnemen voor producten die niet online bestelbaar zijn. Meerdere klantportalen Naast het standaard klantaccount bouwden we koppelingen voor specifieke grootklanten, inclusief redirects en een REST API-endpoint voor het toevoegen van producten aan de winkelwagen vanuit externe systemen. Continue doorontwikkeling Met Playwright-tests in de CI/CD-pipeline, Sentry voor error monitoring, RUMvision voor Core Web Vitals, Varnish 6 voor full page caching en regelmatige Magento-upgrades houden we het platform veilig, snel en betrouwbaar. Ook zo'n snelle shop? Neem contact op! ### [Dutchlabelshop - Gepersonaliseerde Labels](https://elgentos.nl/cases/dutchlabelshop) Ontdek Dutchlabelshop's vernieuwde Magento 2 platform voor gepersonaliseerde labels. Frisse look met Hyva Themes. Een frisse look voor Dutchlabelshop met Hyva Themes DUTCH LABEL SHOP Dutchlabelshop In het tijdperk van e-commerce en platforms zoals Etsy krijgen creatieve makers meer kansen dan ooit om hun passie om te zetten in iets tastbaars. Boutique-eigenaren kunnen hun handgemaakte collecties laten uitgroeien tot een professioneel en winstgevend merk. Dutchlabelshop helpt deze makers daarbij door producten te bieden waarmee zij hun werk duidelijk en trots als hun eigen merk kunnen presenteren. Het bedrijf biedt vier soorten hoogwaardige, gepersonaliseerde labels: merklabels, maatlabels, waslabels en hangtags al verkrijgbaar vanaf oplages van slechts 30 stuks. De uitdaging Dutchlabelshop benaderde ons voor een herbouw van hun IT-infrastructuur. Hun vorige webshop (ook door ons ontwikkeld) draaide op Magento 1, dat richting het einde van de levensduur ging in juni 2020. Een groot deel van de bestaande codebase was gericht op het verwerken van bestellingen na plaatsing, ter ondersteuning van het productieproces. We grepen deze kans aan om de codebase opnieuw te ontwerpen, met als doel het systeem robuuster, flexibeler en toekomstbestendiger te maken. We werkten in sprints van twee weken en de klant was één dag per week bij ons op kantoor aanwezig. Zo konden we een korte feedbackloop garanderen en snel schakelen tijdens het proces. Migratie van Magento 1 to 2 In de Magento 1-installatie hadden we door de jaren heen veel maatwerk opgebouwd, wat uiteindelijk resulteerde in 75 op maat gemaakte extensies. Onze eerste stap was om samen met het team van de klant alle extensies uit de Magento 1-shop door te nemen. Per extensie beoordeelden we of we deze konden laten vervallen, moesten overzetten naar Magento 2, of dat er een alternatief beschikbaar was voor de nieuwe omgeving. Servicegerichte architectuur Het project bestaat uit veel verschillende, maar onderling verbonden onderdelen. In de Magento 1-webshop hadden we alles binnen Magento ondergebracht, wat uiteindelijk niet de beste oplossing bleek. Magento is sterk in waar het voor bedoeld is, maar door het systeem verantwoordelijkheden te geven waarvoor het niet ontworpen is, kwamen we soms in lastige situaties terecht. Daarom kozen we voor een servicegerichte architectuur (SOA). Hierbij hebben we de verschillende, maar samenhangende onderdelen van de codebase opgesplitst in systemen die elk doen waar ze het beste in zijn. Deze systemen vormen samen één geheel binnen het Magento-ecosysteem. Dit betekende dat we het systeem hebben opgesplitst in verschillende onderdelen: Contentmanagement Productdesigners & uploadtools Productbibliotheek Pricingbibliotheek Diverse microservices voor kleinere taken Een middlewarelaag voor de productiefaciliteit In deze case study lichten we elk onderdeel verder toe, zodat duidelijk wordt hoe een moderne Magento 2-stack kan functioneren. Hyvä Frontend Voor dit project kozen we voor het Hyvä-thema: een frontend die standaard razendsnel is en eenvoudig uit te breiden met de maatwerkfunctionaliteiten die Dutchlabelshop nodig heeft. Voor deze klant hebben we uiteindelijk ongeveer 30 modules geschikt gemaakt voor Hyvä, waarvan we er ook een aantal hebben gedeeld met de Hyvä-community. Met het oude Luma-thema is het lastig om mee te gaan met de steeds hogere verwachtingen van eindgebruikers op het gebied van snelheid en gebruikerservaring (UX). Met Hyvä als basis voor de frontend wordt dit een stuk eenvoudiger en beter beheersbaar. Content management Naast de Magento 1-webshop had de klant een WordPress-site draaien voor alle blogcontent. Het samenbrengen van de blogcontent met andere sitecontent was een grote wens van het contentteam van de klant. Daarom waren we op zoek naar een contentmanagementsysteem dat ons in staat stelde om: Flexibel contenttypes te creëren (zoals blogs, landingspagina’s, FAQ’s, etc.) Gedetailleerde controle te hebben over gebruikers en rechten Content te previewen in het daadwerkelijke design De geschiedenis van wijzigingen in content te zien (versioning) Elk contentitem in meerdere talen te beheren Alle content op te halen via een REST (of GraphQL) endpoint Deze vereisten brachten de lijst terug tot een aantal systemen: Contentful Cockpit Butter CMS Prismic.io DatoCMS We hebben met elk van deze partijen meerdere gesprekken gevoerd en hun demo’s grondig beoordeeld samen met het contentteam van de klant om te bepalen welk systeem het beste aansloot bij onze wensen en voorkeuren. Uiteindelijk hebben we besloten om voor Prismic.io te kiezen. Helaas was er geen Magento 2-extensie beschikbaar om Prismic met Magento 2 te koppelen en zo een naadloze ervaring voor het contentteam te creëren. Omdat we zo enthousiast waren (en nog steeds zijn!) over Prismic, hebben we besloten om de extensie zelf te bouwen. We hebben deze ook open source gemaakt — je kunt deze vinden op onze Github repo elgentos/magento2-prismicio. Je kunt meer lezen over onze Prismic- en Magento-integratie hier. Product designers & uploaders De kern van het verkoopproces voor Dutchlabelshop is natuurlijk het product. Dutchlabelshop heeft een aantal labels op voorraad, zoals de Made in-labels. De overige producten moeten door de klant zelf worden ontworpen met wat wij configurators noemen. We kunnen deze configurators onderverdelen in twee categorieën: een uploader waarbij je een afbeelding uploadt en op basis daarvan een label maakt en een designer waarbij je een label ontwerpt aan de hand van vooraf ingestelde opties. We hebben veel geleerd van deze types in het Magento 1-project. Het belangrijkste inzicht was dat we geen server-side rendering wilden gebruiken voor het genereren van label previews. De belangrijkste reden hiervoor is dat server-side rendering te traag is, vooral door netwerkvertraging. Een client-side rendering aanpak geeft de klant direct resultaat wanneer er wijzigingen worden gemaakt in de configurator. Met client-side rendering hoeven we ons ook geen zorgen te maken over schaalbaarheidsproblemen zoals bij server-side rendering. We kozen voor React om de configurators te bouwen. Voor de preview kozen we Fabric.js als extra objectmodel bovenop het HTML canvas-element. Voor oudere browsers die client-side rendering niet goed ondersteunen, vallen we terug op een server-side rendering client. De basis van elke configurator is een JSON-bestand dat bij het laden van de pagina wordt gedownload en alle productdata bevat. Met deze JSON rendert de React-applicatie de invoervelden voor de gebruiker. Bij elke wijziging wordt er een nieuwe preview gegenereerd. Productbibliotheek In Magento 1 was Magento zelf de bron voor productdata. Toen we besloten over te stappen naar een servicegerichte architectuur, hadden we een centrale plek nodig waar productdata vandaan komt. De productbibliotheek is die plek; deze bevat alle producttypes en opties. Alle mogelijke opties en waarden voor producten van Dutchlabelshop zijn opgenomen in de productbibliotheek. We gebruiken de productbibliotheek in verschillende onderdelen van het technische landschap van Dutchlabelshop, zoals Magento 2, het Order Management System en de designers & uploaders. De productbibliotheek maakt gebruik van een zelfgebouwde command line tool om een statische JSON te genereren, die is opgebouwd uit meerdere inputbestanden. Dit maakt onderhoud en overzicht een stuk eenvoudiger. Pricingbibliotheek De pricingbibliotheek is vergelijkbaar met de productbibliotheek, met als verschil dat deze bibliotheek alle kost- en verkoopprijzen bevat. De prijsinput wordt gegenereerd op basis van een complexe berekening, waarbij rekening wordt gehouden met een groot aantal variabelen zoals labelgrootte, denier, symbool ja/nee, kader ja/nee, glanskleur ja/nee, enzovoort. Microservices Color Extractor In de Magento 1-shop moesten klanten zelf de kleuren kiezen die op het label aanwezig waren. Voor de nieuwe shop wilde de klant dit proces automatiseren. Met behulp van machine learning worden de kleuren automatisch uit de afbeelding gehaald. Deze kleurinformatie wordt vervolgens opgeslagen in Magento en gebruikt tijdens het productieproces. Vertalingen Omdat de shop beschikbaar is in 16 talen, hadden we een manier nodig om ervoor te zorgen dat alle teksten in alle talen beschikbaar zijn. We hebben een vertaal-microservice ontwikkeld die alle templatebestanden doorzoekt op vertaalbare tekst. Vervolgens controleren we per tekst of er een vertaling beschikbaar is in alle 16 talen. We hebben deze microservice gekoppeld aan ons deploymentproces, dat een waarschuwing geeft (of faalt boven een bepaalde drempel) wanneer er vertalingen ontbreken. Bedrijfsprocessen De belangrijkste verantwoordelijkheid van de middleware is het volgen van de productie van orders. Omdat deze processen in de Magento 1-shop waren ingebouwd, moesten we ze overzetten naar de middleware. Dit gaf ons een mooie kans om de processen opnieuw te bekijken. Allereerst moesten we inzicht krijgen in hoe het huidige proces eruitzag. Gelukkig waren deze processen al gedocumenteerd door Dutchlabelshop, omdat zij als volledig remote organisatie werken. In dit geval hielp goede documentatie niet alleen om nieuwe medewerkers snel in te werken, maar ook om ons inzicht te geven in de bestaande processen. Vervolgens hebben we bepaald hoe het nieuwe proces eruit moest zien. Hiervoor hebben we meerdere sessies met de klant gehouden om de volledige workflow te visualiseren. We maakten een flowchart in Lucidchart. Het grote voordeel van Lucidchart is de samenwerkingsfunctie, waardoor we tegelijkertijd met de klant aan dezelfde diagrammen konden werken. Om goed inzicht te krijgen in de bedrijfsprocessen rondom de productie van labels, hebben Peter Jaap en Jeroen de productielocatie van Dutchlabelshop bezocht. Power loom Color spools Lasercutter Ons testproduct – Elgentos-logo labels Middleware In het hart van de nieuwe shop staat de custom middleware: het Order Management System, oftewel OMS. We hebben het OMS gebouwd op Laravel, het PHP-framework. Na het maken van de flowchart en het bezoeken van de productiefaciliteit hadden we een duidelijk beeld van hoe het volledige productieproces door de applicatie moest verlopen. Met dit in gedachten konden we beginnen met het bouwen van de basis van de applicatie. Hiervoor hebben we de applicatie opgedeeld in het kleinste onderdeel: het scherm. Schermen Het productieproces bestaat uit een aantal stappen. In sommige stappen werken één of meerdere mensen. Deze mensen hoeven alleen de informatie te zien die op dat moment relevant voor hen is. Hiervoor hebben we schermen gemaakt. Een scherm is een overzichtspagina met alle orders die zich in die stap van de workflow bevinden. Een scherm kan meerdere acties bevatten, die per context verschillen. Een fabrieksmedewerker kan de orders in zijn stap bekijken en zich alleen daarop focussen. Orders kunnen vervolgens naar de volgende stap in de workflow worden gestuurd of terug worden gezet, bijvoorbeeld wanneer er iets mis is gegaan tijdens de productie. Order detail scherm QA design proces workflow Upload Photo Proof workflow Cutting preparation workflow Rechten Een van de belangrijkste onderdelen van het OMS is het rechten­systeem. In het productieproces is een medewerker verantwoordelijk voor één of meerdere stappen. Met het rechten­systeem kunnen we ervoor zorgen dat een medewerker alleen de schermen ziet die nodig zijn voor zijn taak. Binnen de workflow zijn rechten gekoppeld aan elke stap. Als extra beveiliging worden de rechten per order ook door de workflow bepaald. Wanneer een order naar de volgende stap gaat, controleert de workflow automatisch welke rechten bij die stap horen. Deze rechten worden vervolgens aan de order gekoppeld, zodat de juiste medewerker deze ziet. Naast het tonen of verbergen van complete orders, kunnen we ook specifieke informatie verbergen. Zo ziet een fabrieksmedewerker bijvoorbeeld geen klant- of financiële gegevens, maar alleen de informatie die relevant is voor zijn taak. Notification Manager Wanneer een order door het volledige productieproces gaat, moet Magento continu worden bijgewerkt. Hiervoor hebben we de notification manager ontwikkeld. Aan de OMS-kant triggert elke (goedgekeurde) actie een notificatie naar Magento. Op basis daarvan bepaalt Magento of er een actie moet worden uitgevoerd. Een voorbeeld: het is mogelijk om een product te bestellen met een photoproof. Wanneer een order deze stap in het productieproces bereikt, stuurt het OMS een notificatie naar Magento. Deze notificatie bevat alle benodigde data om een e-mail naar de klant te sturen met de photoproof. De notification manager wordt ook gebruikt voor verzendnotificaties. Het OMS is verantwoordelijk voor het aanmaken van zendingen en het doorsturen daarvan naar de fulfillment services. Deze services sturen de trackinginformatie terug naar het OMS. Vervolgens verwerkt het OMS deze informatie, verplaatst de order binnen de workflow en stuurt de trackinggegevens via de notification manager naar Magento. Magento zorgt er daarna voor dat de klant via e-mail op de hoogte blijft van de verzending totdat het pakket is geleverd. Deployments We moesten ervoor zorgen dat al deze bewegende onderdelen goed op elkaar aansluiten zoals bedoeld. Daarnaast hadden we een manier nodig om de codekwaliteit op peil te houden en ons te waarschuwen wanneer er iets niet klopt. Om dit te bereiken hebben we een CI/CD-pipeline in GitLab geïmplementeerd, waarmee we verschillende checks en buildprocessen automatiseren. CI/CD-pipeline Deze pipeline genereert een kleine website met documentatie over codekwaliteit, codecomplexiteit, security checks, vertaalchecks, enzovoort, zodat onze developers deze periodiek kunnen beoordelen. ### [Highlite - Meerdere merken, één platform](https://elgentos.nl/cases/highlite) Highlite is een internationale distributeur van entertainment- en eventtech, met merken als Infinity, Showtec en Wentex. Highlite Meerdere merken, één platform Highlite is een internationale distributeur van entertainment- en eventtech, met merken als Infinity, Showtec en Wentex. Professionele verlichting, geluidsapparatuur en podiumtechniek — verkocht aan dealers wereldwijd. We bouwden een volledig nieuw Hyvä-frontend met een multi-brand aanpak op hun bestaande Magento 2-platform. Wat we hebben gedaan Het project startte met het opzetten van een solide basis: CI/CD-pipeline via GitLab, linting met GrumPHP, en de bestaande codebase klaarmaken voor een nieuw Hyvä-frontend. We ontwikkelden een compleet nieuw design op Hyvä met Tailwind CSS, inclusief custom fonts, een styleguide en merkspecifieke kleuren. Eén codebase, meerdere merken Highlite verkoopt onder verschillende merken die elk hun eigen uitstraling hebben. We bouwden een multi-brand thema-architectuur met een gedeeld Infinity-basethema en brand-specifieke child themes voor onder andere Showtec en Wentex. Elk merk krijgt zijn eigen look — eigen fonts, kleuren en layoutkeuzes — zonder codeduplicatie. Rijke productpagina's Professionele eventapparatuur vraagt om meer dan een foto en een prijs. We bouwden productpagina's met een uitgebreide beeldgallerij inclusief Vimeo-video-integratie, downloadbare bijlagen, productspecificaties en een related products slider. Productseries krijgen hun eigen overzichtspagina zodat dealers snel het complete aanbod per lijn kunnen bekijken. Content met Magezon Page Builder Het marketingteam beheert landingspagina's, blogartikelen en nieuwsberichten via Magezon Page Builder. We maakten alle Magezon-blokken Hyvä-compatible en stelden een safelist in voor Tailwind-klassen zodat de visuele editor naadloos samenwerkt met het thema. CMS Page Hierarchy zorgt voor gestructureerde contentpagina's. Binnenkort zal deze page builder vervangen worden met Hyvä CMS. Dealer Finder Als distributeur verkoopt Highlite via dealers. We implementeerden een store locator met Google Maps-integratie, geocoding, filterbare zoekresultaten en een responsive layout. Dealers zijn eenvoudig te vinden op basis van locatie en productcategorie. Performance en monitoring Met imgproxy voor geoptimaliseerde afbeeldingen, preloaders voor snellere initiële laadtijden en RUMvision voor Core Web Vitals monitoring houden we de performance strak. Google Tag Manager meet het gebruikersgedrag, en Consent Mode v2 zorgt voor GDPR-compliant tracking. Wat komt er aan De volgende stap is de overstap naar Hyvä Commerce — de volledige e-commerce suite van Hyvä. Tegelijkertijd vervangen we Magezon Page Builder door Hyvä CMS, waarmee het marketingteam nog meer flexibiliteit krijgt en we een externe afhankelijkheid elimineren. Eén geïntegreerd ecosysteem voor frontend, checkout én contentbeheer. ### [ICTSpecialist: Complexe B2B, strakke performance](https://elgentos.nl/cases/ictspecialist) ICTSpecialist levert IT-hardware en -oplossingen aan zakelijke klanten in Nederland en Duitsland. Met klantspecifieke prijzen, gesloten bestelportalen en OCI Punchout-koppelingen. Begin 2025 namen we het beheer en de doorontwikkeling over. ICTSpecialist Complexe B2B, strakke performance ICTSpecialist levert IT-hardware en -oplossingen aan zakelijke klanten in Nederland en Duitsland. Met klantspecifieke prijzen, gesloten bestelportalen voor grootklanten, OCI Punchout-koppelingen en duizenden producten via externe productdatabronnen, is dit geen doorsnee webshop. Begin 2025 namen we het beheer en de doorontwikkeling over. Wat we hebben gedaan: We namen een bestaande Magento 2-shop over en begonnen met het fundament: CI/CD-pipeline opzetten via GitLab, review-omgevingen inrichten, en Magento upgraden van 2.4.6 naar 2.4.8. Technische schuld werd opgeruimd, verouderde extensies verwijderd en de codebase opgeschoond. Een security audit bracht kwetsbaarheden aan het licht — van hardcoded API-keys tot authenticatieproblemen in de Punchout-koppeling — die we direct hebben verholpen. Klantspecifieke prijzen en bedrijfsaccounts: ICTSpecialist bedient zakelijke klanten met elk hun eigen prijsafspraken. We implementeerden onze eigen elgentos B2B Company Accounts & Pricing-extensies, gekoppeld aan AFAS. Klanten loggen in en zien direct hun afgesproken prijzen — inclusief een maandelijks leasebedrag op productpagina's. Per bedrijf kunnen bestedingslimieten worden ingesteld, met cumulatieve tracking over een periode en afdwinging in de checkout. Gesloten portalen voor grootklanten: Meerdere grootklanten hebben hun eigen afgeschermde bestelportaal binnen dezelfde Magento-installatie. Eigen menu, eigen assortiment, geen toegang tot de reguliere shop. We bouwden de routering, caching en toegangscontrole zodat alle omgevingen naadloos naast elkaar draaien — zonder dat ze elkaar beïnvloeden. Varnish en caching op maat: B2B-shops met klantgroepprijzen en gesloten portalen maken caching complex. We implementeerden Varnish met ESI-includes voor het menu, customer group-specifieke vary headers en cache keys. Met Tideways profileerden we de impact en met Playwright smoketests valideren we dat alles correct gecachet wordt. Productdata van buitenaf: De catalogus wordt gevoed door een externe PIM-koppeling en verrijkt met Icecat-productdata. We bouwden een synchronisatiemodule die producten via de API ophaalt, en richtten delta-updates in als cron zodat de catalogus continu actueel blijft — zonder handmatig importwerk. Monitoring en zekerheid: Met Sentry voor error tracking, Oh Dear voor uptime monitoring, RUMvision voor Core Web Vitals en Sansec Shield voor security scanning houden we de shop proactief in de gaten. Playwright-tests draaien mee in de pipeline zodat we met vertrouwen deployen. Wat komt er aan: De volgende grote stap staat al op de roadmap: een volledige Hyvä-implementatie. De shop draait nu nog op Luma, maar de overstap naar Hyvä zal de frontend aanzienlijk sneller en beter onderhoudbaar maken — een logisch vervolg op het stevige fundament dat we het afgelopen jaar hebben gelegd. ### [Bulthuis Trucks & Trailers: Een technische groothandel klaar voor de toekomst](https://elgentos.nl/cases/bulthuis) Ontdek hoe Bulthuis met Elgentos en Hyvä zijn webshop moderniseerde tot een razendsnelle, toekomstbestendige B2B e-commerce oplossing voor vrachtwagenonderdelen. Een technische groothandel klaar voor de toekomst Bulthuis Bulthuis is een technische groothandel in vrachtwagenonderdelen en aanverwante producten. Met meerdere vestigingen, partnershops en een B2B-klantenkring die gewend is aan snelheid en precisie, stelt dat hoge eisen aan een webshop. Toen we eind 2023 aan boord kwamen, troffen we een Magento 2-platform aan dat toe was aan een grondige modernisering. We zijn begonnen bij de basis: Magento upgraden van 2.4.6 naar 2.4.8, een CI/CD-pipeline inrichten en de deployment automatiseren. Geen glamoureus werk, maar essentieel voor alles wat daarna kwam. Een technische groothandel klaar voor de toekomst De oude Luma-frontend maakte plaats voor Hyvä, inclusief een volledig nieuwe checkout. Dat alleen al maakte de shop aanzienlijk sneller. Maar we gingen verder: Varnish-caching, Imgproxy voor afbeeldingen en gerichte performance-optimalisaties zorgden ervoor dat de webshop nu vlot laadt — ook bij een catalogus vol vrachtwagenonderdelen. Kentekensearch en slimme filters Een klant tikt een kenteken in en ziet direct welke onderdelen bij zijn voertuig passen. We bouwden een kentekenzoeker die gekoppeld is aan PKW-data, met uitgebreide filternavigatie via ElasticSuite. Zoeken voelt nu intuïtief, ook in een catalogus met duizenden onderdelen. Realtime prijzen en voorraad B2B-klanten zien hun eigen klantprijzen, realtime opgehaald uit het Oculus ERP-systeem. Geen verouderde importbestanden, maar actuele data — in de catalogus, in de winkelwagen én bij het afrekenen. Whitelabel voor partnershops Bulthuis bedient meerdere merken. We ontwikkelden een whitelabel-thema waarmee partnershops hun eigen look & feel krijgen, inclusief kleurconfiguratie en eigen logo's. Eén codebase, meerdere webshops — efficiënt en onderhoudbaar. Koppeling met Oculus ERP De connector met het Oculus ERP-systeem is de ruggengraat van de shop. Product- en orderdata synchroniseren continu. We bouwden een bulk-export, verbeterden de exception handling en zorgden ervoor dat de koppeling stabiel draait — ook bij grote volumes. Content via Prismic Landingspagina's, zoekresultaten en contentblokken worden beheerd via Prismic. Dat geeft het team van Bulthuis de vrijheid om content aan te passen zonder developer-tussenkomst. "Een team dat onze complexe B2B-processen begrijpt en technisch op hoog niveau levert." Ook zo'n snelle shop? Neem contact op! ### [Carnavalskleding Hyvä Implementatie | Snelle Shop](https://elgentos.nl/cases/carnavalskleding) Carnavalskleding.nl koos Magento 2 + Hyvä voor hun webshop. 16 orders/min met carnaval, 300k producten, ultrasnelle checkout. Carnavalskleding - Hyva implementatie Alles voor je feestje Carnavalskleding.nl is dé online bestemming voor feest- en carnavalskleding. Om de groeiende vraag naar hun producten te ondersteunen en de klantervaring te optimaliseren, werd besloten de webshop te vernieuwen. Hierbij werd gekozen voor een Magento 2-platform in combinatie met het moderne en snelle Hyvä thema. De oude webshop was niet verkeerd, maar Carnavalskleding.nl wilde graag naar de ‘next level’. We hebben aan een vrolijk ontwerp meegewerkt en de webshop gigantisch snel gemaakt, met heel betrouwbare informatie voor klanten over snelle bezorgtijden. 100% Snelheid 16 Orders per minuut met carnaval 300.000 Producten Technische samenwerking Bij Carnavalskleding.nl zijn ze zelf ook technisch onderlegd. Ze hadden al de hele back-end gemaakt. Het was voor ons heel prettig om hier samen op voort te bouwen en de front-end te verwezenlijken. Een eerste check als basis Als start van het project hebben we eerst een audit gedaan en de basis gecheckt door een statische analyse van de code te maken. Deze kwaliteitsslag zorgde al meteen voor een grote verbetering. Implementatie Hyvä Theme De keuze voor de frontend is bij ons altijd een no-brainer; we doen alleen maar Hyvä! We zijn groot fan van deze razendsnelle frontend. Waarom we kiezen voor Hyvä en welke voordelen het geeft lees je op onze speciale Hyvä pagina. Gestroomlijnde bezorging De webshop is nu heel snel en geeft zeer betrouwbare informatie over bezorging. Ongeveer 80% van alle bestelde artikelen is morgen in huis en bij de overige 20% kunnen ze ook accuraat aangeven wanneer het in huis is. Van Magento 1 naar Magento 2 De webshop van Carnavalskleding.nl draaide op Magento 1. Wij hebben alles een flinke update gegeven met Magento 2. Dankzij de overstap heeft Carnavalskleding.nl nu een uitgebreider en gebruiksvriendelijker platform. Hier kunnen ze jaren mee vooruit. Een betrouwbare Delivery Date-module We hebben een module gemaakt die op basis van allerlei variabelen heel accuraat aangeeft wanneer een klant een bestelling in huis heeft. Onze module houdt rekening met zaken als het merk, het gewicht, de prijs, de opslaglocatie en nog veel meer. Dit scheelt veel klantenservice vragen en is veel gebruiksvriendelijker voor de klant. Headless CMS integratie met Prismic en Magento Ook voor dit project hebben we gekozen om het headless CMS Prismic te implementeren voor de landingspagina's, de content pagina's, de USP's, de callouts en de blogs. Je kunt hier meer lezen over onze Prismic en Magento integratie. Razendsnelle React Components Voor de front-end hebben we gebruik gemaakt van meerdere React Components. Dit hebben we toegepast in het menu, in de zoekbalk en het winkelwagentje. Dit was maatwerk, omdat Magento normaal gesproken niet met React Components werkt. Nu is de webshop veel eenduidiger en makkelijker te onderhouden. Hyvä React Checkout Uitdaging Een van de belangrijkste uitdagingen was het optimaliseren van de checkout-ervaring. De standaard Magento checkout voldeed niet aan de hoge eisen van de klant, zowel qua snelheid als qua flexibiliteit in het design. Daarom werd besloten om een maatwerk checkout-oplossing te ontwikkelen. Oplossing De maatwerk checkout-oplossing werd ontwikkeld met behulp van React, GraphQL en Tailwind CSS. Deze technologieën stelden ons in staat een zeer flexibele en snelle checkout te bouwen, volledig aangepast aan de wensen van Carnavalskleding.nl. Belangrijkste kenmerken van de checkout-oplossing: 1. Gestapte design: De checkout is ontworpen met een uniek gestapt design, waardoor klanten in overzichtelijke stappen door het bestelproces worden geleid. Dit verhoogt de conversie en vermindert de kans op afhaken. 2. Performance: Door het gebruik van React en GraphQL wordt de checkout in realtime bijgewerkt zonder dat de volledige pagina hoeft te worden herladen. Dit resulteert in een soepele en snellere ervaring voor de klant. 3. Flexibiliteit: De checkout-oplossing is compatibel met Magento 2.3.4 en hoger, waardoor de webshop eenvoudig kan worden bijgewerkt naar nieuwe versies van Magento zonder verlies van functionaliteit. 4. Tailwind CSS: Met Tailwind CSS konden we snel en efficiënt een consistent en modern design implementeren dat naadloos aansluit bij de rest van de webshop. Voordelen en mogelijke nadelen Hoewel de maatwerk React checkout veel voordelen biedt, zoals verhoogde flexibiliteit en verbeterde prestaties, zijn er ook enkele aandachtspunten: - Onderhoud: De checkout vereist soms onderhoud, vooral wanneer externe partijen, zoals betalingsproviders, updates uitvoeren. Dit kan soms betekenen dat de React-code moet worden aangepast om compatibiliteit te waarborgen. - React kennis: Voor de implementatie en het onderhoud van deze checkout is kennis van React noodzakelijk. Dit maakt het minder toegankelijk voor teams zonder deze expertise. Alternatief: Hyvä Checkout Terwijl wij bezig waren met het ontwikkelen van deze maatwerkoplossing, heeft Hyvä een nieuwe checkout-oplossing geïntroduceerd: Hyvä Checkout. Deze is gebaseerd op Laravel Livewire en richt zich meer op Magento developers met een back-end focus. Dit biedt een robuust en minder onderhoudsintensief alternatief voor de React-gebaseerde oplossing, met name voor teams die minder ervaring hebben met front-end frameworks zoals React. Conclusie De nieuwe Carnavalskleding.nl webshop, gebouwd op Magento 2 met het Hyvä-thema en een maatwerk React checkout, is een succesverhaal op het gebied van e-commerce innovatie. Door het toepassen van moderne technologieën en een gestroomlijnd design is de klanttevredenheid significant verbeterd. Voor bedrijven die op zoek zijn naar een vergelijkbare oplossing, biedt deze case study waardevolle inzichten, maar ook belangrijke overwegingen bij de keuze tussen een maatwerkoplossing en een meer gestandaardiseerde, maar robuuste optie zoals Hyvä Checkout. Elgentos blijft zich inzetten voor het bieden van op maat gemaakte oplossingen die aansluiten bij de specifieke behoeften van onze klanten, waarbij we altijd oog houden voor de nieuwste ontwikkelingen en alternatieven in de markt. Ook nieuwsgierig geworden naar de mogelijkheden voor je Magento 2 shop? Let's get in touch Neem contact op ### [3D Configurator voor Campooz vouwwagen](https://elgentos.nl/cases/campooz-configurator) elgentos bouwde een 3D vouwwagenconfigurator voor de Campooz Lazy Jack — met Three.js, dynamische prijsberekening en Magento 2-koppeling. Een 3D configurator voor de Campooz Lazy Jack Een showcase: elgentos bouwde een interactieve 3D configurator voor de Campooz Lazy Jack vouwwagen, compleet met Magento 2-integratie. 3D vouwwagen configurator De Campooz Lazy Jack is een vouwwagen met een modulair systeem van luifels en uitbreidingen. Maar hoe laat je klanten al die mogelijkheden ervaren voordat ze kopen? Precies — met een 3D configurator. Dit project is geen echte klantcase, maar een showcase. We wilden laten zien wat er mogelijk is als je een interactieve 3D-productconfigurator koppelt aan een volwaardig e-commerceplatform. De Campooz Lazy Jack was daar het perfecte onderwerp voor: een product met genoeg configuratiemogelijkheden om het interessant te maken, en een doelgroep die baat heeft bij visuele configuratie. Bekijk de configurator hier: https://campooz.elgentos.io Uitdaging Een vouwwagen koop je niet elke dag. En als je er eentje koopt, wil je precies weten wat je krijgt. De Campooz Lazy Jack heeft vijf optionele uitbreidingen — van een Trekking Luifel tot een Camping Luifel en de Ugly Betty achteruitbreiding — elk met invloed op de totale afmetingen en prijs. Dat is lastig voor te stellen op basis van een productpagina met wat foto's. De uitdaging: een configurator bouwen die dit tastbaar maakt. Klanten moeten in een 3D-omgeving hun ideale opstelling kunnen samenstellen, direct de afmetingen zien, en het resultaat met één klik in hun winkelwagen kunnen plaatsen. We bouwden een op maat gemaakte 3D configurator met Three.js en Preact, gekoppeld aan Magento 2 via een custom connector-module. 3D-modelontwikkeling Het 3D-model van de Lazy Jack is in Blender opgebouwd en geëxporteerd als GLB-bestand. Elk onderdeel — de basistrailer, Trekking Luifel, Camping Luifel, Turbo Luifel, Extra Trekking Luifel en Ugly Betty — is als apart object gemodelleerd, zodat ze onafhankelijk aan- en uitgezet kunnen worden. Interactieve configuratie Via een overzichtelijk paneel selecteer je je gewenste uitbreidingen en kleurstelling. De 3D-weergave past zich direct aan. Inclusief maatlijnen die de exacte afmetingen tonen van jouw specifieke configuratie — van 9,2 meter breed voor het basismodel tot ruim 14 meter met alle uitbreidingen. Dynamische prijsberekening Het basismodel start vanaf €12.250. Elke toevoeging heeft een vaste meerprijs (bijvoorbeeld €750 voor de Camping Luifel of €474 voor de Ugly Betty). De totaalprijs wordt real-time berekend en getoond. Magento 2-integratie De echte kracht zit in de koppeling. We bouwden een Magento 2-connector die de configuratie — inclusief geselecteerde opties, berekende prijs en een screenshot van de 3D-configuratie — direct in de winkelwagen plaatst. De screenshot wordt meegenomen als productafbeelding in het bestelproces, zodat zowel klant als verkoper precies weten welke configuratie is besteld. Technische highlights Preact + Three.js — Lichtgewicht frontend die als widget op elke pagina ingebed kan worden GLB-modellen uit Blender — Geoptimaliseerde 3D-modellen met meerdere materiaaltexturen Dynamische maatlijnen — 9 voorgedefinieerde combinaties met exacte afmetingen in meters Server-side prijsberekening — Prijzen worden in Magento berekend, niet in de browser, ter voorkoming van manipulatie Screenshot-export — De configuratie wordt als PNG opgeslagen en meegegeven aan het orderproces Custom cart-integratie — Geconfigureerde opties worden als additional_options aan het quote-item gekoppeld en doorgetrokken naar de order Dag/nacht-simulatie — Een tijdslider past de belichting aan voor een realistische sfeerimpressie Het resultaat is een volledig werkende proof of concept die laat zien hoe een 3D configurator naadloos kan samenwerken met een e-commerceplatform. Van het draaien en configureren van een vouwwagen in de browser, tot het afrekenen in Magento met de exacte configuratie als orderregel — het hele traject werkt end-to-end. Dit project demonstreert onze aanpak: we combineren creativiteit met technische diepgang. Dezelfde architectuur — een standalone configurator-widget met een headless koppeling naar het e-commerceplatform — is toepasbaar op elk configureerbaar product, van meubels tot machines. Technologie en tools Three.js — 3D-rendering en scene management Preact — Lichtgewicht componentframework Blender — 3D-modellering en texture baking Magento 2 — E-commerceplatform met custom connector-module Webpack — Module bundling en build-optimalisatie Vercel — Hosting en deployment van de configurator Waarom kiezen voor ons? We bouwen 3D configuratoren niet omdat het een leuke technische exercitie is — al is het dat ook. We bouwen ze omdat ze aantoonbaar werken. Een goed gebouwde configurator versnelt het verkoopproces, vermindert retouren en geeft klanten vertrouwen in hun aankoop. Deze showcase hebben we gebouwd om te laten zien wat er kan. Geen vage concepten, maar werkende software die je kunt aanraken, draaien en bestellen. Heb je een product dat baat heeft bij visuele configuratie? Dan praten we graag verder. Ook zo'n gave 3D configurator? Neem contact op! ### [A4H-Tech](https://elgentos.nl/cases/a4h-tech) Met de onderdelen van A4H-Tech worden over de hele wereld Honda’s gepimpt. Wij hebben voor A4H-Tech hun webshop gepimpt. A4H-Tech Met de onderdelen van A4H-Tech worden over de hele wereld Honda’s gepimpt. A4H-Tech — voorheen All4Honda — levert performance-onderdelen voor Honda's en andere Japanse auto's aan enthousiastelingen over de hele wereld. Met meer dan 10.000 producten van 150+ leveranciers, klanten in heel Europa en een eigen Partfinder is dit een webshop waar snelheid en precisie tellen. We werken al jaren samen en ontwikkelen de shop continu door. Wereldwijd de juiste onderdelen, razendsnel gevonden Wat we hebben gedaan De samenwerking begon met een migratie van het oude platform naar Magento 2 en is sindsdien nooit gestopt. We bouwden de shop vanuit de basis op en hebben die stap voor stap doorontwikkeld — van Luma naar Hyvä, van Algolia naar ElasticSuite, en van een nationale naar een internationale webshop. Partfinder: het hart van de shop Onze eigen Partfinder maakt het mogelijk om alle 10.000+ producten aan specifieke automodellen te koppelen. Een klant selecteert merk, model en bouwjaar en ziet direct alleen de onderdelen die passen. Dat scheelt zoekwerk, voorkomt retourzendingen en heeft het aantal klantvragen drastisch verminderd. De Partfinder-data is geïndexeerd voor snelle filtering en werkt naadloos samen met de Varnish-cache. Van Algolia naar ElasticSuite De zoekfunctionaliteit draaide oorspronkelijk op Algolia, maar is overgestapt op ElasticSuite. Dat geeft meer controle, betere integratie met de Partfinder-filters en geen externe afhankelijkheid meer. Zoeken op artikelcode, productnaam of leverancierscode levert direct de juiste resultaten. Internationaal verkopen A4H-Tech verkoopt vanuit Nederland aan klanten in Duitsland, Spanje en de rest van Europa. We zetten een multi-store structuur op met aparte storeviews en vertalingen per taal. Zakelijke klanten zien prijzen exclusief btw, met automatische BTW-validatie in de checkout. Slim verzenden A4H-Tech verstuurt pakketjes in alle soorten en maten naar de hele wereld. We bouwden een algoritme dat per bestelling de optimale verpakking en de goedkoopste vervoerder berekent — op basis van gewicht, afmetingen en bestemming. Zakelijke accounts Naast particuliere klanten bedient A4H-Tech ook zakelijke klanten met eigen prijsafspraken. We implementeerden B2B-functionaliteit met exclusief btw-weergave, BTW-nummerbeheer en klantgroepspecifieke prijzen. Continue doorontwikkeling De shop wordt continu bijgehouden met Magento-upgrades (inmiddels op 2.4.8), een volledig herontworpen e-mailtemplate, Klaviyo voor e-mailmarketing, Channable voor productfeeds en Sentry voor error monitoring. Met CI/CD via GitLab met review-omgevingen zorgt ervoor dat we snel en veilig kunnen releasen. ### [Tops Filters: filteren zonder grenzen](https://elgentos.nl/cases/tops-filters) Tops is specialist in filters voor HVAC, industriële toepassingen en cleanrooms. Met klanten in Nederland, België, Duitsland en Oostenrijk — zowel zakelijk als particulier — groeide de webshop uit het jasje van de vorige oplossing. Filteren zonder grenzen Tops Filters Filteren zonder grenzen Tops (onderdeel van Interduct) is specialist in filters voor HVAC, industriële toepassingen en cleanrooms. Met klanten in Nederland, België, Duitsland en Oostenrijk — zowel zakelijk als particulier — groeide de webshop uit het jasje van de vorige oplossing. Eind 2023 gingen we aan de slag met een complete modernisering. Het project begon met een overname van een bestaande Magento 2-shop, gebouwd door een andere partij. We namen de codebase door, ruimden technische schuld op en richtten een solide CI/CD-pipeline in via GitLab — inclusief review-omgevingen voor elke merge request. De Luma-frontend was door de vorige partij vervangen door Hyvä, wat de shop direct merkbaar sneller maakte. Daarbovenop bouwden we een volledig gestylde Hyvä Checkout met adresvalidatie, BTW-controle voor zakelijke klanten en DPD-integratie voor verzending. Internationaal, maar lokaal relevant Tops bedient vier landen in meerdere talen. We zetten een multi-store structuur op met aparte storeviews voor NL, BE, DE en AT — elk met eigen taal, valuta, btw-regels en betaalmethoden. Een taalswitch in de header maakt wisselen moeiteloos. Betaalmethoden via Mollie worden per land correct getoond. Slimmer zoeken en filteren Met ElasticSuite als zoekmachine bouwden we geavanceerde filternavigatie, autocomplete met productafbeeldingen en zoekquery-normalisatie. Klanten zoeken op artikelcode, productnaam of leverancierscode en vinden direct het juiste filter — ook in een catalogus met duizenden producten. Productdata via Skwirrel De producten komen binnen via Skwirrel, de PIM-connector die de catalogus synchroniseert. We bouwden custom actions om grouped products uit te sluiten, leverancierscodes te importeren en producten automatisch aan de juiste categorieën en websites toe te wijzen. Meer dan een webshop Channable zorgt voor productfeeds naar externe kanalen. Amasty regelt orderexports. Returnless handelt retouren af. Fooman genereert PDF-facturen met de juiste BTW-percentages per land. En met Sentry en Oh Dear monitoren we de shop proactief. Continu verbeteren Met Varify draaien we A/B-tests om de conversie te optimaliseren. Via Google Tag Manager meten we het gedrag in de checkout en op de productpagina's. En met regelmatige Magento-upgrades — van 2.4.6 naar 2.4.8 — houden we het platform veilig en up-to-date. Ook zo'n snelle shop? Neem contact op! ### [Sudac: Snelle, Gebruiksvriendelijke Webshop Transformatie](https://elgentos.nl/cases/sudac) Ontdek hoe Sudac met Elgentos en Hyvä een razendsnelle, gebruiksvriendelijke en toekomstbestendige e-commerce platform realiseerde. Een vlotte en efficiënte online transitie Sudac Sudac is een toonaangevende kappersgroothandel die gespecialiseerd is in het leveren van hoogwaardige professionele kappersproducten aan salons en opleidingsinstituten. In een sector waar snelheid, gebruiksvriendelijkheid en een optimale online klantervaring cruciaal zijn, was het voor Sudac van essentieel belang om een snelle, betrouwbare en goed presterende webshop te hebben. Een vlotte en efficiënte online transitie De uitdaging De bestaande webshop van sudac voldeed niet meer aan de hoge verwachtingen van hun klanten en presteerde onvoldoende op het gebied van laadsnelheid en navigatiestructuur. Een trage website leidt tot een lagere klanttevredenheid en conversiedaling. Om deze uitdagingen aan te pakken en een toekomstbestendige e-commerce oplossing te realiseren, besloot sudac om over te stappen naar het hyvä-thema voor magento. Hiervoor was een ervaren en technisch sterke partner nodig die dit proces kon begeleiden en uitvoeren. De oplossing Elgentos werd ingeschakeld om de webshop van sudac te migreren naar hyvä. Dit proces omvatte: Volledige implementatie van het hyvä-theme, wat leidde tot drastische verbeteringen in snelheid en prestaties. Geoptimaliseerde navigatiestructuur, waardoor klanten sneller en eenvoudiger de juiste producten kunnen vinden. Oplossen van technische knelpunten en verbeteren van de algehele gebruikerservaring.  Ondanks enkele vertragingen tijdens de ontwikkeling bleef Elgentos Sudac proactief ondersteunen, met een oplossingsgerichte aanpak die zorgde voor een succesvolle livegang van de nieuwe webshop. Het resultaat Dankzij de implementatie van Hyvä heeft Sudac nu een webshop die aanzienlijk sneller en efficiënter functioneert. De belangrijkste verbeteringen zijn: Snellere laadtijden, wat zorgt voor een verbeterde winkelervaring en hogere conversiepercentages. Gebruiksvriendelijke en intuïtieve structuur, waardoor klanten eenvoudiger kunnen navigeren en producten sneller kunnen vinden. Een stabiele en toekomstbestendige website, klaar voor verdere groei en schaalbaarheid. De klant over de samenwerking met elgentos "De samenwerking tussen sudac en elgentos werd als zeer positief ervaren. Het team van Elgentos, met in het bijzonder Wouter, Anja, Wahid, Shweta en Roelof, heeft zich bewezen als deskundig, betrokken en probleemoplossend. Dankzij hun inzet en expertise heeft Sudac de webshop kunnen transformeren naar een platform dat volledig voldoet aan de moderne eisen van e-commerce." Met de implementatie van Hyvä heeft Sudac nu een razendsnelle en efficiënte webshop die voldoet aan de hoogste prestatie-eisen. Dit project laat zien hoe een strategische technologiekeuze, gecombineerd met een sterke samenwerking met een ervaren magento-partner als elgentos, kan resulteren in een optimale online winkelervaring en hogere klanttevredenheid. Elgentos blijft Sudac ondersteunen bij verdere digitale optimalisatie en groei in de e-commerce markt. Ook zo'n snelle shop? Neem contact op! ### [Haibu: Groothandel voor Hair & Beauty Professionals](https://elgentos.nl/cases/haibu) Ontdek Haibu, dé groothandel voor kappers en beauty professionals. Alles voor uw salon, van haarproducten tot beautybenodigdheden. Bekijk ons assortiment! Haibu Hyva implementatie & Optimalisatie Haibu is dé groothandel voor hair- & beauty professionals. Haibu zorgt er graag voor dat jij als professional alles in huis hebt om jouw klanten zo goed mogelijk te helpen. En als we zeggen dat je er alles vindt, dan bedoelen we ook álles. Je vindt er bekende merken zoals L'Oréal, Schwarzkopf en Goldwell, maar ook exclusievere merken zoals GLYNT, Mediceuticals, Shu Uemura, Alterna, SLA Paris, Elleure en Convex Master. Scherpe prijzen en meestal dezelfde dag nog verzonden. Haibu biedt jou een razendsnelle en betrouwbare levering en een ruim assortiment met meer dan 180 merken. En dat allemaal voor de scherpste prijs! Haibu is er voor de professional in het kappersvak die geniet van iedere dag in de salon. Tot in de puntjes verzorgd De oude webshop van Haibu was te traag en deed het niet altijd. Vanwege de instabiliteit durfden ze het ook niet aan om wijzigingen door te voeren. Wij hebben alles grondig onder handen genomen en een stabiele, snelle en efficiënte basis gecreëerd. Nu is er alle ruimte om met een gerust hart door te ontwikkelen. Een veel snellere webshop Door problemen met het menu op te lossen, hebben we de webshop maar liefst 10 keer zo snel kunnen maken. Waar de checkout vroeger zo’n 30 seconden duurde, is het nu na ongeveer 10 seconden al klaar. Ook kunnen ze nu bijna 10 keer zoveel traffic aan. Het heeft meteen gezorgd voor een hogere omzet. Zero downtime policy Als we een wijziging doorvoeren en live zetten, dan blijft de website gewoon online. Wij hebben namelijk een zero downtime policy. Vooraf zijn de wijzigingen al uitvoerig getest. Blijkt de wijziging niet goed te werken, dan kunnen we de oude situatie zo weer terug zetten. Minder kosten voor hosting We spitten de code van een webshop altijd grondig door. Deze keer vonden we een fout die zorgde voor een matige performance en onnodig gebruik van webruimte. We hebben de fout in de code opgelost en de hostingkosten van Haibu een factor 3 weten te verlagen. Een vlekkeloze overgang We hebben zo’n half jaar toegewerkt naar de overgang van Kapperskorting.nl naar Haibu. Dat maakte de daadwerkelijke overgang best spannend voor de klant. Met een druk op de knop in de vroege ochtend hebben we alles vlekkeloos gelanceerd. Dat zorgt voor extra vertrouwen in de samenwerking. Headless CMS integratie met Prismic en Magento Ook voor dit project hebben we gekozen om het headless CMS Prismic te implementeren voor de landingspagina's, de content pagina's, de USP's, de callouts en de blogs. Je kunt hier meer lezen over onze Prismic en Magento integratie. Continuous Integration (CI) en Continuous Delivery (CD) Bij dit project hebben we Continuous Integration (CI) en Continuous Delivery (CD) toegepast. Hiermee kunnen we processen stroomlijnen en automatiseren. Met CI/CD zijn we in staat om code te contribueren en als ontwikkelaars samen te werken via een gedeelde codebase. Het resultaat: we kunnen de code sneller en foutlozer leveren en toepassen. Testen in disposable environments Om nieuwe functies te testen, maken we gebruik van disposable testing environments. Deze werkwijze zorgt voor een hogere productiviteit en stelt klanten in staat om wijzigingen sneller te testen, te beoordelen en te herzien. Als een wijziging succesvol is, passen we ‘m toe in de echte webshop. Hyva Uiteraard is deze shop, zoals alle shops die wij beheren, gebouwd in Hyva. Hyva brengt ontzettend veel voor Haibu. Direct bij de launch van het thema is de conversie al gestegen omdat er een grote snelheidswinst behaald is. Echter is het belangrijk te weten dat na de bouw en lancering van de shop de kracht van Hyva pas echt naar boven drijft. Het bouwen van nieuwe features en het implementeren van kleine veranderdingen die we krijgen uit de resultaten van abtests kost een stuk minder tijd. Op deze manier blijf je jaren lang profiteren van de overstap naar het Hyva thema. ### [3D configurator voor TUP's vergaderpod Unicorn](https://elgentos.nl/cases/tup-configurator) Ontdek TUP's 3D configurator voor flexibele overlegruimtes. Pas de Unicorn aan met AI-kleurensuggesties en bekijk realtime resultaten. Een 3D configurator voor TUP elgentos ontwikkelde een 3D configurator voor TUP's 4-persoons overlegruimte, de Unicorn. Vergaderpod helemaal naar je zin! TUP ontwikkelt innovatieve en flexibele werkplekoplossingen, waaronder modulaire 1, 2 en 4-persoons overlegruimtes. Hun missie is om functionele en esthetisch aantrekkelijke werkplekken te bieden zonder dat organisaties daarvoor een ingrijpende verbouwing van hun kantoor hoeven te doen. De 4-persoons Unicorn TUP is een ruime kantoor-pod waarin je tot en met 4 personen een overleg kan voeren en je werk kan presenteren door een scherm toe te voegen. of gebruik hem als kantoor door in plaats van de banken en tafel een bureau met bureaustoel te plaatsen. Uitdaging TUP wilde klanten in staat stellen om hun 4-persoons overlegruimte volledig naar wens te personaliseren. Dit omvatte onder andere het kiezen van kleuren en het integreren van bedrijfsidentiteit. Het doel was om potentiële klanten een realistisch beeld te geven van hun toekomstige overlegruimte, nog voordat de productie start. Onze oplossing We ontwikkelden een op maat gemaakte 3D configurator, gebouwd met Three.js, waarmee geïnteresseerden eenvoudig de kleuren van hun TUP Unicorn kunnen selecteren en visualiseren. 3D-modelontwikkeling: In nauwe samenwerking met TUP hebben we het 3D-model van de overlegruimte tot in detail gefinetuned, zodat elk aspect van de ruimte correct en visueel aantrekkelijk werd weergegeven. Three.js UI-integratie: We hebben een gebruiksvriendelijke interface toegevoegd waarmee klanten direct kleuren kunnen kiezen en wijzigingen in real-time kunnen bekijken. AI-powered kleurenpaletten: Uniek aan deze configurator is de AI-functionaliteit die we hebben toegevoegd. Klanten kunnen hun bedrijfslogo uploaden, waarna onze AI-oplossing automatisch vijf kleurpaletten voorstelt die perfect aansluiten bij hun huisstijl. Platform onafhankelijk: De configurator is platform-onafhankelijk gebouwd. De applicatie kan los draaien en door het toevoegen van Javascript events kan de externe ontwikkelaar de configurator koppelen aan bijvoorbeeld een offerte traject in de bestaande website. Resultaat De 3D configurator stelt TUP-klanten in staat om met vertrouwen beslissingen te nemen over hun overlegruimte, waardoor het verkoopproces wordt versneld en klanttevredenheid wordt verhoogd. Dankzij de integratie van AI en een intuïtieve interface biedt deze tool een unieke en gepersonaliseerde ervaring. Wij waren zo enthousiast dat we zelf ook een TUP Unicorn hebben geconfigureerd en besteld! Technologie en Tools ThreeJS voor de 3D-rendering en UI-componenten AI-algoritme voor het genereren van kleurpaletten Blender voor iteratief modelontwerp met TUP Waarom kiezen voor ons? Ons team combineert technische expertise met een diepgaand begrip van klantbehoeften. Voor TUP leverden we niet alleen een technische oplossing, maar ook een visueel aantrekkelijke en gebruiksvriendelijke tool die waarde toevoegt aan hun klantreis. Bekijk de TUP Unicorn configurator hier! Ook zo'n gave 3D configurator? Neem contact op! ### [EFKA](https://elgentos.nl/cases/efka) EFKA De specialist in aluminium frames EFKA produceert aluminium profielen voor het maken van (LED) kozijnen. Zowel verlicht als onverlicht en in elke vorm. Het bedrijf werd in 1888 opgericht als groothandel in houten kozijnen, opererend onder de naam 'Foppe Klijnstra & Zn', later Vadia. In 2009 zijn ze begonnen met de productie van aluminium textielframes en lichtbakken. Binnen tien jaar werden ze Europees marktleider. Gevestigd in Drachten hebben zij ruim 350.000 meter aluminium op voorraad. De productiefaciliteit bestaat uit zes dubbelverstekzagen, een CNC-machine en een buigmachine, waardoor ze ruim 1.000 frames per dag kunnen produceren. EFKA stond voor een aanzienlijke operationele uitdaging. Met hun uitgebreide productaanbod werd het vermijden van downtime en het efficiënt beheren van de talrijke configuraties een hardnekkig probleem. De voornaamste moeilijkheid lag in het creëren van een oplossing die niet alleen de klanten blij maakte, maar ook het beheerproces voor de werknemers vereenvoudigde. 15% toename in bestellingen 34% minder winkelwagens verlaten 22% minder klantenservice verzoeken “Wij hebben de samenwerking met Elgentos als zeer prettig ervaren. Van begin tot eind is Elgentos een stabiele factor gebleken. De maatwerk configurator die ze voor ons gebouwd hebben is eenvoudig van opzet, waardoor we zelfs complexe configuraties snel kunnen maken. Bij complexe vraagstukken of uitdagingen kwam Elgentos altijd snel met een passende oplossing, waardoor we geen onnodige vertraging opliepen. Een paar maanden voor de oplevering van de webshop heeft Elgentos nog een tandje bijgeschakeld om toch de gewenste lanceringsdatum te halen en dat is gelukt. Al met al zijn wij zeer tevreden over Elgentos als partij die onze webshop en configurator heeft gebouwd. De keuze voor Hyvä hebben we al vroeg gemaakt, het was voor ons een no-brainer. We vertrouwden Elgentos toen ze ons vertelden dat het een game changer is in de Magento industrie en we willen voorop lopen met de technologie om de concurrentie voor te blijven. Hyvä is een goede keuze gebleken en biedt snelheid in zowel ontwikkeling als prestaties.” - Marco Bosgraaf, Business development EFKA De overstap naar Magento 2 en Hyvä De vorige winkel was sterk verouderd en werd niet meer ondersteund. Aangezien alles wordt besteld via de storefront of via een API, was het uiterst belangrijk om te migreren naar een nieuwe shop om downtime in de toekomst te voorkomen. De keuze voor Hyvä was snel gemaakt. Als agentschap hebben we al heel wat thema's en kassa's van Hyvä geïmplementeerd. De resultaten waren niet alleen geweldig, maar ze waren ook een genot om te bouwen in vergelijking met de oude Magento 2 Luma frontend. Vanaf vandaag worden alle nieuwe shops gebouwd met Hyvä, vanwege de prestaties, hun conformiteit met Google PageSpeed, Lighthouse en Core Web Vitals en de geweldige ontwikkelaarservaring. Belangrijkste uitdagingen Omdat EFKA's core business bestaat uit het produceren van profielen in elke maat, vorm en kleur, was de belangrijkste uitdaging naast het vermijden van downtime het vinden van een oplossing die alle beschikbare mogelijkheden aankan op een manier die niet alleen prettig is voor de klant, maar ook voor de medewerkers die alle mogelijke configuraties moeten beheren. Om ervoor te zorgen dat klanten frames naar wens kunnen configureren, ontwikkelden we een robuuste productconfigurator in React in combinatie met een Laravel backend. De klant kan alle mogelijke configuraties voor een specifiek product beheren. Met het gebruik van Hyvä en de achterliggende technologie is het een koud kunstje om de configurator in een Magento shop te implementeren. Andere uitdagingen die we tegenkwamen tijdens de ontwikkeling waren de vele uitzonderingen die de klant bleek te hebben. Er zijn uitzonderingen op producten, klanten, verzendmethoden en leverdata. Veel van deze uitzonderingen kwamen voor bij het afrekenen. Met Hyvä en de technologie die Hyvä gebruikt in de checkout konden we deze uitzonderingen eenvoudig implementeren terwijl de checkout snel en stabiel bleef. De oplossing Om aan de complexe eisen van EFKA te voldoen, ontwikkelden we een robuuste configurator met React voor de frontend en Laravel voor de backend. Deze oplossing werd ontworpen voor een naadloze integratie met hun bestaande Magento-winkel, waarbij gebruik werd gemaakt van de Hyvä-technologie voor een soepele en efficiënte gebruikerservaring. 1. Geavanceerde productconfigurator De configurator stelde klanten in staat om frames te personaliseren op basis van hun voorkeuren. Door React te gebruiken, zorgden we voor een interactieve en responsieve gebruikersinterface, waardoor het aanpassingsproces intuïtief en plezierig was. De Laravel backend zorgde voor een stabiele en schaalbare basis, waardoor EFKA alle mogelijke configuraties moeiteloos kon beheren. “De introductie van de ingebouwde adviesfunctie in de configurator op onze nieuwe Hyvä-winkel heeft het grootste verschil gemaakt. Klanten weten nu precies welke samenstelling ze nodig hebben voor hun textielframe en kunnen deze eenvoudig en snel online berekenen en bestellen. Dit heeft niet alleen geleid tot een verbeterde gebruikerservaring, maar ook tot een toename van het aantal zelf ingevoerde bestellingen via de webshop. Sinds de lancering van de nieuwe webshop is dit aantal al met zo'n 15% gestegen.” - Derian Reekers, marketeer bij EFKA 2. Naadloze integratie met Magento De integratie van de configurator in de Magento shop van EFKA was eenvoudig dankzij de technologie van Hyvä. Deze integratie zorgde ervoor dat de uitgebreide configuratieopties correct en consistent werden weergegeven, wat de algehele winkelervaring verbeterde. Het gebruik van Hyvä droeg ook bij aan een snel en stabiel afrekenproces, wat essentieel is voor het verminderen van het aantal afgebroken aankopen. De integratie leidde tot 34% minder afgebroken aankopen, waardoor de conversie van EFKA aanzienlijk steeg. 3. Efficiënt omgaan met uitzonderingen in de orderstroom EFKA's diverse productassortiment ging gepaard met talloze uitzonderingen met betrekking tot producten, klanten, verzendmethoden en leveringsdata, met name tijdens het afrekenproces. Hyvä's technologie stelde ons in staat om deze uitzonderingen naadloos aan te pakken, waardoor een snelle en stabiele checkout ervaring werd gegarandeerd. Deze flexibiliteit bleek cruciaal bij het beheren van de complexe vereisten zonder afbreuk te doen aan de prestaties. Na de implementatie daalde het aantal vragen van de klantenservice met 22%, wat duidt op een soepeler afrekenproces en minder problemen. Terugblik De implementatie van de configurator en de integratie met Magento zorgde voor opmerkelijke resultaten voor EFKA. Het bedrijf zag de omzet stijgen, de conversie toenemen en het aantal verzoeken om klantenservice aanzienlijk dalen. Deze verbeteringen verhoogden niet alleen de klanttevredenheid, maar stroomlijnden ook de interne processen, waardoor EFKA zich kon richten op verdere innovatie en groei. Belangrijkste tips Het hebben van een goed doordacht plan aan het begin van het project, maar flexibel zijn in het aanpassen tijdens het ontwikkelingsproces is net zo belangrijk. Tijdens een ontwikkeltijd van een aantal maanden loop je onvermijdelijk tegen veranderingen in de business aan die technische aanpassingen noodzakelijk maken. Korte communicatielijnen door middel van persoonlijke vergaderingen en de mogelijkheid om snel vragen te stellen via Slack hebben de ontwikkelingstijd aanzienlijk verkort. De totale doorlooptijd voor de implementatie van Hyvä was ongeveer 3 maanden, en nog eens een maand voor de implementatie van Hyvä Checkout. Het totale project duurde iets langer dan een jaar, omdat we van een op maat gemaakt systeem naar Magento zijn overgestapt en ook een aanzienlijk deel van de interne processen opnieuw hebben ontworpen. “We hebben erg genoten van de samenwerking met het EFKA team - ze hebben een enorme diepgaande kennis van hun product en markt en zijn zeer detailgericht. Dankzij de technische bekwaamheid van de klant konden we efficiënt communiceren via vergaderingen en Slack en dagelijks itereren om deze Hyvä-winkel te bouwen.” - Peter Jaap Blaakmeer, CTO elgentos Ook nieuwsgierig geworden naar de mogelijkheden voor je Magento 2 shop? Lets get in touch Neem contact op Gerelateerde blogs en cases ### [Limburgia](https://elgentos.nl/cases/limburgia) Van Limburgia Vlaai naar Patisserie Limburgia Limburgia Limburgia heeft besloten een naamsverandering te ondergaan van Limburgia Vlaai naar Patisserie Limburgia. Hierbij hoort een update van de huisstijl en een nieuw design voor de webshop. De huisstijl is door een extern bureau ontwikkeld en de redesign van de shop mochten wij voor onze rekening nemen! De bestaande Magento 2 shop draaide op een third-party thema, wat de nodige problemen veroorzaakte. Nieuwe features waren lastig in te bouwen vanwege de slechte kwaliteit van het thema en Magento upgrades kostten daarom veel tijd om door te voeren. 100% Performance score op mobiel en desktop 0.5s Laadtijd 100% SEO-score We’re vlaaiing high Limburgia werd in 1901 opgericht en is in 1954 overgenomen door de huidige eigenaar, de familie De Haas. Een trots en prachtig 120 jaar oud familiebedrijf! Limburgia heeft besloten een naamsverandering te ondergaan van Limburgia Vlaai naar Patisserie Limburgia. Hierbij hoort een update van de huisstijl en een nieuw design voor de webshop. De huisstijl is door een extern bureau ontwikkeld en de redesign van de shop mochten wij voor onze rekening nemen! Doelen De bestaande Magento 2 shop draaide op een third-party thema, wat de nodige problemen veroorzaakte. Nieuwe features waren lastig in te bouwen vanwege de slechte kwaliteit van het thema en Magento upgrades kostten daarom veel tijd om door te voeren. Met de aankondiging van Google’s Core Web Vitals werd bovendien duidelijk dat dit de grootste aandacht moest krijgen om de hoge organische Google posities op belangrijke keywords te behouden. De drie belangrijkste metrics voor Core Web Vitals zijn de volgende drie: Largest Contentful Paint First Input Delay Cumulative Layout Shift Met veel third-party thema’s is het zeer lastig om deze waardes in de groene zone te krijgen. Ook al lukt het vandaag, het is geen schaalbare situatie meer. Bij een aanpassing van Google, moet je mogelijk weer door alle hoepels heen springen om net aan de Web Vitals te voldoen. Ook Magento 2’s eigen Luma thema komt niet in de buurt van wat Google als eis stelt vanaf mei 2021. Ons doel was om Lighthouse-scores van boven de 95 punten op mobiel te halen. Dus concreet hebben we 3 doelen geformuleerd: Core web vitals doorstaan (met een oplossing voor de lange termijn) Performance scores op desktop EN mobile van boven de 95 Betere development flow waardoor er kosten op de lange termijn bespaard worden Hyvä We hebben daarom ervoor gekozen om het redesign van Limburgia te bouwen op Hyvä, een Magento theme die compleet vanaf de grond af aan is opgebouwd om hoge scores op de Core Web Vitals te behalen. Hyvä stelde ons niet alleen in staat om deze hoge scores te behalen, maar ook om de complexiteit van de frontend sterk te verminderen, waardoor niet alleen de ontwikkelsnelheid omhoog gaat maar, geheel niet onbelangrijk, het werkplezier van de developers ook! Door Hyvä is de webshop makkelijker te onderhouden en kunnen nieuwe features sneller worden toegevoegd. Het leent zich dus perfect voor de grotere webshops, want hoe meer maatwerk, hoe meer uren bespaard kunnen worden met Hyvä ten opzichte van andere Magento themes. Headless CMS integratie met Prismic en Magento Ook voor dit project hebben we gekozen om het headless CMS Prismic te implementeren voor de landingspagina's, de content pagina's, de USP's, de callouts en de blogs. Je kunt hier meer lezen over onze Prismic en Magento integratie. Behaalde resultaten Lastig bij deze vergelijkingen is altijd de gebruikte testomgeving. In het verleden zijn wij wel eens de fout in gegaan om bij een PWA de computer van de developer te gebruiken & het internet op ons kantoor als benchmark. Maar elke computer en elke internetverbinding is anders. Op het moment van schrijven kunnen we ook niet de field data gebruiken van Google (die strikt gezien het meest objectief is), want dit is op basis van 28 dagen, en de nieuwe shop staat pas een paar dagen live. Gelukkig heeft Chrome hier een oplossing voor. Door gebruik te maken van network & CPU throttling wordt een standaard computer- en internetverbinding gesimuleerd. Voor deze tests hebben we de snelheid van de internetverbinding gezet op Fast 3G. We gaan er van uit dat een groot gedeelte van de klanten toegang heeft tot 4G of sneller (WiFi), dus zou testen op 3G prima moeten zijn. De CPU van de laptop hebben we op 4x langzamer gezet dan gemiddeld. Dan krijgen we op desktop de volgende score: En de volgende score op mobile: Nieuwe functionaliteiten Aangezien we toch aan het bouwen waren met een nieuwe frontend is er op de achtergrond ook veel werk verricht. De Magento installatie is geupgrade, ongebruikte modules zijn verwijderd en de installatie is in z’n geheel opgeschoond. Het is nu voor de klant ook mogelijk om de individuele winkel-pagina van de ruim 40 winkels aan te passen, alsmede de openingstijden van die winkels. In de checkout kan namelijk worden gekozen voor een winkel die de levering doet, of waar de bestelling opgehaald kan worden. De dichtstbijzijndste geopende winkel wordt op basis van de ingevoerde postcode voorgeselecteerd. Geoptimaliseerde checkout Voor de checkout is besloten de standaard checkout van Magento te vervangen door een React-gebaseerde checkout. Deze geeft ons meer flexibiliteit in het toevoegen van functionaliteit, zoals de winkelselectie en de bezorg/afhaaldatum functionaliteit. Daarnaast is deze checkout vele malen sneller dan de standaard Magento checkout. Verbeterde middleware koppeling Limburgia levert niet alleen aan consumenten, maar ook aan andere bedrijven door middel van een aantal B2B shops. De bestellingen van alle shops en van de kassa’s in de fysieke winkels worden samengevoegd in een middleware systeem, dat op zijn beurt de bestellingen doorzet naar het ERP in de bakkerij. Wij hebben deze middleware koppeling geschikt gemaakt voor Magento 2 en we hebben synchronisatie-functionaliteiten toegevoegd om de systemen beter met elkaar in de pas te laten lopen. Verhuizing naar Hypernode Om de uptime en de snelheid van de shop veilig te stellen, hebben we ervoor gekozen om de webshop te verhuizen naar het Hypernode platform. Wij hosten al vele jaren naar volle tevredenheid al onze klanten bij Hypernode en ook deze verhuizing ging verbazingwekkend soepel. Gerelateerde blogs en cases ## Contact - Website: https://elgentos.nl - Email: info@elgentos.nl - Telefoon: +31 50 700 15 15 - Adres: Hereweg 120-4, 9725AK Groningen, Nederland - LinkedIn: https://www.linkedin.com/company/elgentos/ - GitHub: https://github.com/elgentos/