Shopify Functions erklärt: eigene Logik im Backend
Shopify Functions geben dir Kontrolle über Checkout-Logik, Rabatte und Versand, ohne Shopify-Code anfassen zu müssen. Wie das funktioniert und wann es sich lohnt.
Shopify ist als SaaS-Plattform bekannt für das, was du nicht anfassen kannst: den Kern des Systems. Lange Zeit bedeutete das, du akzeptierst die Checkout-Logik, wie sie ist. Shopify Functions drehen dieses Prinzip teilweise um. Du kannst eigene Geschäftslogik in den Kern einbauen, also dort, wo Rabatte berechnet, Versandoptionen ausgefiltert und Zahlungsmethoden angezeigt werden. Das ist kein kleiner Unterschied.
Was sind Shopify Functions genau?
Shopify Functions sind kleine, isolierte Code-Bausteine, die im Shopify-Backend laufen. Sie greifen in definierte Punkte des Bestellprozesses ein und berechnen ein Ergebnis, zum Beispiel: Welche Rabatte gelten für diesen Warenkorb? Welche Versandoptionen soll der Kunde sehen?
Technisch laufen Functions als WebAssembly-Module (Wasm) auf Shopifys Infrastruktur. Das hat zwei wichtige Konsequenzen. Erstens bist du bei der Programmiersprache flexibel: Rust, JavaScript/TypeScript und andere Sprachen, die nach WebAssembly kompilierbar sind, funktionieren. Zweitens sind Ausführungszeit und Speicher streng begrenzt. Eine Function muss in Millisekunden fertig sein. Das ist kein Bug, sondern Absicht: Shopify will sicherstellen, dass dein Code den Checkout für alle Kunden nicht verlangsamt.
Functions sind keine Apps, die neben dem Shop laufen. Sie werden im Kontext einer Custom App oder einer Public App ausgeliefert und über das Shopify Admin registriert.
Welche Function-Typen gibt es?
Shopify stellt mehrere klar definierte Einstiegspunkte bereit, in die Functions eingreifen können. Stand 2026 sind das unter anderem:
- Discount Functions: Automatische und code-basierte Rabatte mit eigener Logik. Du kannst Staffelrabatte, Bündelpreise oder kundengruppen-spezifische Nachlässe implementieren, die das native Discount-System nicht abbildet.
- Shipping Discount Functions: Rabatte auf Versandkosten, separat steuerbar.
- Delivery Customization: Versandoptionen umbenennen, ausblenden oder umsortieren, abhängig vom Warenkorb, der Lieferadresse oder der Kundengruppe.
- Payment Customization: Zahlungsmethoden ein- oder ausblenden, umordnen, umbenennen. Nützlich etwa, um Rechnungskauf nur für B2B-Kunden zu zeigen oder Kreditkartenzahlung bei sehr kleinen Bestellwerten auszublenden.
- Cart Transform: Den Warenkorb umschreiben, bevor er dem Kunden angezeigt wird. Das ist die Basis für Produktbundles, die im Hintergrund aus Einzelpositionen zusammengesetzt werden.
- Order Routing Location Rule: Steuert, aus welchem Lager oder Standort eine Bestellung erfüllt wird.
Jeder dieser Typen hat ein eigenes GraphQL-Schema, mit dem die Function Eingabedaten liest und ein strukturiertes Ergebnis zurückgibt.
Der Unterschied zu Shopify Scripts
Wer mit Shopify Plus älter ist, kennt Shopify Scripts. Das war der Vorgänger: Ruby-Snippets, die auf Shopifys Script-Editor-Plattform liefen, ausschließlich für Plus-Merchants, mit erheblichen Einschränkungen bei Lesbarkeit und Testbarkeit.
Shopify Functions ersetzen Scripts schrittweise und sind in mehrerer Hinsicht besser. Sie sind nicht auf Plus beschränkt, auch wenn manche Function-Typen bestimmte Plan-Stufen voraussetzen. Sie laufen in echten Programmiersprachen, können lokal getestet werden und sind über die normale App-Infrastruktur deployt. Shopify hat eine Migrationshilfe veröffentlicht; wer noch Scripts nutzt, sollte den Zeitplan für die Abschaltung im Blick behalten.
Typische Praxisfälle aus der Agenturperspektive
In der täglichen Arbeit kommen Functions vor allem in drei Szenarien vor:
Komplexe Rabattlogik. Ein Händler will seinen B2B-Kunden automatisch Staffelrabatte geben, die sich aus Kundentag, Produktkategorie und Mindestmenge ergeben. Das lässt sich mit nativen Discount-Codes nicht abbilden. Eine Discount Function berechnet das Ergebnis in Echtzeit, ohne externe API-Aufrufe, und ohne dass der Händler manuell Codes anlegen muss. Pro Shop sind bis zu 25 aktive Discount Functions möglich.
Versandsteuerung. Ein Händler verkauft Gefahrgut und Normalartikel im gleichen Shop. Bei gemischten Warenkörben sollen bestimmte Versandoptionen ausgeblendet werden. Eine Delivery Customization Function liest die Produkttypen im Warenkorb und filtert die Optionen entsprechend. Das war früher nur über Workarounds in der Checkout-Extension oder komplett außerhalb von Shopify lösbar.
Produktbundles. Mit Cart Transform lassen sich Warenkörbe so umschreiben, dass mehrere Einzelprodukte als ein Bundle-Posten erscheinen, inklusive eigenem Preis und Darstellung. Das ermöglicht Bundles, die tatsächlich auf Produktebene korrekt im Lager abgebucht werden.
Eine detaillierte Einordnung, was über Functions hinaus am Checkout anpassbar ist, bietet der Artikel zu Shopify Checkout Extensibility.
Was Functions nicht können
Functions sind kein Allheilmittel. Einige Grenzen solltest du kennen, bevor du planst:
Sie können keine externen API-Aufrufe machen. Die gesamte Logik muss mit den Eingabedaten auskommen, die Shopify übergibt. Wenn du Lagerbestände, Kundenhistorie oder externe Preise in Echtzeit brauchst, musst du diese Daten über Metafelder oder App-eigene Metadaten vorher einspeisen.
Die Ausführungszeit ist hart begrenzt. Rechenintensive Algorithmen, die in einer normalen App-Umgebung kein Problem wären, können hier an Grenzen stoßen. Das betrifft vor allem sehr komplexe Preisstaffeln mit vielen Bedingungen.
Testing erfordert Disziplin. Functions lokal zu testen ist möglich, aber der Workflow ist aufwendiger als bei klassischer App-Entwicklung. Shopify stellt Unit-Test-Frameworks bereit, aber die Testdaten müssen sorgfältig gepflegt werden.
Und: Nicht jede Function ist auf jedem Plan verfügbar. Manche Typen setzen Shopify Plus voraus. Prüfe das vor der Konzeption.
Wer wissen will, wie Functions in das größere Bild von Liquid-Templates, Apps und Erweiterungen passt, findet eine kompakte Übersicht in Shopify erweitern: Liquid, Apps, Functions.
Entwicklung und Deployment
Functions werden über die Shopify CLI entwickelt. Der Workflow ist eng an die App-Entwicklung gebunden: Du erstellst eine App, registrierst darin Functions, entwickelst lokal und deployst über shopify app deploy. Die Functions sind nach dem Deployment im Shopify Admin sichtbar und können dort aktiviert und konfiguriert werden.
Für TypeScript-Projekte bietet Shopify Starter-Templates mit vorgenerierten GraphQL-Typen. Das reduziert Fehler beim Zugriff auf Eingabedaten erheblich. Wer Rust bevorzugt, hat bei der Performance mehr Spielraum, muss aber mehr Boilerplate selbst pflegen.
Ein wichtiger Punkt für Shops mit mehreren Umgebungen: Functions sind an eine App gebunden. Wenn du Staging und Production trennen willst, brauchst du entweder zwei App-Registrierungen oder arbeitest mit Feature-Flags in der Function-Logik selbst.
Häufige Fragen
Brauche ich Shopify Plus für Functions?
Nicht grundsätzlich. Viele Function-Typen, darunter Discount Functions und Cart Transform, funktionieren auch auf niedrigeren Plan-Stufen. Einzelne Typen, vor allem bestimmte Checkout-Anpassungen, setzen Shopify Plus voraus. Prüfe das für deinen konkreten Anwendungsfall in der aktuellen Shopify-Dokumentation. Die Shopify-Plan-Übersicht hilft bei der Einordnung.
Sind Functions schwerer zu warten als normale App-Code?
Functions bringen einen anderen Wartungsaufwand mit sich: Das GraphQL-Schema ändert sich mit API-Versionen. Nach einem Versionswechsel musst du prüfen, ob deine Eingabedaten noch korrekt gelesen werden. Shopify stellt dafür einen function schema-Befehl bereit, der das aktuelle Schema generiert. Insgesamt ist die Wartung gut handhabbar, wenn Functions von Anfang an mit Tests ausgeliefert werden.
Kann ich Functions selbst schreiben oder brauche ich eine Agentur?
Wenn du JavaScript oder TypeScript kennst und mit der Shopify CLI vertraut bist, ist ein einfacher Discount-Use-Case selbst machbar. Sobald die Logik komplexer wird, du mehrere Function-Typen kombinierst oder die Function Teil eines größeren App-Setups ist, lohnt sich Unterstützung. Fehler in Functions, die falsch konfiguriert sind, können dazu führen, dass Rabatte für alle Kunden falsch berechnet werden.
Wie unterscheiden sich Functions von Checkout Extensions?
Functions sind für Logik zuständig: Was wird berechnet, was wird ausgeblendet, was kostet was. Checkout Extensions sind für die Darstellung: Welche UI-Elemente erscheinen im Checkout, wo, mit welchem Inhalt. Beide Konzepte ergänzen sich und werden oft zusammen eingesetzt.
Wenn du überlegst, Functions für deinen Shop einzusetzen, zum Beispiel für eigene Rabattregeln, Versandlogik oder Produktbundles, lohnt sich zunächst ein klares Anforderungsprofil. Viele Anforderungen lassen sich mit Functions lösen, einige besser mit Apps, und manche sollten im ERP oder PIM gelöst werden, bevor die Daten in den Shop kommen. Unsere Shopify App-Entwicklung umfasst auch Function-basierte Lösungen, von der Konzeption bis zum laufenden Betrieb.
Shopify-Projekt oder Frage im Kopf?
Wir bauen, optimieren und betreuen Shopify-Shops, mit echter Backend- und Schnittstellen-Kompetenz. Lass uns auf Augenhöhe sprechen.
Mehr aus dem Shopify Wiki
Shopify Markets: international verkaufen mit Shopify
Mit Shopify Markets verkaufst du in mehrere Länder, Sprachen und Währungen aus einem Shop. Was Markets kann, wo die Grenzen liegen und worauf du achten solltest.
Lesen TechnikShopify erweitern: Liquid, Apps und Functions verständlich erklärt
Wie sich Shopify erweitern lässt: Liquid-Themes, Apps aus dem Store, Custom Apps, Shopify Functions und Checkout Extensions. Wann du was brauchst.
Lesen TechnikShopify Online Store 2.0: das Theme-System erklärt
Was steckt hinter Shopify Online Store 2.0? Du lernst, wie JSON-Templates, Sections und Blocks dein Theme flexibler machen und wann ein Upgrade Sinn ergibt.
Lesen