Zum Inhalt springen

Technik

Wenn sich der Katalogpreis mitten in der Verhandlung ändert: welchen Preis ein Angebot verwenden sollte

Von Jahangir Alam · 31. Oktober 2026 · 10 Min. Lesezeit

Zuletzt geprüft
Shopify-API
2026-10
Zielgruppe
Entwickler und Agenturen, die eine Angebotsebene für Shopify bauen oder prüfen, auf der sich Katalogpreise während einer offenen Verhandlung ändern können
Umfang
Preisänderungen in Shopify während einer offenen Angebotsverhandlung bei API 2026-10: wo sich ein Preis bewegen kann (Variantenpreis, Festpreise und prozentuale Anpassungen in Preislisten, Mengenpreise, weitere Kataloge, Wechselkurse) und dass kein Webhook-Thema Preislisten nennt, vier Preise je Position mit getrennten Aufgaben, wann der aktuelle Preis neu aufgelöst wird und wann nie, contextualPricing mit Unternehmensstandort und Menge, Herkunft und Fehlerfall, was der Verkäufer sieht, Währung, was sich nie bewegt, Testfälle

Ein Katalogpreis, der sich ändert, während ein Angebot offen ist, darf das Angebot, das die Käuferin in der Hand hält, nie verändern. Er sollte verändern, was der Verkäufer sieht und woran die nächste Verkäufer-Version geprüft wird. Dafür braucht jede Position vier Preise mit je einer Aufgabe: den Katalogpreis, der erfasst wurde, als die Position ins Angebot kam, den aktuellen Preis, den die Käuferin heute zahlen würde, den gewünschten Preis der Käuferin und den angebotenen Preis. Das Angebot ist nach dem Versand eingefroren. Der aktuelle Preis wird bei jedem Versand des Verkäufers serverseitig neu aufgelöst und mit der Version gespeichert. Ein Gegenangebot der Käuferin übernimmt ihn unverändert, und nach dem Versand einer Version wird nichts neu bepreist. Wird aus dem angenommenen Angebot ein Shopify-Bestellentwurf, wird der angenommene Preis ausdrücklich mitgesendet.

Diese Seite beschreibt diesen Entwurf, mit vereinfachtem Code. Unveränderliche Angebotsversionen erklärt, warum eine gesendete Version nie bearbeitet wird, und warum ein Angebot zum falschen Preis umgewandelt wird behandelt die Seite des Bestellentwurfs; diese Seite handelt von der Zeit dazwischen, solange die Verhandlung offen ist. Wo QuotWay das Beispiel ist, wird es so beschrieben, wie es heute funktioniert; alles andere sind Empfehlungen und als solche gekennzeichnet.

Die Angaben zu Shopify unten wurden am 31. Oktober 2026 bei API-Version 2026-10 an Shopifys eigenen Seiten geprüft; die Quellen stehen am Ende.

Wo sich ein Shopify-Preis bewegen kann

„Der Katalogpreis“ ist in Shopify nicht eine einzige Zahl. Der Preis einer Käuferin ist das Ergebnis mehrerer Eingaben, und jede kann sich für sich ändern:

Was sich ändert Was es mit dem Preis der Käuferin macht Meldet es ein Webhook?
Der Preis der Variante Verschiebt den Standardpreis und jeden Preislistenpreis, der als prozentuale Anpassung gesetzt ist products/update – das auch ausgelöst wird, wenn ein Produkt bestellt wird
Ein Festpreis in einer Preisliste Verschiebt den Preis dieser Käuferin nur für diese Variante Kein Thema nennt Preislisten
Die prozentuale Anpassung einer Preisliste Verschiebt jede Variante der Liste ohne Festpreis oder Mengenpreise Kein Thema nennt Preislisten
Ein Festpreis wird gelöscht Fällt auf die prozentuale Anpassung der Liste zurück Kein Thema nennt Preislisten
Mengenpreise und Mengenstaffeln Ändert den Preis oberhalb einer Mengenschwelle; sobald ein Produkt Mengenpreise hat, gilt die prozentuale Anpassung des Katalogs für dieses Produkt nicht mehr Kein Thema nennt Mengenstaffeln
Der Käuferin wird ein weiterer Katalog zugewiesen Kann den Preis ändern: „der spezifischere Preis wird verwendet“, und wo keiner der Kataloge spezifischer ist, der niedrigere Preis Nicht dokumentiert
Wechselkurse der Märkte Umgerechnete Preise ändern sich „automatisch mit den Wechselkursen“, außer Sie verwenden manuelle Kurse oder feste internationale Preise Nein

Zwei Folgen prägen den Rest des Entwurfs. Erstens gibt es kein Ereignis, das Sie abonnieren können und das B2B-Preisänderungen abdeckt; eine Angebotsebene kann ihre Preise also nicht durch Zuhören aktuell halten. Sie muss den Preis in den Momenten neu auflösen, auf die es ankommt. Zweitens ist der eigene Preis der Variante für eine B2B-Käuferin die falsche Zahl. Die richtige Zahl ist der Preis nach allen Anpassungen, für diese Käuferin, bei dieser Menge.

Vier Preise, vier Aufgaben

Jede Position führt vier Preise. Sie wirken redundant, bis Sie fragen, welcher Entscheidung jeder dient:

Preis Aufgabe Geschrieben Erneut gelesen
Erfasster Katalogpreis Historie: was die Käuferin sah, als sie anfragte Einmal, wenn die Position ins Angebot kommt Nie
Aktueller Preis (Baseline) Die Entscheidungsgrundlage: Rabatt in %, Mindestpreis-Prüfungen, Freigabeschwellen Bei jedem Versand des Verkäufers, serverseitig Beim Öffnen des Editors (Anzeige), bei jedem Versand des Verkäufers
Gewünschter Preis Das Verlangen der Käuferin Wenn die Käuferin anfragt oder ein Gegenangebot macht Nie – ein Gegenangebot ist eine neue Version
Angebotener Preis Das Angebot Wenn der Verkäufer eine Version sendet Nie – das nächste Angebot ist eine neue Version

Der erfasste und der aktuelle Preis werden absichtlich getrennt gehalten. Legt man sie zusammen, verliert man entweder die Historie (was sah die Käuferin, als sie anfragte?) oder die Entscheidungsgrundlage (wie tief ist dieser Rabatt heute?). Eine Mindestpreis-Regel, die das Angebot mit einem drei Wochen alten Katalogpreis vergleicht, prüft den falschen Rabatt.

Wann neu aufgelöst wird – und wann nie

Der aktuelle Preis wird in wenigen festgelegten Momenten gelesen, und jeder hat einen anderen Zweck:

Moment Aktuellen Preis neu auflösen? Warum
Eingang – die Käuferin sendet eine Anfrage Festhalten, was die Käuferin sah; serverseitig auflösen, bevor eine Entscheidung ihn verwendet Die Storefront kann den Preis mitsenden, der der Käuferin angezeigt wurde – das ist die richtige Historie. Ein von einem Browser gesendeter Preis lässt sich erst gegen den Katalog prüfen, wenn der Server ihn auflöst; ungeprüft sollte er nicht zur Entscheidungsgrundlage werden.
Öffnen des Editors – der Verkäufer öffnet das Angebot Ja, zur Anzeige Der Verkäufer sollte sehen, was sich bewegt hat, bevor er ein Angebot schreibt. Gespeichert wird nichts.
Versand des Verkäufers – eine neue Version geht hinaus Ja, maßgeblich, und an der Version speichern Mindestpreis- und Freigabeprüfungen laufen auf dieser Zahl. Weil sie gespeichert ist, lässt sich die Entscheidung später erklären.
Gegenangebot der Käuferin Nein – die Baseline der Version übernehmen Die Käuferin antwortet auf eine Version. Wer unter ihr neu bepreist, ändert die Frage, die sie beantwortet hat.
Erneute Freigabeprüfung Nein – die gespeicherte Baseline verwenden Die freigebende Person entscheidet über die Zahlen, die hinausgehen, nicht über einen neueren Preis.
Nach dem Versand einer Version Nie Eine gesendete Version ist ein Dokument. Ein geänderter Preis ist eine Information für die nächste Verkäufer-Version.
Umwandlung in einen Bestellentwurf Nein – den angenommenen Preis erzwingen Ohne ausdrücklichen Preis bepreist Shopify die Position zum aktuellen Katalogpreis.

Die letzte Zeile wird am häufigsten übersehen; warum ein Angebot zum falschen Preis umgewandelt wird behandelt sie ausführlich: Bei einer Variantenposition ersetzt priceOverride den Katalogpreis; das Preisfeld einer benutzerdefinierten Position wird ignoriert, wenn eine Variante gesetzt ist.

Den aktuellen Preis mit contextualPricing auflösen

Shopifys Admin API löst den Preis einer Käuferin in einem einzigen Feld auf; wovon ein Shopify-B2B-Angebot ausgehen sollte geht die Kette aus Katalogen, Preislisten und Mengenregeln dahinter durch. ProductVariant.contextualPricing nimmt einen Kontext – eine companyLocationId für eine B2B-Käuferin oder ein country für einen Markt – und liefert „den endgültigen Preis, nachdem alle Anpassungen angewendet wurden“, die Mengenstaffeln, die Mengenregel und einen auditTrail, der „die Anpassungen, mit denen der endgültige Preis bestimmt wurde, in der Reihenfolge ihrer Anwendung“ festhält.

query CurrentPrices($ids: [ID!]!, $location: ID!) {
  nodes(ids: $ids) {
    ... on ProductVariant {
      id
      contextualPricing(context: { companyLocationId: $location }) {
        price { amount currencyCode }
        quantityPriceBreaks(first: 10) {
          nodes { minimumQuantity price { amount currencyCode } }
        }
        auditTrail { priceAdjustments { __typename } }
      }
    }
  }
}

Drei Details entscheiden, ob die Zahl stimmt.

Bei der Menge der Position auflösen. price ist der Preis für ein Stück. Eine B2B-Position über 500 Stück kann oberhalb einer Mengenstaffel liegen, und der tatsächliche Katalogpreis der Käuferin ist dann der Staffelpreis. Wer ein Angebot mit dem Stückpreis für ein Stück vergleicht, lässt jeden Rabatt tiefer aussehen, als er ist – Mindestpreise und Freigaben greifen dann bei Geschäften, die sie nicht brauchen. Staffeln gelten je Variante und werden nicht über Varianten hinweg zusammengerechnet. Eine Skizze (Empfehlung):

// Der Katalogpreis der Käuferin bei einer bestimmten Menge: die höchste Staffel, die die Menge
// erreicht, sonst der kontextuelle Grundpreis.
function priceAtQuantity(cp: ContextualPricing, quantity: number): Money {
  const reached = cp.quantityPriceBreaks.nodes
    .filter((b) => b.minimumQuantity <= quantity)
    .sort((a, b) => b.minimumQuantity - a.minimumQuantity)[0];
  return reached ? reached.price : cp.price;
}

Die Herkunft festhalten. Speichern Sie neben der Zahl, woher sie kommt: den verwendeten Kontext, den Zeitpunkt und, wenn Sie ihn ermitteln können, den Katalog. „Rabatt 18 % gegenüber 42,00“ ist nur prüfbar, wenn Sie sagen können, was 42,00 war. Der Audit-Trail hilft zu erklären, wie ein Preis zustande kam, aber er nennt weder Katalog noch Preisliste, und er ist leer, wenn Shopify keine vollständige Spur liefern kann.

Festlegen, was ein Fehler bedeutet. Shopify kann in ein Timeout laufen, oder ein Scope fehlt. Wer die Mindestpreis-Prüfung stillschweigend überspringt, weil der aktuelle Preis unbekannt ist, macht aus einem Ausfall eine Lücke in der Preisgestaltung. Fallen Sie auf die zuletzt gespeicherte Baseline zurück und markieren Sie die Position, oder blockieren Sie den Versand für Positionen ganz ohne Baseline (Empfehlung). Beides ist vertretbar; „keine Baseline, also keine Prüfung“ ist es nicht.

Dem Verkäufer zeigen, was sich bewegt hat

Das Neuauflösen beim Öffnen des Editors nützt nur, wenn der Verkäufer das Ergebnis sieht. Zeigen Sie je Position den erfassten Preis, den aktuellen Preis und die Differenz, bevor der Verkäufer ein Angebot schreibt. Dann ist die Reaktion eine Entscheidung und kein Zufall. Ein geänderter Preis lässt drei ehrliche Möglichkeiten:

  • Das Angebot einhalten. Die Käuferin hält eine gesendete Version zum alten Preis in der Hand. Halten Sie sie, bis sie abläuft; das Fristdatum ist das Preisschutzfenster, das Sie gewählt haben. Wie lange ein Angebot gültig sein sollte ist die Entscheidung über dieses Fenster.
  • Neu anbieten. Senden Sie eine neue Verkäufer-Version zu einem neuen Preis, mit Begründung. Die alte Version bleibt unberührt in der Historie.
  • Ablaufen lassen und mit aktuellen Preisen neu beginnen.

Achten Sie darauf, wenn der Preis sinkt. Fällt der aktuelle Preis unter ein offenes Angebot, kann die Käuferin den niedrigeren Preis in Ihrem Shop sehen. Markieren Sie diesen Fall ebenso wie Erhöhungen: Ein Angebot über dem eigenen Katalogpreis der Käuferin ist ein Vertrauensproblem, nicht nur eine Frage der Marge.

Währung: Auch ein Kurs ist ein Preis

Bei einem Angebot in der Währung der Käuferin ist der Wechselkurs eine weitere Eingabe, die sich bewegt. Shopify rechnet Preise „automatisch mit den Wechselkursen“ um, außer der Shop verwendet manuelle Kurse, und „feste internationale Preise haben immer Vorrang vor einem manuellen Umrechnungskurs“.

Zwei Regeln halten das beherrschbar (Empfehlung). Legen Sie die Währung des Angebots fest, wenn das Angebot erstellt wird, und rechnen Sie ein gesendetes Angebot nie um. Kommt der aktuelle Preis in einer anderen Währung zurück als das Angebot, rechnen Sie ihn mit einem festgehaltenen Kurs um – und halten Sie fest, mit welchem, denn „der Preis ist gestiegen“ und „der Kurs hat sich bewegt“ führen zu unterschiedlichen Gesprächen mit der Käuferin. Für die Seite des Bestellentwurfs behandelt der Abschnitt zum Wechselkurs, was Shopify tut, wenn ein Entwurf in einer anderen Währung erstellt oder bearbeitet wird.

Was sich nie bewegt

  • Die Preise einer gesendeten Version. Eine Katalogänderung nach dem Versand berührt das Angebot nicht.
  • Angenommene Positionen. Die Annahme nennt ihre Version und hält deren Preise fest.
  • Die Positionspreise des Bestellentwurfs. Sie werden ausdrücklich aus der angenommenen Version gesendet, sodass der aktuelle Katalogpreis sie nicht ersetzen kann.

Unveränderliche Angebotsversionen erklärt, warum die ersten beiden gelten. Den Bestellentwurf genau einmal erstellen behandelt das Dritte ohne Duplikate.

Testfälle für Ihre eigene Umsetzung

  1. Erhöhen Sie den Preis einer Variante, nachdem ein Angebot gesendet wurde. Das gesendete Angebot und die Ansicht der Käuferin ändern sich nicht.
  2. Erhöhen Sie ihn und senden Sie dann eine neue Verkäufer-Version. Die neue Version speichert den neuen aktuellen Preis, und die Mindestpreis-Prüfung verwendet ihn.
  3. Ändern Sie einen Festpreis in einer B2B-Preisliste. Der Editor zeigt die Änderung beim nächsten Öffnen, ohne Webhook.
  4. Ändern Sie die prozentuale Anpassung einer Preisliste. Jede Variante ohne Festpreis bewegt sich; Varianten mit Festpreis nicht.
  5. Bieten Sie 500 Stück einer Variante mit einer Staffel ab 100 an. Die Baseline ist der Staffelpreis, nicht der Preis für ein Stück.
  6. Lassen Sie die Käuferin nach einer Preisänderung ein Gegenangebot machen. Das Gegenangebot übernimmt die Baseline der Version; nichts wird neu abgerufen.
  7. Lassen Sie die Preisauflösung scheitern. Der Versand wird entweder blockiert oder läuft mit einer markierten, gespeicherten Baseline weiter – nie ohne Mindestpreis-Prüfung.
  8. Senken Sie den Preis unter ein offenes Angebot. Der Verkäufer sieht die Senkung.
  9. Nehmen Sie an, ändern Sie dann den Katalogpreis und wandeln Sie um. Der Bestellentwurf trägt den angenommenen Preis.

Wo QuotWay ansetzt

Bei unternehmensbezogenen Angeboten löst QuotWay den Preis des Unternehmensstandorts bei jedem Versand des Verkäufers serverseitig neu auf, mit contextualPricing und dem Unternehmensstandort des Angebots – nicht aus der Kopie des Editors. QuotWay speichert den Preis an jeder Versionsposition, hält an der Version fest, gegen welchen Katalog er aufgelöst wurde, und verwendet ihn als Baseline für Mindestpreise und Rabattfreigaben. Ein Gegenangebot der Käuferin übernimmt den erfassten Katalogpreis und diese Baseline, ohne einen von beiden neu abzurufen. Der Angebotseditor zeigt je Position die Katalogreferenz und warnt, wenn ein Produkt nicht im Katalog des Unternehmensstandorts der Käuferin ist. Eine gesendete Version wird nie neu bepreist, und die Umwandlung eines angenommenen Angebots sendet den angenommenen Preis an jeder Position des Shopify-Bestellentwurfs.

Unternehmensbezogene Angebote brauchen den Enterprise-Tarif und einen Shopify-Shop mit B2B; siehe B2B-Angebote in Shopify, Verhandlung und Preise.

Häufige Fragen

Wirkt sich eine Änderung des Katalogpreises auf ein bereits gesendetes Angebot aus?

Sie sollte es nicht. Eine gesendete Version speichert ihre eigenen Preise, also bleibt das Angebot, das die Käuferin in der Hand hält, wie gesendet. Die Änderung zählt für die nächste Verkäufer-Version, deren Mindestpreis- und Freigabeprüfungen den aktuellen Preis verwenden sollten, und für die Umwandlung, bei der der angenommene Preis ausdrücklich gesendet werden muss – sonst verwendet Shopify den aktuellen Katalogpreis.

Welchen Preis sollten Rabattfreigaben und Mindestpreise verwenden?

Den aktuellen Preis der Käuferin für diese Position, serverseitig aufgelöst, wenn der Verkäufer sendet, bei der Menge der Position und mit der Version gespeichert. Nicht den Preis, der erfasst wurde, als die Position ins Angebot kam und der Wochen alt sein kann, und nicht einen Preis, den der Browser geliefert hat.

Gibt es einen Shopify-Webhook für Änderungen an B2B-Preislisten?

Keinen, der sie nennt. In API-Version 2026-10 gibt es unter den Webhook-Themen products/update, das bei Änderungen an Varianten ausgelöst wird (und wenn ein Produkt bestellt wird), aber kein Thema nennt Preislisten, Kataloge oder Mengenstaffeln. Lösen Sie Preise in den Momenten neu auf, in denen ein Angebot sie braucht, statt sich auf ein Ereignis zu verlassen.

Wie bekomme ich den Preis eines Unternehmensstandorts über die Admin API?

Fragen Sie contextualPricing an der Produktvariante mit context: { companyLocationId: ... } ab. Es liefert den endgültigen Preis nach allen Anpassungen, die Mengenstaffeln, die Mengenregel und einen Audit-Trail der angewendeten Anpassungen. Wählen Sie den Staffelpreis für die Menge der Position.

Sollte ein Gegenangebot der Käuferin gegen den aktuellen Katalog neu bepreist werden?

Nein. Ein Gegenangebot antwortet auf eine bestimmte Version, also übernimmt es deren Preise und Baseline. Wer unter der Käuferin neu bepreist, ändert die Frage, die sie beantwortet hat. Übernehmen Sie den neuen Preis, wenn der Verkäufer die nächste Version sendet.

Was, wenn der Katalogpreis sinkt, während ein Angebot offen ist?

Zeigen Sie es dem Verkäufer an. Ein Angebot über dem aktuellen Katalogpreis der Käuferin ist für sie in Ihrem Shop sichtbar. Der Verkäufer kann als neue Version zu einem niedrigeren Preis neu anbieten oder das Angebot halten und es erklären; in beiden Fällen sollte es eine Entscheidung sein und nichts, das erst an der Kasse auffällt.

Quellen

Shopify-Seiten, gelesen am 31. Oktober 2026 (API-Version 2026-10):

Das Verhalten von QuotWay ist aus seiner öffentlichen Dokumentation und dem Quellcode der App beschrieben, gelesen am 31. Oktober 2026.

Verwandte Artikel

So funktioniert QuotWay in Ihrem Shop.

Wir möchten Analyse-Cookies setzen, um zu verstehen, wie die Website genutzt wird. Sie sind nicht erforderlich – eine Ablehnung ändert nichts an der Funktion der Website, und Sie können Ihre Entscheidung jederzeit ändern auf unserer Datenschutzseite.