Shopify Plus B2B + Lexify — Rechnungs-Email-Routing pro Company
Wann triggert dieses Pattern
Kunde nutzt Shopify Plus mit B2B-Feature (Companies). Pro Firma soll die Rechnung von Lexify (Lexware Office von Appify) an eine separate Buchhaltungs-Email gehen, nicht an die Konto-Email des bestellenden Mitarbeiters. Die Buchhaltungs-Email liegt als Company-Metafeld in Shopify.
Das Problem
Lexify hat in der Beta einen Metafeld-Picker für das Empfänger-Feld eingebaut, aber nur für Order- und Customer-Metafelder, nicht Company-Metafelder. Der Wert liegt aber meistens am Company-Objekt (sinnvoll, weil pro Firma einmal gepflegt, nicht pro Mitarbeiter).
Direktes Mapping geht nicht, also brauchen wir einen Sync.
Datenmodell-Hintergrund
Shopify B2B trennt:
Customers Companies
───────── ─────────
einzelne Personen Firmen-Datensätze
Email + Login Firmenname + Adresse
Bestellhistorie Metafelder
verknüpfte Mitarbeiter (n:m)
Wenn ein als Mitarbeiter zugeordneter Customer eingeloggt bestellt, ist order.purchasingEntity.__typename = PurchasingCompany. Sonst Customer.
Lösungs-Architektur
flowchart LR A[B2B-Kunde<br/>bestellt im Shop] --> B[Order created] B --> C{Order zu einer<br/>Company?} C -->|Ja| D[Shopify Flow läuft] C -->|Nein, B2C| L[Standard-Email,<br/>kein Sync] D --> E[Lese Company-Metafeld<br/>rechnungen_email_adresse] E --> F[Schreibe denselben Wert<br/>auf Order-Metafeld] F --> G[Lexify-Webhook<br/>feuert] L --> G G --> H{Order-Metafeld<br/>befüllt?} H -->|Ja| I[Rechnung an<br/>rechnungen@firma.de] H -->|Nein| J[Rechnung an<br/>Konto-Email Mitarbeiter]
Gelb = unser Workaround. Rest = Standard-Verhalten.
Konfigurations-Bausteine (drei Schritte)
1. Order-Metafeld-Definition anlegen
Custom Data → Orders → Add definition
- Namespace und Key:
customundrechnungen_email_adresse(oder gleicher Key wie das Company-Metafeld) - Type: Email (Single line text)
- Storefront API access: an
Lexify erkennt das Metafeld dann automatisch im Picker.
2. Shopify Flow
- Trigger: Order created
- Conditions (alle müssen matchen):
order.purchasingEntity.__typenameist gleichPurchasingCompanyorder.purchasingEntity.PurchasingCompany.company.<alias>.valueist nicht leer (Alias wird beim Auswählen des Metafelds im Variable-Picker erzeugt, z.B.rechnungsEMailaus dem Definition-Namen “Rechnungs-E-Mail”)
- Action: Update order metafield
- Order ID:
order.id - Metafield:
custom.rechnungen_email_adresse, Type Single line text (oder Email) - Value:
{{ order.purchasingEntity.PurchasingCompany.company.<alias>.value }}
- Order ID:
Stolperer:
PurchasingCompanymuss mit großem P geschrieben werden (GraphQL-Type-Cast). Klein-purchasingCompanyist ungültig.- Alias des Company-Metafelds wird vom Variable-Picker automatisch vergeben. Nicht manuell tippen, sondern den Picker nutzen (“Variable hinzufügen” → durchklicken → namespace + key eintragen → “Include”).
- “metafield” (Singular) im Picker auswählen, nicht “metafields” (Plural) — Plural gibt Liste aller Metafelder zurück, Singular das eine spezifische.
3. Lexify Empfänger-Feld umstellen
In der Lexify-App → Einstellungen → Rechnungen → Empfänger
Vorher: [% ORDER.CUSTOMER.EMAIL %]
Nachher: [% METAFIELD.ORDER.CUSTOM.RECHNUNGEN_EMAIL_ADRESSE %]
Lexify hat eingebauten Fallback: Wenn das Order-Metafeld leer ist (B2C-Bestellungen oder Companies ohne befülltes Feld), geht die Rechnung an die Standard-Email der Bestellung. Kein Bruch.
Test-Strategie
Trockentest in Flow-Editor (sicher, kein Schreiben)
Im Workflow-Editor das Test-Sample auf eine bekannte B2B-Order setzen, Test laufen lassen. Erwartung:
typename = PurchasingCompany- Condition Email-Wert zeigt den Wert aus dem Company-Metafeld
- Action zeigt resolved den Wert der ins Order-Metafeld geschrieben würde
Wenn Flow nur B2C-Orders im Sample-Picker findet (typename = Customer), gibt es im System keine echten B2B-Orders zum Trockentest. Dann nur End-to-End möglich.
End-to-End mit Test-Company
- Eigene Test-Company in Shopify anlegen mit Test-Email als Rechnungs-Email
- Test-Customer der Company zuweisen
- Draft Order anlegen, durchstellen
- In Order → Metafelder prüfen ob
custom.rechnungen_email_adressegesetzt wurde - Lexify schickt Rechnung an die Test-Email
Permissions-Hinweis
Companies sind in Shopify Plus eine separate Permission-Gruppe. Standard-Rolle “Onlineshop-Editor” reicht nicht, man braucht “Manage companies” oder eine Custom-Rolle mit B2B-Permissions. Vor Setup vorab klären, sonst End-to-End-Test nicht möglich.
Wann das Pattern obsolet wird
Wenn Appify die Lexify-App so erweitert dass Company-Metafelder direkt im Empfänger-Picker auswählbar sind, ist der Flow überflüssig. Dann:
- Empfänger-Feld direkt auf Company-Metafeld stellen
- Flow deaktivieren oder löschen
- Order-Metafeld-Definition kann bleiben (schadet nicht) oder entfernt werden
Pattern-Status periodisch prüfen wenn Appify Updates ankündigt.
Erste Implementierung
- Kunde: Ladezon GmbH
- Datum: 2026-05-04
- Status: Logik fertig, End-to-End-Test pendet auf Permissions
Related
intern/kunden/ladezon/profil.md— Erst-Implementierungintern/kunden/ladezon/assets.md— konkrete Konfigurationswerte für Ladezon- Shopify Flow Reference: Order created
- Shopify Flow: Update order metafield
- Shopify Community: Access Company Metafields in Flow