Elementor Formular mit Digimember verbinden

Ein Schritt-für-Schritt-Tutorial für WordPress-Websites mit Elementor Pro

Inhaltsverzeichnis

Wenn du ein digitales Produkt über Digimember verkaufst und die Registrierung deiner Mitglieder über ein individuelles Elementor-Formular abwickeln möchtest, brauchst du zwei Dinge: eine zuverlässige Prüfung der Mitgliedsnummer und eine automatische Übergabe der Daten an Digimember. In diesem Tutorial zeige ich dir genau, wie das funktioniert – inklusive Code zum Copy-Paste.

Was wir am Ende haben

  • Ein Elementor-Pro-Formular mit den Feldern E-Mail, Vorname, Nachname und Mitgliedsnummer
  • Eine serverseitige Prüfung, ob die eingegebene Mitgliedsnummer überhaupt existiert (Abgleich gegen eine CSV-Liste)
  • Eine automatische Übertragung der Registrierungsdaten an Digimember per Webhook

Voraussetzungen

  • WordPress mit Elementor Pro (der kostenlose Elementor-Editor reicht nicht, da wir Pro-spezifische Hooks nutzen)
  • Zugriff auf die functions.php deines Child-Themes oder die Möglichkeit, ein kleines Custom-Plugin zu installieren
  • Das Plugin Digimember mit einer aktiven Webhook-URL für dein Produkt Grundkenntnisse im Umgang mit PHP-Code (du musst nichts programmieren, nur kopieren und anpassen)

Links:

Elementor: https://be.elementor.com/
Digimember: https://digimember.de/

Schritt 1: Formular in Elementor anlegen

Schritt 1: Formular in Elementor anlegen Erstelle ein Formular-Widget mit vier Feldern: E-Mail Vorname Nachname Mitgliedsnummer Für jedes Feld musst du unter Erweitert → ID eine feste, eindeutige ID vergeben. In diesem Tutorial verwende ich:
Feld ID
E-Mail email
Vorname firstname
Nachname lastname
Mitgliedsnummer mitgliedsnummer

Wichtig: Diese IDs sind der Dreh- und Angelpunkt des gesamten Setups. Der PHP-Code, den wir gleich einbauen, greift darauf zurück – ein Tippfehler hier führt dazu, dass nichts funktioniert.

Vergib außerdem im Feld „Formularname“ (oben im Content-Tab des Formular-Widgets) einen sprechenden Namen, z. B. Registrierung. Auch dieser Name muss später exakt im Code hinterlegt werden.

Schritt 2: Mitgliedsnummer gegen eine Liste prüfen

Bevor sich jemand registrieren kann, soll geprüft werden, ob die eingegebene Mitgliedsnummer überhaupt gültig ist. Dafür legen wir eine einfache CSV-Datei mit allen gültigen Nummern an – eine Nummer pro Zeile, ohne Kopfzeile:
				
					M-10001
M-10002
M-10003
				
			

Lade diese Datei nach wp-content/uploads/mitgliedsnummern.csv hoch.

Der Validierungs-Code

Füge diesen Code in deine functions.php oder dein Custom-Plugin ein:

				
					<?php
/**
 * Elementor Pro Form: Mitgliedsnummer gegen CSV-Liste prüfen
 */
add_action( 'elementor_pro/forms/validation', function( $record, $ajax_handler ) {

    $field_id = 'mitgliedsnummer';
    $raw_fields = $record->get( 'fields' );

    if ( ! isset( $raw_fields[ $field_id ] ) ) {
        return;
    }

    $submitted_value = trim( $raw_fields[ $field_id ]['value'] );

    if ( empty( $submitted_value ) ) {
        return;
    }

    $valid_numbers = mitgliedsnummer_liste_laden();

    if ( ! in_array( $submitted_value, $valid_numbers, true ) ) {
        $ajax_handler->add_error(
            $field_id,
            'Diese Mitgliedsnummer ist uns nicht bekannt. Bitte überprüfe deine Eingabe.'
        );
    }

}, 10, 2 );

function mitgliedsnummer_liste_laden() {

    static $cached = null;

    if ( $cached !== null ) {
        return $cached;
    }

    $cached = get_transient( 'mitgliedsnummern_liste' );

    if ( $cached !== false ) {
        return $cached;
    }

    $csv_path = WP_CONTENT_DIR . '/uploads/mitgliedsnummern.csv';
    $numbers  = [];

    if ( file_exists( $csv_path ) && ( $handle = fopen( $csv_path, 'r' ) ) !== false ) {
        while ( ( $row = fgetcsv( $handle ) ) !== false ) {
            if ( ! empty( $row[0] ) ) {
                $numbers[] = trim( $row[0] );
            }
        }
        fclose( $handle );
    }

    set_transient( 'mitgliedsnummern_liste', $numbers, HOUR_IN_SECONDS );

    return $numbers;
}
				
			

Was macht dieser Code?

  • Der Hook elementor_pro/forms/validation feuert, sobald das Formular abgeschickt wird – noch bevor die Daten gespeichert werden.
  • Die CSV-Datei wird eingelesen und für eine Stunde zwischengespeichert (WordPress Transient), damit nicht bei jeder Anfrage neu von der Festplatte gelesen werden muss.
  • Ist die eingegebene Nummer nicht in der Liste, wird ein Fehler direkt am Formularfeld angezeigt – der Nutzer kommt nicht weiter.

Schritt 3: Daten an Digimember übergeben

Sobald die Validierung erfolgreich war und das Formular gespeichert ist, sollen die Daten automatisch an Digimember übertragen werden. Digimember stellt dafür eine Webhook-URL bereit, die als GET-Request mit Query-Parametern aufgerufen werden muss – etwa so:
				
					https://deine-domain.de?dm_webhook=DEIN_TOKEN&email=...&firstname=...&lastname=...&mitgliedsnummer=...
				
			

Wichtiger Hinweis zur eingebauten Elementor-Webhook-Funktion

Elementor Pro bietet unter „Actions After Submit“ zwar eine eigene Webhook-Option – die sendet die Formulardaten aber als POST-Body, nicht als GET-Query-Parameter in der URL. Da Digimember die Werte direkt in der URL erwartet, funktioniert die eingebaute Funktion hier nicht zuverlässig. Es gibt auch keine Möglichkeit, in der Webhook-URL selbst Platzhalter für einzelne Feldwerte einzusetzen.

Die zuverlässige Lösung ist daher ein eigener PHP-Hook, der die URL serverseitig korrekt zusammenbaut.

Der Webhook-Code

				
					<?php
add_action( 'elementor_pro/forms/new_record', function( $record, $ajax_handler ) {

    // Muss exakt dem Formularnamen aus dem Elementor-Editor entsprechen
    $form_name = 'Registrierung';

    if ( $record->get_form_settings( 'form_name' ) !== $form_name ) {
        return;
    }

    $raw_fields = $record->get( 'fields' );

    $email       = isset( $raw_fields['email']['value'] )           ? trim( $raw_fields['email']['value'] )           : '';
    $firstname   = isset( $raw_fields['firstname']['value'] )       ? trim( $raw_fields['firstname']['value'] )       : '';
    $lastname    = isset( $raw_fields['lastname']['value'] )        ? trim( $raw_fields['lastname']['value'] )        : '';
    $mitgliedsnr = isset( $raw_fields['mitgliedsnummer']['value'] ) ? trim( $raw_fields['mitgliedsnummer']['value'] ) : '';

    if ( empty( $email ) || empty( $mitgliedsnr ) ) {
        return;
    }

    $webhook_url = add_query_arg(
        [
            'dm_webhook'      => 'DEIN_DIGIMEMBER_TOKEN',
            'email'           => rawurlencode( $email ),
            'firstname'       => rawurlencode( $firstname ),
            'lastname'        => rawurlencode( $lastname ),
            'mitgliedsnummer' => rawurlencode( $mitgliedsnr ),
        ],
        'https://deine-domain.de'
    );

    $response = wp_remote_get( $webhook_url, [ 'timeout' => 15 ] );

    if ( is_wp_error( $response ) ) {
        error_log( 'Digimember Webhook Fehler: ' . $response->get_error_message() );
    } else {
        error_log( 'Digimember Statuscode: ' . wp_remote_retrieve_response_code( $response ) );
    }

}, 10, 2 );
				
			

Ersetze:

  • DEIN_DIGIMEMBER_TOKEN durch dein tatsächliches Webhook-Token aus Digimember
  • https://deine-domain.de durch deine eigene Domain
  • Registrierung durch den Formularnamen, den du in Schritt 1 vergeben hast

 

Warum serverseitig statt clientseitig? Weil das Webhook-Token in deiner URL ein Geheimnis ist – landet es im JavaScript des Frontends, kann es theoretisch von Besuchern ausgelesen werden. Der Aufruf über wp_remote_get() läuft komplett auf dem Server und bleibt unsichtbar.

Die 3 häufigsten Stolperfallen

Aus eigener Erfahrung beim Einrichten hier die Punkte, an denen es am ehesten hakt:

1. Formularname stimmt nicht überein
Der Wert bei $form_name im Code muss exakt (Groß-/Kleinschreibung, keine Leerzeichen) dem „Formularname“-Feld im Elementor-Editor entsprechen. Ein einziger abweichender Buchstabe reicht, damit der Hook den Aufruf stillschweigend abbricht.

2. Feld-IDs falsch gesetzt oder vergessen
Jedes Formularfeld braucht unter Erweitert → ID eine feste ID. Ohne gesetzte ID generiert Elementor automatisch eine zufällige, die sich ändern kann – dann greift der Code ins Leere.

3. Excel wandelt Mitgliedsnummern mit führenden Nullen um
Falls deine Mitgliedsnummern mit „0“ beginnen (z. B. 007), formatiere die entsprechende Spalte in Excel vor dem CSV-Export unbedingt als Text – sonst wird daraus automatisch 7 und die Prüfung schlägt fehl.

Fehlersuche: So findest du heraus, wo es hakt

Falls die Übertragung an Digimember nicht funktioniert, hilft dir dieses Vorgehen:

  • Aktiviere in deiner wp-config.php das Debug-Logging:
				
					define( 'WP_DEBUG', true );
   define( 'WP_DEBUG_LOG', true );
				
			

Löse eine Testregistrierung aus. Öffne wp-content/debug.log und prüfe die Log-Einträge – sie zeigen dir, ob der Hook überhaupt gefeuert hat, welchen Statuscode Digimember zurückgibt und ob ein Fehler aufgetreten ist.

Fazit

Mit diesen beiden Code-Blöcken hast du eine vollständige, sichere Registrierungsstrecke: Nutzer können sich nur mit einer gültigen Mitgliedsnummer anmelden, und ihre Daten landen automatisch im richtigen Digimember-Produkt – ganz ohne manuellen Abgleich. Der Code lässt sich problemlos für weitere Produkte wiederverwenden, indem du einfach Formularname und Feld-IDs anpasst.

Links:

Elementor: https://be.elementor.com/
Digimember: https://digimember.de/

 

Baust du gerade selbst an deiner WordPress-Website und brauchst Unterstützung bei individuellen Formularlösungen? Schau gerne bei hello-basti.de vorbei.

Unverzichtbarer Leitfaden für deine Webseite

Nutze meinen 10 Schritte-Plan, der dir zeigt, wie du ohne Technik-Chaos eine professionelle Website aufbaust, die Kunden gewinnt.

🔒 Kein Spam. Kein Verkauf deiner Daten. Du kannst dich jederzeit abmelden. Datenschutz wird großgeschrieben.

Hi ich bin Basti!

Ich entwickle WordPress-Websites seit meiner Jugend — mit HTML, JavaScript und heute mit modernen KI-Tools, Elementor und klaren Storytelling-Strukturen. Als dreifacher Familienvater weiß ich, wie wertvoll Zeit ist. Deshalb arbeite ich nach einem bewährten 10-Schritte-System — schnell, klar, ohne Überforderung. Ob du selbst baust, mich beauftragst oder deine Texte optimierst: ich begleite dich auf dem direkten Weg.

Basti, Freelancer 
15+ Jahre WordPress Experiences

Das könnte dich auch interessieren