Für Shopify-Agenturen
Wenn Angebot und Shopify-Bestellung auseinanderlaufen: was nach der Umwandlung abweicht
Von Jahangir Alam · 9. Oktober 2026 · 12 Min. Lesezeit
- Zuletzt geprüft
- Shopify-API
- 2026-10
- Zielgruppe
- Shopify-Agenturen und Entwickler, die eine Angebotsebene, Shopify und ein ERP oder CRM nach der Umwandlung in Übereinstimmung halten
- Umfang
- Nach der Umwandlung in API 2026-10: Bearbeitungen am Entwurf und entkoppelte Checkouts, gelöschte und bereinigte Entwürfe, unbezahlte Rechnungen, verpasste Bestell-Webhooks, Bestelländerungen, vom Käufer angefragte Änderungen, Stornierungen, Erstattungen und Versand, aufgeteilte Geschäfte, Währung, Verknüpfungsschlüssel und überschriebene Tags, Identitätsänderungen, Feldbesitz, Events gegenüber Webhooks und ein Abgleichjob
Nachdem ein Angebot auf Shopify umgewandelt wurde, beschreiben vier Datensätze dasselbe Geschäft: das angenommene Angebot, der Bestellentwurf, die Bestellung und das, was ERP oder CRM halten. Sie hören auf übereinzustimmen, und zwar auf eine kleine Zahl dokumentierter Arten – ein nach der Umwandlung bearbeiteter Entwurf, ein Entwurf, der noch offen ist, obwohl seine Bestellung existiert, ein Entwurf, der gelöscht oder nach einem Jahr bereinigt wurde, eine bearbeitete, stornierte oder erstattete Bestellung, eine vom Käufer angefragte Änderung, eine Tag-Liste, die ein Konnektor überschrieben hat. Jede Abweichung lässt sich erkennen, indem man zwei bestimmte Felder vergleicht, und jedes Feld hat einen Besitzer. Abgleich heißt, diese Besitzer festzulegen und die Paare nach Zeitplan zu prüfen.
Diese Seite ist der Katalog dessen, was nach dem Anlegen des Entwurfs auseinanderläuft: wie sich jeder Fall erkennen und beheben lässt und wem ab der Umwandlung welches Feld gehört. Genau einen Bestellentwurf anzulegen behandelt wie aus einem angenommenen Angebot genau ein Shopify-Bestellentwurf wird; was bei der Umwandlung kaputtgeht, steht in den 17 Fehlerfällen; einen Preis, der von Anfang an falsch war, diagnostiziert warum ein Angebot zum falschen Preis umgewandelt wird. „Abgleich“ meint hier Angebots- und Bestelldaten, nicht den Abgleich von Auszahlungen oder Bankbuchungen.
Alles über Shopify wurde am 9. Oktober 2026 gegen Shopifys eigene Seiten in API-Version 2026-10 geprüft; die Quellen stehen am Ende.
Die vier Vergleiche
Was auseinanderläuft und wie Sie es erkennen
Gruppiert nach dem Zeitpunkt. „Führend“ ist der Datensatz, der ab der Umwandlung gilt.
Bevor die Bestellung existiert
| # | Was abweicht | Ursache in Shopify | Erkennen | Beheben | Führend |
|---|---|---|---|---|---|
| 1 | Positionen oder Summen des Entwurfs gegenüber dem Angenommenen | Das Team bearbeitet den Entwurf nach der Umwandlung; ein Update von tags überschreibt die ganze Liste |
Summen der draft_orders/update-Nutzlast gegen die bei der Umwandlung gespeicherten Summen; DraftOrder.tags gegen die Tags, die Sie geschrieben haben |
Eine kaufmännische Änderung ist ein neuer Vorschlag oder ein Gegenangebot und ein neuer Entwurf, der alte Entwurf wird gelöscht; eine logistische Änderung wird festgehalten | Die angenommene Version, bis zur Zahlung |
| 2 | Der Entwurf ist noch offen, obwohl seine Bestellung existiert | Ein Update während eines laufenden Checkouts hat den Checkout entkoppelt: Die Bestellung wird angelegt, und „der Entwurf bleibt offen, auch nachdem die Bestellung angelegt wurde“ | Eine Bestellung trägt Ihr Umwandlungsattribut, aber DraftOrder.order ist null oder der Status ist nicht COMPLETED |
Die Bestellung über das Attribut verknüpfen; ein Mensch löscht den veralteten Entwurf | Die Bestellung |
| 3 | Das Angebot verweist auf einen Entwurf, den es nicht mehr gibt | Jemand aus dem Team hat ihn gelöscht | draft_orders/delete; als Rückfallebene liefert draftOrder(id) nichts |
Den Entwurf als verloren markieren; bestätigen, dass keine Bestellung das Attribut trägt; neu anlegen oder schließen | Shopify |
| 4 | Dasselbe, nach einem Jahr | Entwürfe, die am oder nach dem 1. April 2025 angelegt wurden, werden nach einem Jahr ohne Bearbeitung gelöscht | draftOrder(id) liefert nichts – Shopify dokumentiert nicht, ob die Bereinigung einen Lösch-Webhook sendet |
Lange vor Ablauf des Jahres entscheiden, ob das Geschäft verloren ist oder neu angeboten wird | Shopify |
| 5 | Die Rechnung ging raus und wurde nie bezahlt | Eine Bestellung existiert erst, wenn der Entwurf bezahlt oder abgeschlossen ist | draftOrders(query: "tag:… status:invoice_sent") plus Alter |
Nachfassen, verlängern oder den Entwurf löschen und das Angebot schließen – beides zusammen | Der Status des Entwurfs |
| 6 | Das Angebot ist abgelaufen, der Entwurf noch zahlbar | Ein Entwurf hat keine Frist außer der Bereinigung | Das Angebot ist abgelaufen, während DraftOrder.status auf OPEN oder INVOICE_SENT steht |
Den Entwurf löschen, wenn das Angebot abläuft, oder Angebote nach der Rechnung nicht mehr ablaufen lassen | Eines von beiden – aber nur eines |
| 7 | Eine bezahlte Bestellung, die Angebotsebene oder ERP nicht kennen | Webhook-Zustellung ist nicht garantiert | draftOrder.order ist gesetzt, aber keine Bestell-ID gespeichert; oder orders(query: "tag:… updated_at:>…") gegen die gespeicherten IDs |
Durch denselben Webhook-Handler nachspielen (der Sweep) | Die Bestellung |
Nachdem die Bestellung existiert
| # | Was abweicht | Ursache in Shopify | Erkennen | Beheben | Führend |
|---|---|---|---|---|---|
| 8 | Positionen oder Summe der Bestellung gegenüber der angenommenen Version | Der Händler oder eine andere App bearbeitet die Bestellung: Laut Shopify kann die Bestellung aus dem Entwurf einer App „im Shopify-Admin und von anderen Apps bearbeitet werden“ | orders/edited; Order.edited; originalTotalPriceSet gegen currentTotalPriceSet |
Den Grund an der Bestellung festhalten; das Angebot nicht umschreiben; das ERP folgt der Bestellung | Die Bestellung für Versand und Rechnung; das Angebot für das Vereinbarte |
| 9 | Eine ausstehende Änderung durch den Käufer, die ERP oder Lager nicht sehen | Ab 2026-10 kann ein Käufer das Entfernen nicht ausgelieferter Positionen anfragen | requested_order_edit/*-Webhooks; Order.requestedOrderEdits |
Den Versand anhalten, solange sie aussteht; annehmen oder ablehnen; eine angenommene Anfrage kommt als Bestelländerung an | Die Bestellung |
| 10 | Das Angebot zeigt ein laufendes Geschäft, die Bestellung ist storniert | Eine Stornierung ist „unumkehrbar“ | orders/cancelled; cancelledAt |
Pro Bestellung festhalten; das Angebot bleibt der Nachweis; ein erneutes Angebot ist ein neues | Die Bestellung |
| 11 | Beträge nach Erstattungen und Retouren | Erstattungen pro Position oder für den Versand; Retouren | refunds/create; returns/*; currentSubtotalPriceSet |
Die Gutschrift im ERP kommt aus der Erstattung, nicht aus dem Angebot | Die Erstattungen der Bestellung |
| 12 | Versandstatus an mehreren Stellen kopiert | Ein Lager oder ERP schreibt Fulfillments nach Shopify | fulfillments/*; displayFulfillmentStatus |
Den Versand nicht in die Angebotsebene spiegeln | Lager oder ERP, über Shopify |
Die Form des Geschäfts und seine Schlüssel
| # | Was abweicht | Ursache | Erkennen | Beheben | Führend |
|---|---|---|---|---|---|
| 13 | „Das Angebot hat eine Bestellung, es sollte zwei haben“ | Teilannahme oder aufgeteilte Umwandlung erzeugt einen Entwurf pro Gruppe; für später gelassene Positionen sind noch offen, nicht abgelehnt | Umgewandelte Gruppen gegen gespeicherte Bestell-IDs; die Zwischensumme jeder Bestellung gegen ihre angenommenen Positionen | Pro Gruppe abgleichen; offene Positionen fehlen nicht | Die Angebotsebene dafür, welche Positionen offen sind; die Bestellungen dafür, was gekauft wurde |
| 14 | Die Angebotssumme passt nicht zum Betrag im ERP | Entwurf und Bestellung sind in der Präsentationswährung; shopMoney ist umgerechnet |
Das Angebot nur mit presentmentMoney vergleichen |
Bewusst von einer Seite buchen | Der Betrag in Präsentationswährung |
| 15 | Die Bestellung ist nicht mehr als Bestellung aus dem Angebot erkennbar | Tags durch einen Schreibvorgang mit der ganzen Liste überschrieben; Attribut oder Notiz bearbeitet | orders(query: "tag:…") gegen gespeicherte IDs; Events-Trigger auf order.tags und order.customAttributes |
Aus dem Angebotsdatensatz wiederherstellen; Integrationen ergänzen Tags mit tagsAdd, nie durch Neuschreiben der Liste |
Die Angebotsebene, die die Schlüssel einmal geschrieben hat |
| 16 | Die Identität des Käufers hat sich nach der Umwandlung geändert | Ein Kontakt entfernt, ein Standort gelöscht oder geändert, Kunden zusammengeführt | company_contacts/delete, company_locations/delete, customers/merge gegen gespeicherte IDs |
Vor der Zahlung den Entwurf für den richtigen Standort neu anlegen; danach den Kundenstamm korrigieren, nicht die Bestellung | Der Kundenstamm des ERP oder Shopify – eines von beiden |
| 17 | Ein Konnektor überschreibt Felder, die der Angebotsebene gehören | Zwei Schreiber auf einem Feld | Events-Trigger auf Feldebene; Diff gegen das, was die Angebotsebene geschrieben hat | Den Konnektor auf seine eigenen Felder beschränken | Ein Schreiber pro Feld |
| 18 | Eine Integration hat Ereignisse der Angebotsebene verpasst | Zustellung mindestens einmal und ohne feste Reihenfolge; ein Endpunkt war nicht erreichbar | Lücken in der Ereignisfolge; Zustellungen, die der Absender aufgegeben hat | Aus dem Ereignis-Feed nachspielen, dann über die API | Das Ereignisprotokoll der Angebotsebene |
| 19 | Ein Abgleichjob meldet bei alten Bestellungen „alles in Ordnung“ | Apps sehen nur die Bestellungen der letzten 60 Tage, sofern sie nicht read_all_orders haben |
Der Umfang des Jobs gegen das Alter der Bestellung | read_all_orders beantragen oder innerhalb des Fensters abgleichen |
– |
Wem welches Feld nach der Umwandlung gehört
Integrationsmuster für ERP, CRM und PIM enthält die Besitztabelle für die gesamte Lebensdauer einer Integration. Diese hier beginnt in dem Moment, in dem der Entwurf existiert:
| Feld | Besitzer nach der Umwandlung | Alle anderen | Warum |
|---|---|---|---|
| Vereinbarte Positionen, Mengen, Stückpreise, Konditionen, Version | Die Angebotsebene – die versiegelte, angenommene Version, nie bearbeitet | Lesen sie zur Prüfung | Sie ist der Nachweis der Vereinbarung; ein gesendeter Vorschlag ist gesperrt |
| Welche Positionen noch offen sind | Die Angebotsebene | Das CRM liest sie als Pipeline | Nicht umgewandelt und nicht verloren |
| Der Inhalt des Entwurfs bis zur Zahlung | Die Angebotsebene hat ihn einmal geschrieben; Bearbeitungen durch das Team sind Ausnahmen, die festgehalten werden | Das ERP ignoriert Entwürfe | Der Entwurf ist zahlbar – wer ihn ändert, ändert das Geschäft |
| Positionen, Mengen und Summen der Bestellung | Die Shopify-Bestellung | ERP und Lager lesen; die Angebotsebene spiegelt nicht | Bearbeitungen, Erstattungen und Retouren passieren an der Bestellung |
| Zahlung und Erstattungen | Shopify | Das ERP bucht aus den Erstattungen; die Angebotsebene hält nur Endzustände fest | Geld bewegt sich an der Bestellung |
| Versand | Lager oder ERP, schreibend nach Shopify | Die Angebotsebene: nichts | Ein Schreiber |
| Rechnung, Hauptbuch, Gutschriften | ERP oder Buchhaltung | – | Shopify ist nicht das Hauptbuch |
| Verknüpfungsschlüssel – die Tags des Angebots, das Umwandlungsattribut, die Notizzeile | Die Angebotsebene schreibt sie einmal | Andere ergänzen mit tagsAdd |
Ein Update von tags überschreibt die Liste |
| Unternehmen, Standort, Kontakt | Der Kundenstamm des ERP oder Shopify – eines von beiden | Die Angebotsebene liest | Ein Schreiber |
| Angebotsstatus nach der Umwandlung | Die Angebotsebene, abgeleitet aus Shopifys Bestellereignissen | Integrationen lesen | Abgeleitet, nie umgekehrt |
Die Regel, die daraus folgt: Schreiben Sie Bestelländerungen nie in das Angebot zurück. Das Angebot ist das, was vereinbart wurde; die Bestellung ist das, was ausgeliefert und bezahlt wird. Wenn beide sich unterscheiden, halten Sie den Grund an der Bestellung fest.
Events oder Webhooks dafür
Shopifys Events sind mit API 2026-10 allgemein verfügbar geworden, als Nachfolger der klassischen Webhooks, und klassische Webhooks funktionieren weiter. Events hat Topics für Bestellungen, Erstattungen, Retouren, Fulfillment Orders, Unternehmen und Kunden, mit Triggern auf einzelnen Feldern – darunter order.tags, order.customAttributes und order.lineItems.quantity –, was zu den Zeilen 8, 15 und 17 passt. Es hat kein Topic für Bestellentwürfe, also brauchen die Zeilen 1 bis 6 weiterhin die klassischen draft_orders/*-Webhooks. Shopify dokumentiert keine Zustellgarantien für Events; behalten Sie den Abgleichjob unten also bei, egal welchen Weg Sie nutzen.
Ein Abgleichjob zum Übernehmen
Lassen Sie ihn nach Zeitplan laufen, gegen die gespeicherten IDs und innerhalb des Fensters für den Bestellzugriff:
- Entwürfe, die Sie angelegt und noch nicht bezahlt gesehen haben:
draftOrders(query: "tag:<your-tag> updated_at:>…"). Für jedenstatusundorderprüfen: Eine Bestellung ohne gespeicherte ID ist Zeile 7; ein fehlender Entwurf ist Zeile 3 oder 4; ein alterINVOICE_SENT-Entwurf ist Zeile 5 oder 6. - Bestellungen, die Ihren Schlüssel tragen:
orders(query: "tag:<your-tag> updated_at:>…").originalTotalPriceSetmitcurrentTotalPriceSetvergleichen (Zeile 8),cancelledAtund den Zahlungsstatus prüfen (Zeilen 10, 11), dazurequestedOrderEdits(Zeile 9) und ob Tags und Umwandlungsattribut noch vorhanden sind (Zeile 15). - Externe Systeme: pro Bestellung den Betrag im ERP gegen
presentmentMoney(Zeile 14), die Zahl der Bestellungen gegen die umgewandelten Gruppen (Zeile 13). - Umfang: Ohne
read_all_orderssind nur die Bestellungen der letzten 60 Tage sichtbar (Zeile 19).
Die Anlegeseite – der Sweep, der eine Umwandlung mit unbekanntem Ergebnis findet – steht im Beitrag zur idempotenten Umwandlung.
Wie QuotWay sich verhält
Eine Implementierung, beschrieben, wie sie heute arbeitet:
- Worauf es abgleicht. Jeder Entwurf, den QuotWay anlegt, trägt die Tags
quotwayundquotway-<Angebotsreferenz>, eine nur für den Händler sichtbare Notiz mit Angebotsreferenz und Version sowie ein Umwandlungsattribut, das die Bestellung mit ihrer Umwandlungsgruppe verknüpft. QuotWay bearbeitet, schließt oder löscht einen Entwurf nach dem Anlegen nie und bearbeitet nie Bestellungen. - Was es festhält. Eine Änderung an den Summen eines umgewandelten Entwurfs wird im Aktivitätsverlauf des Angebots festgehalten, mit dem Betrag davor und danach. Sobald ein Angebot auf Bestellung abgeschlossen steht, hält QuotWay am Angebot fest, wenn seine Bestellung storniert oder vollständig erstattet wird. Teilerstattungen, Retouren, Bestelländerungen und Versand bleiben an der Shopify-Bestellung – prüfen Sie dafür die Bestellung (in einen Bestellentwurf umwandeln).
- Aufgeteilte und Teilumwandlungen. Jede angenommene Gruppe wird ihr eigener Entwurf und ihre eigene Bestellung; Positionen, die der Käufer für später gelassen hat, bleiben am Angebot noch offen und können später umgewandelt werden (Teilannahme und aufgeteilte Umwandlung).
- Verpasste Bestell-Webhooks. Ein Sweep prüft Angebote mit gesendeter Rechnung, die nach sieben Tagen keine Bestellung haben, und spielt die Bestellung, wenn Shopify eine zeigt, durch denselben Handler nach.
- Für Integrationen. Im Enterprise-Tarif – auch während der 14-tägigen kostenlosen Testphase – listet das Angebotsobjekt der API die IDs des Shopify-Bestellentwurfs und der Bestellung auf, und ein Ereignis-Feed über 30 Tage ist der Weg, verpasste Webhooks nachzuholen (der Ereignis-Feed). Die Tarife stehen auf der Preisseite; die Umwandlung ist unter Angebote in Bestellungen umwandeln beschrieben.
Häufige Fragen
Warum ist ein Shopify-Bestellentwurf noch offen, obwohl der Kunde bezahlt hat?
Der Entwurf wurde aktualisiert, während sein Checkout lief, und das entkoppelt den Checkout: Die Bestellung wird angelegt, aber „der Entwurf bleibt offen, auch nachdem die Bestellung angelegt wurde“. Prüfen Sie DraftOrder.order, verknüpfen Sie die Bestellung über Ihren eigenen Schlüssel und löschen Sie den veralteten Entwurf.
Gibt es einen Webhook dafür, dass ein Bestellentwurf bezahlt wurde?
Kein „bezahlt“-Topic für Bestellentwürfe. Die Zahlung legt eine Bestellung an; hören Sie also auf orders/create und ordnen Sie die Bestellung über Ihr eigenes Attribut oder Tag dem Entwurf zu; der status des Entwurfs wird COMPLETED, und sein Feld order ist gesetzt. draft_orders/update deckt Änderungen am Entwurf ab, und Shopifys Events hat in 2026-10 kein Topic für Bestellentwürfe.
Sollte sich das Angebot ändern, wenn die Bestellung bearbeitet wird?
Nein. Das Angebot ist der Nachweis dessen, was vereinbart wurde; die Bestellung ist das, was ausgeliefert und bezahlt wird. Halten Sie den Grund für eine Änderung an der Bestellung fest und lassen Sie das ERP der Bestellung folgen.
Wie erkenne ich Bestelländerungen für mein ERP?
Über den Webhook orders/edited, das Feld edited der Bestellung und eine Differenz zwischen originalTotalPriceSet und currentTotalPriceSet. Mit Events leistet ein Trigger auf order.lineItems.quantity dasselbe für Mengen.
Was sind vom Käufer angefragte Bestelländerungen?
Ab API 2026-10 kann ein Käufer anfragen, nicht ausgelieferte Positionen aus einer Bestellung zu entfernen. Die Anfrage kommt als requested_order_edit/*-Webhooks an und ist unter Order.requestedOrderEdits sichtbar; halten Sie den Versand an, solange sie aussteht, und eine angenommene Anfrage wird zu einer gewöhnlichen Bestelländerung.
Laufen unbezahlte Bestellentwürfe ab?
Entwürfe, die am oder nach dem 1. April 2025 angelegt wurden, werden nach einem Jahr ohne Bearbeitung gelöscht. Sonst lässt nichts sie ablaufen; ein Angebot, das früher abläuft, lässt seinen Entwurf also zahlbar, solange Sie ihn nicht löschen.
Ersetzt Shopify Events die Webhooks für den Abgleich?
Events ist der Nachfolger der klassischen Webhooks, und klassische Webhooks funktionieren weiter, aber Events hat kein Topic für Bestellentwürfe; Entwürfe brauchen also weiterhin draft_orders/*. Shopify dokumentiert keine Zustellgarantien für Events, behalten Sie also in jedem Fall einen Abgleichjob.
Warum stimmt die Summe im ERP nicht mit dem Angebot überein?
Angebot, Entwurf und Bestellung sind in der Präsentationswährung des Käufers; shopMoney ist umgerechnet. Erstattungen und Bestelländerungen verändern die aktuelle Summe der Bestellung. Vergleichen Sie das Angebot mit dem Betrag der Bestellung in Präsentationswährung und mit ihrer ursprünglichen Summe.
Quellen
Shopify-Seiten, gelesen am 9. Oktober 2026 in API-Version 2026-10:
- draftOrderUpdate – ein Update entkoppelt einen laufenden Checkout, und der Entwurf bleibt offen
- DraftOrder und DraftOrderInput – Status,
order, Tags - Bestellentwürfe – Löschung nach einem Jahr ohne Bearbeitung für Entwürfe, die am oder nach dem 1. April 2025 angelegt wurden; die Zahlung legt die Bestellung an
- Order – ursprüngliche und aktuelle Summen,
edited,cancelledAt,requestedOrderEdits - Bestehende Bestellungen bearbeiten – von Apps angelegte Bestellungen können im Admin und von anderen Apps bearbeitet werden; das 60-Tage-Fenster für Bestellungen
- orderCancel – eine Stornierung ist unumkehrbar
- tagsAdd – Tags ergänzen, ohne zu überschreiben
- Webhook-Topics und Webhook-Zustellung über HTTPS – Topics; die Zustellung ist nicht garantiert
- Events are now generally available und Events und Webhooks – Topics, Feld-Trigger, klassische Webhooks bestehen weiter
- Release Notes 2026-10 – vom Käufer angefragte Bestelländerungen
QuotWays Verhalten ist nach seiner öffentlichen Dokumentation und dem Quellcode der App beschrieben, gelesen am 9. Oktober 2026.
Verwandte Artikel
- Für Shopify-AgenturenIst Shopify gut für B2B? Wann es die richtige Plattform ist – und wann Punchout, EDI und Co. dagegen sprechen14 Min. Lesezeit
- Für Shopify-AgenturenWarum ein Angebot auf Shopify zum falschen Preis umgewandelt wird: Diagnose nach der Größe der Differenz13 Min. Lesezeit
- Für Shopify-AgenturenMake-or-Buy: was eine Shopify Custom App für Angebote 2026 betreiben muss14 Min. Lesezeit
So funktioniert QuotWay in Ihrem Shop.