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: custom und rechnungen_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

Apps → Flow → Create workflow

  • Trigger: Order created
  • Conditions (alle müssen matchen):
    • order.purchasingEntity.__typename ist gleich PurchasingCompany
    • order.purchasingEntity.PurchasingCompany.company.<alias>.value ist nicht leer (Alias wird beim Auswählen des Metafelds im Variable-Picker erzeugt, z.B. rechnungsEMail aus 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 }}

Stolperer:

  • PurchasingCompany muss mit großem P geschrieben werden (GraphQL-Type-Cast). Klein-purchasingCompany ist 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

  1. Eigene Test-Company in Shopify anlegen mit Test-Email als Rechnungs-Email
  2. Test-Customer der Company zuweisen
  3. Draft Order anlegen, durchstellen
  4. In Order → Metafelder prüfen ob custom.rechnungen_email_adresse gesetzt wurde
  5. 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:

  1. Empfänger-Feld direkt auf Company-Metafeld stellen
  2. Flow deaktivieren oder löschen
  3. 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