← Ratgeber

Lieferverzögerung den Kunden mitteilen: automatisch, wenn die WooCommerce-Bestellung nicht rausgeht

Stand: 14. Oktober 2026

Der Kunde hat bezahlt, und dann passiert nichts. Die Ware hängt beim Lieferanten, wird erst gefertigt oder das Lager kommt im Dezember nicht hinterher. Solange kein Versandetikett existiert, verschickt WooCommerce keine Sendungsnummer, und der Kunde hört nichts. Nach zehn, vierzehn Tagen fragt er nach, eröffnet bei PayPal einen Konflikt oder schreibt eine schlechte Bewertung.

Eine kurze, ehrliche E-Mail hätte das meistens verhindert. Dieser Artikel zeigt, was in so eine Nachricht gehört, wie Sie sie mit ein paar Zeilen Code automatisch verschicken, welche fertigen Werkzeuge es gibt und wann Sie unser kostenloses Plugin brauchen (und wann nicht).

Warum WooCommerce hier schweigt

WooCommerce verschickt E-Mails, wenn mit einer Bestellung etwas passiert: Sie geht ein, sie wird bezahlt, sie wird abgeschlossen. Dass zwölf Tage lang nichts passiert, ist für WooCommerce kein Ereignis. Deshalb gibt es dafür keine E-Mail, und die meisten Automatisierungs-Plugins können es auch nicht, weil sie ebenfalls auf Ereignisse warten.

Was Sie brauchen, ist eine Prüfung, die regelmäßig läuft und fragt: Welche bezahlten Bestellungen warten seit mehr als N Tagen, und bei welchen gibt es immer noch keine Sendungsnummer?

Was in die Nachricht gehört

Kurz halten, nichts versprechen, was Sie nicht wissen. Ein Muster, das Sie anpassen können:

Betreff: Ihre Bestellung 1234: es dauert etwas länger

Guten Tag Frau Muster,

vielen Dank für Ihre Bestellung 1234 vom 2. November. Ihre Zahlung ist bei uns eingegangen, die Ware ist aber noch nicht versandt. Es dauert länger als geplant, das tut uns leid.

Sobald das Paket unterwegs ist, bekommen Sie von uns die Sendungsnummer. Wenn Sie Fragen haben oder nicht länger warten möchten, antworten Sie einfach auf diese E-Mail.

Freundliche Grüße Ihr Team von Beispielshop

Ein paar Erfahrungswerte dazu:

Weg 1: Code, ohne Plugin

Das folgende Snippet läuft einmal am Tag über den Action Scheduler, den WooCommerce mitbringt. Es sucht Bestellungen im Status „In Bearbeitung“, die vor mehr als zehn Tagen bezahlt wurden, und schickt jedem dieser Kunden genau einmal eine E-Mail im Layout Ihrer WooCommerce-Mails. Bestellungen mit Sendungsnummer, Abholung im Geschäft und ohne Versand lässt es aus.

Ungetestet. Bitte vor dem Einsatz auf einer Testseite ausführen, mit einer echten bezahlten Testbestellung, deren Zahlungsdatum Sie zurückdatieren.

Fügen Sie den Code in die functions.php Ihres Child-Themes ein oder in ein Plugin für Code-Schnipsel:

/**
 * Lieferverzögerung: Kunden einmalig informieren, wenn eine bezahlte Bestellung
 * nach X Tagen noch keine Sendungsnummer hat.
 * UNGETESTET – vor dem Einsatz auf einer Testseite ausführen.
 */

const MEINSHOP_VERZUG_TAGE  = 10;           // Tage nach der Zahlung
const MEINSHOP_VERZUG_START = '2026-11-01'; // nur Bestellungen, die ab diesem Tag bezahlt wurden
const MEINSHOP_VERZUG_META  = '_meinshop_verzug_mail';

// Einmal täglich prüfen. Der Action Scheduler gehört zu WooCommerce.
add_action( 'init', function () {
	if ( function_exists( 'as_has_scheduled_action' )
		&& ! as_has_scheduled_action( 'meinshop_verzug_check' ) ) {
		// "tomorrow 06:00" gilt in UTC.
		as_schedule_recurring_action( strtotime( 'tomorrow 06:00' ), DAY_IN_SECONDS, 'meinshop_verzug_check', array(), 'meinshop' );
	}
} );

add_action( 'meinshop_verzug_check', 'meinshop_verzug_check' );

function meinshop_verzug_check() {
	$von = strtotime( MEINSHOP_VERZUG_START );
	$bis = time() - MEINSHOP_VERZUG_TAGE * DAY_IN_SECONDS;
	if ( $bis <= $von ) {
		return;
	}

	$order_ids = wc_get_orders( array(
		'status'    => array( 'processing' ),
		'date_paid' => $von . '...' . $bis, // bezahlt zwischen Start und vor X Tagen
		'limit'     => -1,
		'return'    => 'ids',
	) );

	foreach ( $order_ids as $order_id ) {
		$order = wc_get_order( $order_id );
		if ( ! $order || $order->get_meta( MEINSHOP_VERZUG_META ) ) {
			continue; // schon informiert
		}
		if ( ! $order->get_billing_email() ) {
			continue;
		}
		// Ohne Versand oder mit Abholung: keine Verzögerungs-Mail.
		if ( ! $order->get_shipping_methods()
			|| $order->has_shipping_method( 'local_pickup' )
			|| $order->has_shipping_method( 'pickup_location' ) ) {
			continue;
		}
		// Sendungsnummer vorhanden? Dieser Schlüssel gilt für Advanced Shipment Tracking
		// und WooCommerce Shipment Tracking. Andere Plugins: Schlüssel anpassen.
		if ( $order->get_meta( '_wc_shipment_tracking_items' ) ) {
			continue;
		}
		meinshop_verzug_mail( $order );
	}
}

function meinshop_verzug_mail( WC_Order $order ) {
	$mailer  = WC()->mailer();
	$subject = sprintf( 'Ihre Bestellung %s: es dauert etwas länger', $order->get_order_number() );
	$heading = 'Ihre Bestellung braucht etwas länger';
	$text    = sprintf(
		'<p>Guten Tag %1$s,</p>'
		. '<p>vielen Dank für Ihre Bestellung %2$s vom %3$s. Ihre Zahlung ist eingegangen, '
		. 'die Ware ist aber noch nicht versandt. Es dauert länger als geplant, das tut uns leid.</p>'
		. '<p>Sobald das Paket unterwegs ist, bekommen Sie die Sendungsnummer. '
		. 'Bei Fragen antworten Sie einfach auf diese E-Mail.</p>',
		esc_html( $order->get_billing_first_name() ),
		esc_html( $order->get_order_number() ),
		esc_html( wc_format_datetime( $order->get_date_created() ) )
	);

	$sent = $mailer->send( $order->get_billing_email(), $subject, $mailer->wrap_message( $heading, $text ) );

	if ( $sent ) {
		$order->update_meta_data( MEINSHOP_VERZUG_META, time() );
		$order->save();
		$order->add_order_note( 'Hinweis auf Lieferverzögerung an den Kunden gesendet.' );
	}
}

Was Sie anpassen müssen:

Was das Snippet bewusst nicht macht: eine zweite Erinnerung, eine Info an Ihr Team, eine Vorschau, wer morgen eine Mail bekäme, und eine Begrenzung bei sehr vielen Bestellungen. Für einen kleinen Shop reicht das oft. Wenn Sie mehr brauchen, wird aus dem Snippet schnell ein kleines Plugin.

Weg 2: Werkzeuge, die Sie vielleicht schon haben

Preise vom 14.10.2026, jeweils von der Seite des Anbieters.

Klaviyo. Wer Klaviyo schon nutzt, kann einen Flow bauen: nach der Bestellung eine Wartezeit, dann eine Abzweigung „Fulfilled Order null Mal seit Start des Flows“, und nur auf diesem Zweig die Entschuldigung. So hat es ein ehemaliger Klaviyo-Mitarbeiter 2022 in der Klaviyo-Community beschrieben. Ob das „Fulfilled“-Ereignis bei Ihrer WooCommerce-Anbindung zu Ihrem Versand passt, prüfen Sie am besten mit einer Testbestellung. Der Preis richtet sich nach der Zahl Ihrer aktiven Kontakte und der E-Mails pro Monat (Preisseite).

Order Status & Tracking Emails for WooCommerce (kostenlos). Das Plugin kann eine verzögerte E-Mail verschicken, wenn eine Bestellung in einen Status wechselt, mit den Bedingungen „bezahlt“ und „keine Sendungsnummer“ (Plugin-Seite). Es erkennt aber nur Sendungsnummern, die Sie in seinen eigenen Feldern eintragen. Wenn Sie Ihre Sendungsnummern ohnehin dort pflegen, ist das ein brauchbarer kostenloser Weg.

Weitere kostenlose Plugins gehen das Thema anders an: Track Orders for WooCommerce mailt, wenn ein von Hand eingetragenes Lieferdatum überschritten ist. Bestellungen ohne eingetragenes Datum prüft es nicht. Delayed Order Processing Notice schickt eine E-Mail, wenn eine Bestellung länger als eine eingestellte Stundenzahl „In Bearbeitung“ ist, ohne auf Sendungsnummern zu achten. OrderCarry meldet „hängende“ Bestellungen nach der Zeit in einem Status, gedacht vor allem als Hinweis an Ihr Team; eine Automatisierung ist kostenlos.

Kostenpflichtige Erweiterungen. AutomateWoo (142 € pro Jahr) startet Workflows bei Ereignissen wie einem Statuswechsel. Eine Auslösung „X Tage ohne Sendungsnummer“ haben wir in der Liste der Auslöser nicht gefunden. Tracking-Erweiterungen wie WooCommerce Shipment Tracking (53 € pro Jahr) oder Advanced Shipment Tracking Pro (129 $ pro Jahr) informieren, sobald versendet wurde. Für die Zeit davor haben wir bei ihnen keine Funktion gefunden.

Weg 3: unser Plugin

Offenlegung: Das folgende Plugin haben wir bei Opuswerk geschrieben.

Opuswerk Delivery Delay Notices for WooCommerce ist kostenlos und macht genau eine Sache. Jeden Morgen prüft es bezahlte Bestellungen, die noch auf den Versand warten. Hat eine Bestellung 12 Tage nach der Zahlung keine Sendungsnummer, bekommt der Kunde einen ersten Hinweis, 7 Tage später einen zweiten, und noch einmal 7 Tage später bekommt Ihr Team eine Erinnerung, sich beim Kunden zu melden. Alle drei Zahlen stellen Sie selbst ein.

Gegenüber dem Snippet oben bringt es mit:

Eine deutsche Übersetzung (Sie und du) ist fertig und wird über translate.wordpress.org ausgeliefert. Bis das Sprachpaket dort veröffentlicht ist, sehen Sie die englischen Texte und können die Mail-Texte in den WooCommerce-Einstellungen selbst auf Deutsch setzen.

Wann Sie es nicht brauchen: wenn Sie praktisch immer innerhalb weniger Tage versenden; wenn Sie bereits einen Klaviyo-Flow oder eine OSTE-Regel haben, die funktioniert; oder wenn Ihnen eine einzige Mail ohne Blick auf die Sendungsnummer genügt. Dann ist das Snippet oben der kleinere Eingriff.

Und rechtlich?

Dieser Artikel ist keine Rechtsberatung. Er sagt nichts darüber, ob und wann Sie Kunden über eine Verzögerung informieren müssen. Die Vorschriften, die beim Thema Lieferzeit im Onlinehandel meist genannt werden, im Wortlaut:

Was davon für Ihren Shop gilt, klärt Ihre Rechtsberatung oder der Anbieter Ihrer Rechtstexte. Eine Verzögerungs-Mail ist in erster Linie guter Service: Der Kunde weiß Bescheid, bevor er nachfragen muss.

opuswerk entwickelt kleine WordPress-Plugins für WooCommerce-Shops, jedes für genau eine Aufgabe.