WordPress: CRM-Funktionen per Plugin integrieren – Kontakte verwalten ohne neue Systeme

Warum ĂŒberhaupt CRM in WordPress?

Du brauchst Kontaktverwaltung.
Aber kein neues System.
Kein HubSpot. Kein Salesforce. Kein Abo.

Wenn Du WordPress nutzt, kannst Du Kontakte direkt dort pflegen.
Mit eigenem Plugin. Schlank. DSGVO-konform.
Und so gebaut, wie Du’s brauchst.

Basis: Custom Post Type fĂŒr „Kontakt“

function ds_kontakt_posttype() {
    register_post_type('kontakt', [
        'label'         => 'Kontakte',
        'public'        => false,
        'show_ui'       => true,
        'supports'      => ['title'],
        'menu_icon'     => 'dashicons-id-alt',
        'capability_type' => 'post',
    ]);
}
add_action('init', 'ds_kontakt_posttype');

Metafelder fĂŒr Details

Jeder Kontakt hat:

  • Firma
  • E-Mail
  • Telefon
  • Status
  • Notizfeld

Du kannst Advanced Custom Fields (ACF) nehmen – oder selber speichern.

function ds_kontakt_speichern($post_id) {
    if (get_post_type($post_id) !== 'kontakt') return;

    if (isset($_POST['ds_email'])) {
        update_post_meta($post_id, 'ds_email', sanitize_email($_POST['ds_email']));
    }

    if (isset($_POST['ds_status'])) {
        update_post_meta($post_id, 'ds_status', sanitize_text_field($_POST['ds_status']));
    }
}
add_action('save_post', 'ds_kontakt_speichern');

Formular zum Anlegen eines Kontakts

<form action="<?php echo esc_url(admin_url('admin-post.php')); ?>" method="POST">
  <input type="hidden" name="action" value="ds_neuer_kontakt">
  <input type="text" name="firma" placeholder="Firma" required>
  <input type="email" name="ds_email" placeholder="E-Mail" required>
  <select name="ds_status">
    <option value="neu">Neu</option>
    <option value="interessiert">Interessiert</option>
    <option value="abgeschlossen">Abgeschlossen</option>
  </select>
  <button type="submit">Speichern</button>
</form>

Verarbeitung im Plugin

add_action('admin_post_ds_neuer_kontakt', 'ds_neuer_kontakt');

function ds_neuer_kontakt() {
    $firma  = sanitize_text_field($_POST['firma']);
    $email  = sanitize_email($_POST['ds_email']);
    $status = sanitize_text_field($_POST['ds_status']);

    $post_id = wp_insert_post([
        'post_type'  => 'kontakt',
        'post_title' => $firma,
        'post_status'=> 'publish',
    ]);

    if ($post_id) {
        update_post_meta($post_id, 'ds_email', $email);
        update_post_meta($post_id, 'ds_status', $status);
    }

    wp_redirect(admin_url('edit.php?post_type=kontakt'));
    exit;
}

Filterung nach Status im Admin

function ds_kontakt_filter($query) {
    if (!is_admin() || $query->get('post_type') !== 'kontakt') return;

    if (!empty($_GET['ds_status'])) {
        $query->set('meta_query', [
            [
                'key'     => 'ds_status',
                'value'   => sanitize_text_field($_GET['ds_status']),
                'compare' => '='
            ]
        ]);
    }
}
add_action('pre_get_posts', 'ds_kontakt_filter');

Erweiterbar mit Aufgaben, Erinnerungen, E-Mail

FeatureLösungsidee
AufgabenEigener CPT „Aufgabe“
RĂŒckrufeDatum + wp_cron + Mail
KommunikationKontaktlog als CPT oder Kommentar
ExportCSV-Download per Button

Mein Fazit

Kein CRM von der Stange.
Aber alles, was Du brauchst.
Und vor allem: in Deiner Hand.

Wenn Du’s vernĂŒnftig baust, hast Du ein leichtgewichtiges, internes CRM – ohne Lizenzmodell.

Schlagwörter: