Shopify-Bestellungen automatisch auf einem Thermodrucker drucken

Shopify kann eine Bestellung nicht ohne Klick an einen Drucker schicken. Hier sind die drei Wege, die funktionieren, und wie Sie wählen.

Shopify druckt nicht. Das Admin kann Ihnen eine Bestellung anzeigen, und Ihr Browser kann diese Seite an einen Drucker schicken, aber nichts in Shopify schiebt von sich aus einen Bon an eine Maschine in Ihrer Küche oder Ihrem Lager. Die offizielle App Order Printer ist ein Template-Renderer mit einem Drucken-Knopf: Es braucht weiterhin einen Menschen.

Kurze Antwort: Aus einer Bestellung wird ein gedruckter Bon, sobald etwas den Webhook orders/create oder orders/paid von Shopify abhört und ihn an einen aus dem Internet erreichbaren Drucker weiterleitet. Dorthin kommen Sie mit einem fertigen Konnektor, mit Shopify Flow, oder mit fünfzehn Zeilen eigenem Code.

Die drei Wege

Weg Einrichtung Code nötig Layout Geeignet für
Konnektor Minuten Nein Template-basiert Händler, Agenturen mit engem Termin
Shopify Flow ~30 Min. Nein Auf das gebaute Payload begrenzt Shops, die Flow schon nutzen, bedingte Regeln
Eigener Webhook Eine Stunde Ja Vollständig Eigene Logik, Routing über Standorte

Keiner davon braucht einen Rechner im Laden, solange der Drucker seine eigene Internetverbindung hält: ein Cloud-Drucker mit 4G/WLAN/Ethernet oder ein vorhandener USB-Drucker hinter einem Raspberry-Pi-Adapter.

1. Der Konnektor-Weg

Der schnellste Weg ist der Shopify-Konnektor: App im Shop autorisieren, festlegen welcher Drucker welche Bestellungen erhält, Bon-Vorlage anpassen. Bestellungen werden bei Zahlung gedruckt. Die Schritt-für-Schritt-Anleitung steht in der Shopify-Integrationsdokumentation.

Für die meisten Händler ist das die richtige Antwort. Die Grenze ist das Layout: Sie bekommen einen guten Standardbon und Vorlagenoptionen, keine beliebige Logik.

2. Shopify Flow

Nutzt Ihr Shop bereits Flow, können Sie den Druck dort auslösen:

  1. Auslöser: Order created (oder Order paid: siehe unten).
  2. Optionale Bedingung: nur Bestellungen über einem Betrag, von einem Standort oder mit einem bestimmten Produkt.
  3. Aktion: Send HTTP request an den Druck-Endpunkt, Bon-Text aus Flow-Variablen zusammengesetzt.

Flow lohnt sich, wenn die Entscheidung zu drucken bedingt ist. Es lohnt sich nicht, wenn Sie schlicht jede Bestellung drucken wollen: das erledigt der Konnektor mit weniger Wartung.

3. Eigener Webhook

// POST /webhooks/shopify/orders-paid
export default async function handler(req, res) {
  const order = req.body;

  const zeilen = [
    `BESTELLUNG ${order.name}`,
    new Date(order.created_at).toLocaleString('de-DE'),
    '',
    ...order.line_items.map(i => `${i.quantity}x ${i.title}`),
    '',
    `SUMME: ${order.total_price} ${order.currency}`,
  ];

  await fetch(
    `https://www.expedy.fr/api/v2/printers/${process.env.PRINTER_UID}/print`,
    {
      method: 'POST',
      headers: {
        Authorization: `${process.env.API_SID}:${process.env.API_TOKEN}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        printer_msg: zeilen.join('\n'),
        origin: `shopify-${order.id}`,
      }),
    },
  );

  res.status(200).end();
}

Zwei Details wiegen schwerer als der Rest.

orders/paid, nicht orders/create. orders/create feuert, bevor die Zahlung eingezogen ist. Wer darauf druckt, druckt auch fehlgeschlagene Autorisierungen und jeden Entwurf, den das Personal anlegt.

origin trägt die Bestell-ID. Shopify wiederholt Webhooks; eine Wiederholung nach einem Timeout bedeutet, dieselbe Bestellung kommt zweimal an. Ein stabiler Wert in origin gibt Ihnen den Schlüssel, das Duplikat zu erkennen und zu verwerfen.

Die Fehlerfälle, vor denen niemand warnt

Doppelte Bons. Shopify wertet einen Webhook als fehlgeschlagen, wenn Sie nicht binnen fünf Sekunden antworten. Drucken Sie erst und antworten dann, wird aus einem langsamen Aufruf ein zweiter Bon. Erst 200 antworten, dann asynchron drucken.

Emoji und Sonderzeichen. Thermodrucker sprechen ESC/POS, nicht Unicode. Ein Produkttitel mit Emoji kann Buchstabensalat erzeugen oder bei manchen Modellen die Verbindung abreißen lassen. Vor dem Senden bereinigen oder transliterieren: die mit Abstand häufigste Ursache für „der Drucker geht nicht mehr".

Papierbreite. Auf eine 80-mm-Rolle passen rund 42 Zeichen pro Zeile. Lange Titel brechen so um, dass der Bon im Betrieb schwer lesbar wird. Bewusst kürzen.

Der Drucker offline. Legen Sie vorab fest, ob ein unzustellbarer Auftrag in die Warteschlange geht, wiederholt wird oder eine Meldung auslöst. Den Zustellstatus zu prüfen ist eine Zehn-Minuten-Ergänzung, die eine ganze Klasse von Vorfällen verhindert.

Den Bon formatieren

Fette Überschriften, Logo, QR-Code zur Bestellung, Barcode, automatischer Schnitt: alles Auszeichnungen in printer_msg. Siehe die Layout-Referenz und den Logodruck.

Wo anfangen

Betreiben Sie einen Shop und wollen die Bestellungen heute auf Papier: Konnektor installieren. Routen Sie Bestellungen zwischen Standorten oder brauchen eigene Logik: den Webhook schreiben: ein Nachmittag, kein Projekt. In beiden Fällen ein kostenloses Konto anlegen und einen Testbon drucken, bevor Sie die Produktion anfassen.

FAQ

Kann Shopify Bestellungen ohne App automatisch drucken?

Nur wenn Sie die Integration selbst schreiben: einen orders/paid-Webhook registrieren und die Bestellung an einen Druck-Endpunkt weiterleiten. Shopify schiebt nie an einen Drucker, und Order Printer verlangt weiterhin einen Klick.

Brauche ich einen Rechner im Laden?

Nein, sofern der Drucker seine eigene Internetverbindung hält. Ein Cloud-Drucker mit 4G, WLAN oder Ethernet verbindet sich selbst; ein vorhandener USB-Drucker kann das hinter einem Raspberry-Pi-Adapter ebenfalls.

orders/create oder orders/paid?

In fast allen Fällen orders/paid. orders/create feuert vor dem Zahlungseinzug und druckt damit auch fehlgeschlagene Autorisierungen und vom Personal angelegte Entwürfe.

Warum werden manche Bestellungen zweimal gedruckt?

Shopify wiederholt den Webhook, wenn Ihr Endpunkt nicht binnen fünf Sekunden antwortet. Sofort 200 antworten, asynchron drucken und die Bestell-ID in origin mitgeben, damit Duplikate erkennbar sind.