Ziel: Kunde füllt Formular aus – Du bekommst fertiges Angebot

Du willst:

  • weniger manuelles Schreiben
  • Angebote als PDF oder HTML
  • dynamisch je nach Eingabe
  • direkt per E-Mail ans Team oder den Kunden

Funktioniert mit WordPress, einem Formular-Plugin (z. B. Gravity Forms, Contact Form 7, WPForms)
und etwas eigener PHP-Logik.

Ich zeig Dir ein Beispiel mit admin-post.php, damit es überall läuft.

Formular erstellen

Du baust ein klassisches HTML-Formular mit POST-Methode.

<form action="<?php echo esc_url(admin_url('admin-post.php')); ?>" method="POST">
  <input type="hidden" name="action" value="ds_angebot_absenden">
  <input type="text" name="firma" placeholder="Firmenname" required>
  <input type="email" name="email" placeholder="E-Mail" required>
  <select name="paket">
    <option value="basic">Basic</option>
    <option value="pro">Pro</option>
  </select>
  <textarea name="bemerkung" placeholder="Sonstige Wünsche"></textarea>
  <button type="submit">Angebot anfordern</button>
</form>

Verarbeitung: admin_post-Hook

add_action('admin_post_nopriv_ds_angebot_absenden', 'ds_angebot_erzeugen');
add_action('admin_post_ds_angebot_absenden', 'ds_angebot_erzeugen');

function ds_angebot_erzeugen() {
    $firma     = sanitize_text_field($_POST['firma']);
    $email     = sanitize_email($_POST['email']);
    $paket     = sanitize_text_field($_POST['paket']);
    $bemerkung = sanitize_textarea_field($_POST['bemerkung']);

    $preis = ds_preis_berechnen($paket);

    $angebot = ds_angebot_template([
        'firma'     => $firma,
        'paket'     => ucfirst($paket),
        'preis'     => number_format($preis, 2, ',', '.') . ' €',
        'bemerkung' => $bemerkung,
        'datum'     => date('d.m.Y'),
    ]);

    wp_mail($email, 'Ihr Angebot', $angebot, ['Content-Type: text/html']);

    wp_redirect(home_url('/danke/'));
    exit;
}

Angebotslogik: Preis berechnen

function ds_preis_berechnen($paket) {
    $preise = [
        'basic' => 499,
        'pro'   => 899,
    ];

    return $preise[$paket] ?? 0;
}

Angebotslayout als HTML

function ds_angebot_template($data) {
    ob_start();
    ?>
    <h2>Angebot vom <?php echo esc_html($data['datum']); ?></h2>
    <p><strong>Firma:</strong> <?php echo esc_html($data['firma']); ?></p>
    <p><strong>Gewähltes Paket:</strong> <?php echo esc_html($data['paket']); ?></p>
    <p><strong>Preis:</strong> <?php echo esc_html($data['preis']); ?></p>
    <?php if ($data['bemerkung']) : ?>
        <p><strong>Bemerkung:</strong><br><?php echo nl2br(esc_html($data['bemerkung'])); ?></p>
    <?php endif; ?>
    <p>Dieses Angebot ist 14 Tage gültig.</p>
    <?php
    return ob_get_clean();
}

Optional: PDF statt HTML

Du kannst dompdf/dompdf per Composer installieren.

use Dompdf\Dompdf;

function ds_angebot_als_pdf($html) {
    $dompdf = new Dompdf();
    $dompdf->loadHtml($html);
    $dompdf->render();

    return $dompdf->output();
}

Dann die Datei anhängen statt HTML-Mail.

$attachment = ds_angebot_als_pdf($angebot);
$tmp_file = tempnam(sys_get_temp_dir(), 'angebot_') . '.pdf';
file_put_contents($tmp_file, $attachment);

wp_mail($email, 'Ihr Angebot', 'Im Anhang finden Sie Ihr Angebot.', [
    'Content-Type: text/plain',
], [$tmp_file]);

Erweiterungen für KMU

FunktionUmsetzungsidee
Angebot speichernals CPT „angebot“
Statusverfolgung„angefragt“, „angenommen“ usw.
Dashboard für AdminsWP-Admin-Übersicht
Folgeaktionenz. B. automatischer Rückruf
CRM-AnbindungREST-API zu externem System

Mein Fazit

Formular + PHP + ein bisschen Logik = vollautomatisches Angebotssystem.
Läuft in Deinem WordPress, DSGVO-konform, ohne SaaS-Kosten.

Categories:

Tags:

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert