Neu: KI-Ready & Schema.org 2026-kompatibel!

Webhooks

Webhooks dienen dazu außerhalb vom Shop bestimmte Aktionen zu versenden. Die Formate der gesendeten Daten entsprechenden den Objekten der REST API.

Webhook-Passwort

Du kannst optional ein Webhook Passwort festlegen. Ist ein Passwort gesetzt wird im Header eine Basic Authorization base64(username:password) gesendet. Der Username ist bei Webhooks apt-shop.
Damit kannst Du prüfen ob eingehende Request vom Shop kommen.
 

Hinweis: Bei Webhooks zu Bestellungen: Hier kannst Du über die REST APi eine eigene WebhookUrl und ein eigenes Webhookpasswort übergeben. Handelt sich um eine Dropshipper Bestellung wird als Username die DropshipperId gesendet.

Verfügbare Webhooks

Bezeichnung Aktion Beschreibung
Kunde Erstellung sendet ein Customer Objekt bei Erstellung eines Kunden
Kunde Aktualisierung sendet ein Customer Objekt bei Änderung eines Kunden
Bestellung Erstellung sendet ein Orders Objekt bei Erstellung einer Bestellung
Bestellung Statuswechsel sendet ein Orders Objekt bei Änderung der Bestellstatusstufe
Bestellung Löschung sendet ein Orders Objekt bei Löschung der Bestellung
Newsletterempfänger Erstellung sendet ein NewsletterRecipients Objekt bei Erstellung einer Newsletteranmeldung


Die Daten werden als POST Daten versendet. Folgend findest Du eine PHP Klasse die die Webhookdaten ausliest und zur Verfügung stellt:

Beispiel:
{    type:"customer",    reason:"create",    type:[Datenobject]}

 

Beispiel Webhookhandler Klasse (PHP)

//API Webhook-Handler class WebhookHandler{        private $post_data=array();    // Singleton Instance of the Class    private static $instance;        private function __construct()    {        $this->post_data = $this->cleanInputs(json_decode(file_get_contents("php://input"),true));            }        /**     *     * @return WebhookManager     */    public static function &getInstance()    {        if (! isset(self::$instance)) {            $c = __CLASS__;            self::$instance = new $c();        }        return self::$instance;    }        // Permitt cloning of the Object    public function __clone()    {        trigger_error('Clone for a Singleton is permitted.', E_USER_ERROR);    }            /**     *      * @return array     */    public function getPostData()    {        return $this->post_data;    }        private function cleanInputs($data) {        $clean_input = Array();        if (is_array($data)) {            foreach ($data as $k => $v) {                $clean_input[$k] = $this->cleanInputs($v);            }        } else {            $clean_input = trim(strip_tags($data));        }        return $clean_input;    }    }$data=WebhookHandler::getInstance()->getPostData();