Bevor wir starten, möchte ich dir kurz erläutern warum es vorteilhaft ist für jeden deiner Leads einen individuellen Rabattcode zu generieren:

  • Gehst du einigermaßen geschickt vor, wissen deine Kontakte sofort, dass es sich tatsächlich um einen Rabattcode handelt, der nur für sie generiert wurde. Das ist viel persönlicher und kommt dementsprechend auch ganz anders bei deinen Kontakten an als ein Code, der offensichtlich für alle einlösbar ist.
  • Du kannst selbst genau steuern und festlegen welcher Kontakt für wie lange einen Rabatt für deine Produkte erhalten soll.
  • Die Rabattcodes können bzw. werden nicht an Dritte weitergegeben, da sie nur einmal eingelöst werden können.

Heute erkläre und zeige ich dir wie du all das sehr einfach selber umsetzen kannst, ohne viel Geld für einen Programmierer zu zahlen. Das Geld kannst du stattdessen dafür nutzen, um Traffic für deine Landingpage zu generieren. 😉

Das brauchen wir für die Umsetzung

Digistore24

Du brauchst auf jeden Fall einen Vendor-Account bei Digistore24. Falls du noch keinen Account besitzt, kannst du hier einen kostenlos anlegen.

Selbstverständlich musst du deine Produkte auch über Digistore24 verkaufen, sonst wird dich diese Anleitung nicht weiterbringen!

E-Mail-Marketing-System

Im Prinzip funktioniert das was wir tun mit jedem E-Mail-Marketing-System. Ich beschränke mich in dieser Anleitung allerdings auf Quentn. Da wir das System schon sehr lange nutzen, kennen und sehr zu schätzen wissen (genauso wie die Leute dahinter).

Aber wie gesagt, es steht dir natürlich frei auch ein anderes System zu nutzen. Du solltest dadurch keine Nachteile haben, da ich diese Anleitung so gestalte, dass sie (nahezu) universell einsetzbar sein wird.

Ein PHP-fähiges Webhosting

Hier musst du eigentlich nichts weiter beachten, denn heutzutage kann man in der Regel in jedem Hosting-Paket PHP ausführen.

Falls du aber nach einem guten Webhosting suchst, dann guck auch gerne bei unserem Hosting WebhostingCow.com vorbei. Vielleicht ist dort ja auch etwas für dich dabei!

Wir fangen an zu programmieren – keine Sorge, alles halb so wild!

Viele Kunden nehmen an, dass es beim Programmieren einfach nur darum geht irgendwelche Codezeilen zusammenzustellen, die dann „irgendwie“ funktionieren. Doch die Programmierung beginnt schon viel früher!

Die Recherche

Wir wissen zwar schon was wir am Ende für ein Ergebnis mit unserem Programm erzielen wollen, doch wie wir im Detail dort hin kommen, wissen wir noch nicht.

Also müssen wir zuerst recherchieren. In diesem Fall in den Docs von Digistore24 (übrigens enthalten die Docs nicht nur für Programmierer interessante Informationen). Wir müssen wissen wie wir Rabattcodes erstellen und wieder löschen können.

Sollten wir noch gar kein Vorwissen über die API von Digistore24 haben, dann müssen wir auch noch in Erfahrung bringen wie wir die API überhaupt nutzen können. Das möchte ich dir aber ersparen, da das hier sonst zu weit führen würde. Aber ich hoffe, dass du schon so ein bisschen verstehst was alles hinter einer vermeintlich einfachen Programmierung stecken kann.

Die folgenden Funktionen sind für uns interessant:

Erst denken, dann handeln!

Glaube mir, das erspart dir am Ende viel Zeit und Arbeit. Überlegen wir uns also jetzt wie die ganze Rabattcode-Abwicklung genau ablaufen soll. 🙂

  1. Ein Interessent trägt sich in den Verteiler ein.
  2. Es wird über die Digistore24-Schnittstelle ein individueller Rabattcode erstellt und in das Formular eingetragen.
  3. Wir merken uns den Rabattcode, um den Code später automatisch zu löschen.
  4. Anschließend werden die Daten tatsächlich an den E-Mail-Marketing-Dienstleister geschickt.
  5. Der Interessent bestätigt seine E-Mail-Adresse (falls du mit einem Single-Opt-In-Verfahren arbeitest, dann entfällt dieser Schritt natürlich).
  6. Jetzt kann die E-Mail mit dem Rabattcode an den Interessenten verschickt werden.

Das sieht nun gar nicht mehr so simpel aus, oder? Im Detail wird's noch etwas umfangreicher, aber nicht wirklich komplex – hoffe ich. 😀 Machen wir einfach weiter.

Warum sollte der Rabattcode überhaupt wieder gelöscht werden?

Im Grunde ist es gar nicht notwendig die generierten Rabattcodes wieder zu löschen, weil sie ja sowieso zeitlich begrenzt sind. Sie laufen also irgendwann ab und sind nicht mehr nutzbar.

Das Problem ist allerdings, dass es dann hier in deinem Digistore24-Account mit der Zeit sehr unübersichtlich wird. Denn nur weil ein Rabattcode abgelaufen ist, heißt das nicht, dass er auch aus der Rabattcode-Übersicht in deinem DS24-Account verschwindet. Es würde also irgendwann dazu führen, dass du sehr viele abgelaufene Rabattcodes und kaum einen Durchblick hättest welche Codes du manuell erstellt hast.

Das kann sehr lästig sein, wenn du bei einem Launch unter Zeitdruck stehst und schnell etwas an einem Rabattcode ändern musst, ihn aber nicht sofort wiederfindest. Deshalb machen wir uns hier jetzt ein bisschen mehr Arbeit mit der Programmierung, haben später aber Ruhe. 😉

Bevor wir den Code schreiben, gibt es noch eine Kleinigkeit zutun

Ich weiß nicht wie es dir geht, aber ich bin ein Freund davon immer von Vorne zu beginnen und nicht irgendwo mittendrin. 😀

Deshalb kümmern wir uns erstmal um unser E-Mail-Marketing Formular.

  • Wie soll es aussehen?
  • Welche Daten müssen/wollen wir erfassen?

Wir brauchen ein Feld für den Rabattcode

Irgendwie müssen wir den individuellen Rabattcode zusammen mit dem neuen Kontakt speichern. Dazu benötigen wir ein zusätzliches Feld in unserem Formular – dieses Feld wird der Interessent später nicht sehen!

Ich habe das Feld bei mir einfach „Rabattcode“ genannt.

Ein neues Kontaktfeld in Quentn erstellt.

Für diese Anleitung reicht es das Feld einfach nur „Rabattcode“ zu nennen, aber für den produktiven Einsatz empfehle ich dir einen produktspezifischen Namen zu wählen, wie z.B. „Rabattcode Produkt X“.

Ansonsten kann es zu Überschneidungen kommen, falls du diese Anleitungen für mehrere Produkte umsetzt. Dadurch könnte der Rabattcode überschrieben werden und der Kontakt erhält womöglich einen Code, der für seine Bestellung gar nicht gültig ist.

Deshalb nutze immer für jede Landingpage/Aktion ein neues/eigenes Rabattcode-Feld. So kannst du sicher gehen, dass sich nichts überschneidet und deine Kontakte immer die korrekten Codes erhalten, auch wenn sie sich in mehrere Verteiler gleichzeitig eintragen.

Formular erstellen – wie sonst auch immer

In meinem Fall möchte ich nur die E-Mail-Adresse erfassen. Mehr brauche ich nicht. Also generiere ich mir in Quentn ein entsprechendes Formular. Vergiss nicht das Feld für den Rabattcode ebenfalls einzufügen. Das brauchen wir später – der Interessent wird davon nichts mitbekommen!

Ein normales Formular wie es mit jedem E-Mail-Marketing-System erstellt werden kann.

Du siehst, hier läuft noch alles ganz normal. Du musst bei der Erstellung des Formulars auf nichts achten. Mach es wie sonst auch immer.

Selbstverständlich kannst du auch das Design usw. anpassen wie du möchtest. Das spielt für unser Vorhaben überhaupt keine Rolle.

Wir schreiben den Code

Natürlich habe ich den Code bereits vorbereitet und ich werde jetzt auch nicht auf jede einzelne Codezeile eingehen. Im Code selbst habe ich aber überall wo nötig Kommentare mit Erläuterungen eingefügt, damit du weißt an welcher Stelle von deiner Seite noch Anpassungen nötig sind.

Wie und wo die Codes genau eingebunden werden, erkläre ich am Ende. Also lies weiter! 😉

Bevor ich zum Code komme, möchte ich aber noch darauf hinweisen, dass mein Hauptaugenmerk in diesem Fall darauf lag den Code möglichst kurz und einfach zu halten. Für unsere Kunden hätten wir's garantiert etwas anders umgesetzt. Das heißt aber nicht, dass der Code schlecht oder minderwertig ist, es gibt aber sicherlich elegantere Lösungen. Diese können aber normalerweise nur umgesetzt werden, wenn man die genauen Gegebenheiten des jeweiligen Kunden kennt. Hier war es für mich wichtig, dass möglichst viele Leser diese Anleitung nutzen können, unabhängig davon welches E-Mail-Marketing-System etc. sie nutzen.

Der JavaScript-Code

Ja, wir brauchen auch ein bisschen JavaScript. Das macht die Umsetzung einfacher und unkomplizierter. Das schöne an diesem JavaScript-Code ist, dass du an ihm nichts verändern, sondern nur in deine Webseite einbinden musst. 🙂

/************************
 *                      *
 * GoSuccess GmbH       *
 * Copyright 2019       *
 * https://gosuccess.io *
 *                      *
 ***********************/
document.addEventListener( 'DOMContentLoaded', function() {
    
    'use strict';
    
    let script = document.getElementById( 'gs_ds24_custom_voucher' ),
        script_src = document.getElementById('gs_ds24_custom_voucher').src.split('gs-ds24-custom-voucher.js')[0],
        form = document.getElementsByTagName('form')[0],
        voucher_field_name = '';
    
    if( script.dataset.hasOwnProperty( 'voucher_field_name' ) ) {
        
        voucher_field_name = script.dataset.voucher_field_name;
        
        document.getElementsByName( voucher_field_name )[0].type = 'hidden';
        
    }
    
    form.addEventListener( 'submit', function( e ) {
        
        e.preventDefault();
        
        let form_data = new FormData( form ),
            php_src = script_src + 'gs-ds24-custom-voucher.php',
            xhttp = new XMLHttpRequest;
        
        form_data.append( 'voucher_field_name', voucher_field_name );
        
        xhttp.open( 'POST', php_src );
        
        xhttp.onreadystatechange = function() {
            
            if( this.readyState === 4 && this.status === 200 ) {
                                                
                document.getElementsByName( voucher_field_name )[0].value = this.responseText;
                                
                form.submit();
                
            }
            
        };
        
        xhttp.send( form_data );
        
    } );
    
} );

Was macht der Code?

Der Javascript-Code tut für uns zwei Dinge:

  1. Er blendet das Rabattcode-Feld automatisch aus, so dass kein Besucher das Feld je zu sehen bekommt.
  2. Das Skript fängt den Klick auf den Anmeldebutton ab und sorgt dafür, dass zuerst ein Rabattcode generiert und in das Rabattcode-Feld eingetragen wird, bevor die Daten des Interessenten an das E-Mail-Marketing-System geschickt werden.

Technisch gesehen ist es so als würde jeder Interessent seinen eigenen Rabattcode selber in das entsprechende Feld eintragen.

Der PHP-Code

Jetzt wird's etwas komplizierter, aber nur wenn ich jede einzelne Zeile erklären würde. Das tue ich jetzt aber nicht, sondern sage dir nur was das Skript tut und wo du etwas ändern musst. Die Erläuterungen siehst du direkt im Code.

<?php

/************************
 *                      *
 * GoSuccess GmbH       *
 * Copyright 2019       *
 * https://gosuccess.io *
 *                      *
 ***********************/

/**
 * Generiere einen API Key bei Digistore24 und trage diesen hier ein.
 * Der API Key muss die API-Rechte "Vollzugriff" haben.
 */
$digistore24_api_key = '';

/**
 * Hier kannst du einstellen welche Eigenschaften die generierten
 * Rabattcodes haben sollen.
 */
$digistore24_voucher = [
    'data'  => [
        /**
         * Hier kannst du angeben für welche Produkte die Rabattcodes gültig sein sollen.
         * "all" steht dabei für alle Produkte. Ansonsten kannst du entweder eine bestimmte
         * Produkt-ID oder mehrere Produkt-IDs - getrennt durch ein Komma - angeben.
         */
        'product_ids'       => 'all',
        /**
         * Ab wann soll der Rabattcode gültig sein? Die Einstellung "now" steht hierbei für
         * die sofortige Aktivierung des Rabattcodes. Diese Einstellung sollte in der Regel
         * auch beibehalten werden. Ansonsten sind fogende Zeitangaben möglich:
         *
         * "2014-02-28 23:11:24"
         * "now" für jetzt
         * "24h" für den Zeitpunkt genau in 24 Stunden
         * "-24h" für den Zeitpunkt genau vor 24 Stunden
         * "-3d" für den Zeitpunkt vor genau 3 Tagen
         * "-6h" für den Zeitpunkt vor genau 6 Stunden
         * "-10m" für den Zeitpunkt vor genau 10 Minuten
         * "-30s" für den Zeitpunkt vor genau 30 Sekunden
         * "6M" für den Zeitpunkt in 6 Monaten
         * "2Y" für den Zeitpunkt in 2 Jahren
         * "start" für das erste verfügbare Datum (2010-01-01)
         *
         * @https://docs.digistore24.com/knowledge-base/besondere-datentypen-bei-der-digistore24-api/
         */
        'valid_from'        => 'now',
        /**
         * Wie lange soll der Rabattcode gültig sein? Der Zeitpunkt an dem der Code ablaufen soll
         * kann wie oben beschrieben angegeben werden. Hier sind es drei Tage.
         */
        'expires_at'        => '3d',
        /**
         * Der Rabatt in Prozent auf die erste Zahlung (bei Abos/Ratenzahlung) bzw. auf den Kaufbetrag
         * bei Einmalzahlung. Diese Angabe ist optional.
         */
        'first_rate'        => '',
        /**
         * Der Rabatt in Prozent auf die Folgezahlungen (bei Abo/Ratenzahlung). Diese Angabe ist optional.
         */
        'other_rates'       => '',
        /**
         * Der Rabatt als Festbetrag auf die erste Zahlung/Einmalzahlung. Diese Angabe ist optional.
         */
        'first_amount'      => '',
        /**
         * Der Rabatt als Festbetrag auf die Folgezahlungen. Diese Angabe ist optional.
         */
        'other_amounts'     => '',
        /**
         * Währung der obigen Beträge. Diese Angabe ist optional. Bei Käufen in anderen Währungen wird
         * zum Tageskurs umgerechnet
         */
        'currency'          => 'EUR',
        /**
         * Bei "false" (Standard) kann der Code unbegrenzt verwendet werden. Bei "true" ist die Anwendung
         * begrenzt. In diesem Fall wird die Verwendung begrenzt, da es sich um einen individuellen
         * Rabattcode handelt, der nur ein einziges Mal eingelöst werde darf.
         */
        'is_count_limited'  => true,
        /**
         * Falls is_count_limited auf "true eingestellt ist. wird diese Anzahl verwendet, um die Nutzung des
         * Codes zu begrenzen.
         */
        'count_left'        => 1,
        /**
         * Hier wird festgelegt, ob der Rabattcode auch für Upgrades genutzt werden darf. Folgende Einstellungen
         * sind möglich:
         *
         * "valid": Gutschein voll anwendbar
         * "other_only": Nur Rabatt auf Folgeraten
         * "not_valid": Gutschein nicht anwendbar
         */
        'upgrade_policy'    => 'valid'
    ]
];

#############################################################################################################
######################################## AB HIER NICHTS MEHR ÄNDERN! ########################################
#############################################################################################################

require_once( 'gs-ds24-custom-voucher.class.php' );

$custom_voucher = new \GoSuccess\Digistore24_Custom_Voucher( $digistore24_api_key );

if( !empty( $_POST['voucher_field_name'] ) ) {
    
    echo $custom_voucher->create_voucher( $digistore24_voucher, $_POST );
    
}

if( isset( $_GET['cron'] ) ) {
    
    $custom_voucher->cron();
    
}

Was macht der Code?

Das ist der zweite Part der gesamten Programmierung und auch der PHP-Code hat wie der JavaScript-Code zwei Aufgaben:

  1. Das Skript empfängt die Daten des Anmeldeformulars und weiß nun, dass ein neuer Rabattcode benötigt wird. Also verbindet es sich mit deinem Digistore24-Account und generiert einen neuen Rabattcode. Anschließend wird der Code an das JavaScript-Skript zurückgegeben. Zuvor wird aber noch der Code in einer Datei gespeichert.
  2. Es wird regelmäßig geprüft, ob es Rabattcodes gibt, die bereits abgelaufen sind. Und wenn es einen gibt, dann wird dieser bei Digistore24 gelöscht. Dazu später mehr.

Da du den Code sicherlich sehr aufmerksam gelesen hast, ist dir aufgefallen, dass es noch eine weitere Datei gibt, nämlich die die gs-ds24-custom-voucher.class.php. Eigentlich passiert dort die ganze „Magie“. Den Code dieser Datei zu erklären würde dich aber nicht wirklich weiterbringen und viel zu weit führen, deshalb lasse ich's einfach. Du musst nur wissen, dass diese Datei ebenfalls benötigt wird. In dieser Datei findest du folgenden Code:

<?php

/************************
 *                      *
 * GoSuccess GmbH       *
 * Copyright 2019       *
 * https://gosuccess.io *
 *                      *
 ***********************/

namespace GoSuccess;

class Digistore24_Custom_Voucher {
    
    private $api_key;
    
    public function __construct( $ds24_api_key = '' ) {
        
        if( empty( $ds24_api_key ) ) {
            
            throw new \Exception( 'Es muss ein Digistore24 API Key angegeben werden!' );
            
        }
        
        $this->api_key = $ds24_api_key;
        
        date_default_timezone_set( 'Europe/Berlin' );
        
    }
    
    public function cron() {
        
        if( file_exists( 'voucher_log' ) ) {
            
            $voucher_logs = file_get_contents( 'voucher_log' );
            $voucher_logs = unserialize( $voucher_logs );
            
            $all_vouchers = $this->list_vouchers();
            $all_vouchers = $all_vouchers['data']['coupons'];
            
            if( ( is_array( $voucher_logs ) || $voucher_logs instanceof Countable ) && !empty( $voucher_logs ) ) {
            
                foreach( $voucher_logs as $key => $voucher ) {
                    
                    if( !empty( $voucher ) ) {

                        $all_vouchers_key = array_search( $voucher, array_column( $all_vouchers, 'code') );

                        if( $all_vouchers_key !== false ) {

                            $voucher_expires_at = $all_vouchers[$all_vouchers_key]['expires_at'];

                            if( !empty( $voucher_expires_at ) ) {

                                if( $voucher_expires_at < date( 'Y-m-d H:i:s' ) ) {

                                    $result = $this->delete_voucher( $voucher );
                                    
                                    unset( $voucher_logs[$key] );

                                }

                            }

                        }

                        file_put_contents( 'voucher_log', serialize( $voucher_logs ) );

                    }
                    
                }
                
            }
        
        }
        
        exit();
        
    }
    
    public function create_voucher( $data = [], $post_data ) {
        
        try {
            
            $voucher_code = '';
            
            foreach( $post_data as $field ) {
                
                if( strpos( $field, '@' ) !== false ) {
                    
                    $voucher_code = strstr( $field, '@', true );
                    $voucher_code = str_replace( ['.', '+'], '', $voucher_code );
                    $voucher_code = substr( $voucher_code , 0, 30 );
                    
                }
                
            }
            
            $data['data']['code'] = $voucher_code;
        
            $new_voucher = $this->request( 'createVoucher', $data );

            if( file_exists( 'voucher_log' ) ) {

                $log_file = file_get_contents( 'voucher_log' );
                $logs = unserialize( $log_file );

            } else {

                $logs = [];

            }

            $logs[] = $new_voucher['data']['code'];

            file_put_contents( 'voucher_log', serialize( $logs ) );
            
            return $new_voucher['data']['code'];
                        
        } catch( \Exception $e ) {
            
            error_log( $e->getMessage() );
            
        }
        
    }
    
    private function delete_voucher( $code ) {
        
        try {
        
            return $this->request(
                'deleteVoucher',
                [
                    'code' => $code
                ]
            );
            
        } catch( \Exception $e ) {
            
            error_log( $e->getMessage() );
            
        }
        
    }
    
    private function list_vouchers() {
        
        return $this->request();
        
    }
    
    private function request( $function = 'listVouchers', $data = [] ) {
        
        $request_url = 'https://www.digistore24.com/api/call/' . $this->api_key . '/php/' . $function;
        $data = http_build_query( $data );
        
        $ch = curl_init();
        
        $options = [
            CURLOPT_URL             => $request_url,
            CURLOPT_POSTFIELDS      => $data,
            CURLOPT_POST            => true,
            CURLOPT_RETURNTRANSFER  => true
        ];
        
        curl_setopt_array( $ch, $options );
        
        $result = curl_exec( $ch );
        
        curl_close( $ch );
        
        return unserialize( $result );
        
    }
    
}

Jetzt kommt alles zusammen

Unsere Programmierung haben wir soweit abgeschlossen. Alles was jetzt noch fehlt ist die Implementierung in unsere Webseite.

Auf die Einbindung deines Anmeldeformulars werde ich jetzt nicht eingehen, denn jeder nutzt andere Systeme und außerdem gehe ich davon aus, dass du schon lange weißt wie du ein Anmeldeformular deines E-Mail-Marketing-Systems in deine Webseite einbindest. Das solltest du jetzt also tun, falls noch nicht geschehen.

Wir binden den JS-Code ein

Wir machen mit dem zweiten Schritt weiter und binden unseren JavaScript-Code ein. Dazu musst du zuerst die zuvor erstellte JS-Datei herunterladen (merke dir wo du sie auf deine Festplatte speicherst, damit du gleich nicht lange suchen musst). Die Datei mit dem JavaScript-Code lädst du nun in ein beliebiges Verzeichnis auf deinem Server.

Jetzt bindest du die JavaScript-Datei wie folgt in deine Webseite ein. Am besten tust du das irgendwo kurz vor dem schließenden body-Tag, also vor </body>.

<script id="gs_ds24_custom_voucher" data-voucher_field_name="field_rabattcode" src="gs-ds24-custom-voucher.js"></script>

Du musst im Script-Tag die Attribute data-voucher_field_name und src anpassen.

In data-voucher_field_name trägst du den Feldnamen deines Rabattcodes aus deinem Anmeldeformular ein.

In src trägst du den Pfad zur JS-Datei ein.

Wir binden den PHP-Code ein

Das ist genauso einfach wie mit dem JavaScript-Code. Wir haben zwei PHP-Dateien:

  • gs-ds24-custom-voucher.php (In dieser Datei musst du vor dem Hochladen noch ein paar Anpassungen machen)
  • gs-ds24-custom-voucher.class.php

Nachdem du die gs-ds24-custom-voucher.php angepasst hast (Erklärungen findest du direkt in der Datei als Kommentare), musst du beide Dateien in dasselbe Verzeichnis hochladen wo sich auch schon die zuvor hochgeladene JavaScript-Datei befindet. Das war's! Naja, fast … 😉

Da fehlt doch noch etwas!

Du bist ein sehr aufmerksamer Leser und weißt sicherlich schon, dass wir noch gar nicht über das Löschen der abgelaufenen Rabattcodes gesprochen haben. 🙂

Wir erstellen einen Cronjob

Für den Fall, dass du noch nicht genau weiß was ein Cronjob ist, möchte ich dir kurz erklären was das genau ist und natürlich auch wofür wir ihn überhaupt brauchen.

Ganz einfach gesagt sind Cronjobs Aufgaben, die ein Server in regelmäßigen Zeitabständen durchführt.

Wir müssen so einen Cronjob einrichten, damit regelmäßig geprüft wird, ob ein Rabattcode bereits abgelaufen ist und falls ja, diesen automatisch bei Digistore24 löscht.

Nicht jeder Webhoster bietet die Einrichtung von Cronjobs an – wir bei WebhostingCow.com schon 😉 – aber das ist nicht so dramatisch, denn ich habe auch dafür eine Lösung für dich parat. Wir nutzen einfach cron-job.org – kostenlos!

Die Registrierung und Nutzung ist absolut kostenlos und funktioniert perfekt für unseren Einsatzzweck. So richtest du deinen Cronjob bei cron-job.org ein:

Einrichtung eines neues Cronjobs bei cron-job.org.

Alles was du tun musst ist einen Namen für den Cronjob zu vergeben, die URL zum Cronjob einzufügen und auszuwählen wie oft dieser Cronjob ausgeführt werden soll. Hier habe ich ausgewählt, dass der Cronjob minütlich ausgeführt werden soll. Das kannst du genauso machen, ist in diesem Fall aber auch kein Nachteil, wenn du den Cronjob nur einmal am Tag ausführen lässt. Spielt hier keine große Rolle.

Die URL zum Cronjob muss wie folgt aussehen:

https://meine-webseite.de/verzeichnis-zum-skript/gs-ds24-custom-voucher.php?cron

Der Pfad zum Verzeichnis wo du alles hochgeladen hast ist natürlich individuell, den solltest du kennen. Aber alles was danach kommt – hier fett markiert – muss exakt so angegeben werden.

Zusammenfassung, Hinweise, weitere Ideen und kostenloser Download

Unser Skript ist jetzt fertig und einsatzbereit. Es werden bei jedem Eintrag in unseren Verteiler ein individueller Rabattcode in unserem Digistore24-Account erstellt und zusammen mit dem neuen Kontakt gespeichert.

Hinweise vor der Nutzung

Bevor du das Skript aber einsetzt, solltest noch ein paar Dinge wissen:

  • Der Rabattcode wird nicht zufällig generiert, sondern bezieht sich auf die E-Mail-Adresse des Kontaktes. Wenn sich jemand also mit name@email.tld einträgt, erhält dieser Kontakt den Code „name“. Falls sich jemand mit name+newsletter@email.tld einträgt, erhält er den Code „namenewsletter“.
  • Es wird nicht geprüft, ob ein Rabattcode bereits existiert! Sollte sich jemand mit derselben E-Mail-Adresse noch einmal eintragen, bevor ein alter Rabattcode gelöscht wurde, erhält er keinen neuen Rabattcode!
  • Es wird nicht geprüft, ob jemand überhaupt schonmal einen Rabattcode erhalten hat. Das heißt, sobald ein Rabattcode wieder gelöscht wurde, könnte derselbe Kontakt sich erneut eintragen und somit einen „frischen“ Rabattcode erhalten. Das könntest du etwas umgehen, indem du den Cronjob z.B. nur einmal im Monat ausführen lässt. Dann kann derselbe Code mindestens einen Monat nicht erneut generiert werden und die Personen, die evtl. einen neuen Code generieren wollen verlieren das Interesse es immer wieder zu versuchen. 😉
  • Das Skript erkennt und beachtet nur das erste Formular im Quelltext auf deiner Landingpage. Du solltest daher immer nur ein Formular pro Landingpage verwenden, was ja eigentlich ganz normal ist. 🙂

Weitere Optimierungen und Ideen für Erweiterungen

Optimiert werden kann noch so einiges. Die bereits genannten Punkte, die im Moment noch nicht geprüft werden, könnten geprüft werden. Außerdem könnte man auch den Rabattcode anders gestalten.

Normalerweise würde ich auch die Logdaten, die während der Erstellung der Codes generiert werden nicht in einer Datei, sondern in einer Datenbank speichern. Für dieses Tutorial wollte ich es aber nicht zu kompliziert machen.

Weitere interessante Funktionen könnten auch sein:

  • Die E-Mail-Marketing-Software mit einbeziehen und weitere Gutscheine im Laufe einer Kampagne erstellen, sobald ein Kontakt einen bestimmten Tag oder Status erreicht.
  • Den Rabatt eines Rabattcodes mit jedem Tag, der vergeht, um einen bestimmten Betrag oder Prozentsatz senken und den Kontakt natürlich auch sofort darüber informieren, um einen schnelleren Kauf zu forcieren.
  • Einen echten Gutschein im PDF-Format erstellen, den man dann z.B. ausdrucken und zu Veranstaltungen mitbringen kann.
  • Was fällt dir noch ein? Schreib's in die Kommentare! 🙂

Kostenloser Download des gesamten Skripts inkl. Schritt-für-Schritt Videoanleitung!

Wenn dieser Beitrag hilfreich für dich war oder du einfach nur meine Arbeit honorieren möchtest, dann melde dich zu unserem Newsletter an und erhalte als Dankeschön das gesamte Skript noch einmal als Download mit einer genauen Videoanleitung von mir wie du das Skript schnellstmöglich auf deiner Webseite zum Laufen bringst!

Mit dem Absenden des Formulars abonnierst du gleichzeitig unseren Newsletter zum Thema Webhosting und Online-Business. Du kannst dieser Erklärung jederzeit mit nur einem Klick widersprechen und dich aus unserem Verteiler austragen.

Hinweise zu der von der Einwilligung mitumfassten Erfolgsmessung, dem Einsatz des Versanddienstleisters Quentn, Protokollierung der Anmeldung und deinen Widerrufsrechten erhältst du in der Datenschutzerklärung.

Ich freue mich über weitere Anregungen wie man das Skript noch erweitern bzw. optimieren könnte. Und wirst du das Skript selber testen und nutzen? Schreib's mir in die Kommentare! 🙂

Autor

Paul ist Gründer, Gesellschafter und Geschäftsführer der GoSuccess GmbH. Er gründete bereits mit 16 Jahren sein erstes Unternehmen, welches sich vorwiegend mit Grafik- und Webdesign beschäftigte. Anschließend folgte auch die Entwicklung und Vermarktung von (eigenen) Webseiten. Sein Tech-Unternehmen hat sich darauf spezialisiert smarte IT-Lösungen für Online-Unternehmen zu entwickeln. Dazu gehören u.a. das Programmieren von individueller Software sowie der Vertrieb von Eigenentwicklungen als SaaS oder WordPress Plugin. Darüber hinaus hat die GoSuccess GmbH auch ein exzellentes Webhosting im Angebot, welches sich an KMU richtet. Während seiner Selbstständigkeit hat Paul auch eine Berufsausbildung absolviert, studiert, geheiratet und eine Familie gegründet.

  • Hab es sofort ausprobieren müssen! Dafür brauchte ich aber das gute Video. Und ich bin wirklich alles, als ein Techie. Und wenn ich als, absolute Technikniete das hinbekomme, ist das für jeden etwas. Man muss bedenken: endlich kann man mit einer echten Verknappung arbeiten, die individualisiert ist. Das dankt auch der Kunde, weil er sich nicht verschaukelt fühlt! Erste Sahne.

    • Vielen Dank, Mario! Freut mich, dass es geklappt hat und es dir gefällt. 🙂

  • Hallo Paul, schön wieder etwas neues und aktuelles zu hören bzw. zu lesen. Klasse und sehr hilfreicher Artikel bzw. Video. Bin gerade dabei für meine Kunden einen individuellen Rabatt für meine Produkte bei DS24 zu erstellen. Dabei kommt mir dein Thema und die Erklärung sehr gelegen. Besten Dank und Gruss von Rolf Finke – CEO von Optimize Speech.

    • Hallo Rolf, super! Melde dich gerne, falls es irgendwo hakt oder du eine individuelle Lösung brauchst. 🙂

  • >