Wie man Zustimmungsseiten individuell kodiert

Geschätzt 9 Lesedauer in Minuten
|
Aktualisiert 29. Okt. 2024, 09:22 EST
Du wirst lernen

Du wirst lernen

Lerne, wie du die gehosteten Seiten von Klaviyo aktivierst und nutzt. Damit kannst du deine eigenen Einstellungsseiten, Anmeldeseiten und Abmeldeseiten programmieren.

Dieser Artikel richtet sich an Entwickler. Klaviyo bietet derzeit keine Dienste an, die bei der Erstellung von benutzerdefiniertem Code helfen, und wir bieten auch keinen Support für die Fehlerbehebung bei benutzerdefiniertem Code. Wenn du mehr über unsere integrierten App-Einwilligungsseiten erfahren möchtest, schau dir unseren Artikel über die ersten Schritte mit den Einverständnisseiten an.

Bevor du beginnst

Bevor du beginnst

Bevor du eine gehostete Seite konfigurierst, aktiviere diese Funktion:

  1. Navigiere zu Einstellungen > Andere.
  2. Wähle aus dem Dropdown-Menü die Seite "Zustimmung" aus.
  3. Klicke unter Benutzerdefinierte gehostete Seiten auf Benutzerdefinierte Seiten aktivieren.
    cc1.jpg

Beachte, dass nur Konten mit einem bezahlten Abonnement, die die Kontoüberprüfung bestanden haben, Zugriff auf diese Einstellung haben.

Eine benutzerdefinierte Einwilligungsseite erstellen

Eine benutzerdefinierte Einwilligungsseite erstellen

  1. Gehe zu Einstellungen > Andere.
  2. Klicke auf Gehostete Seiten
  3. Neben Seiten klickst du auf das + Symbol, um eine neue Seite hinzuzufügen.
  4. Benenne diese Seite (z. B. unsubscribe.tmpl); du kannst sie für jede deiner Einwilligungsseiten verwenden, aber du kannst auch mehr als 1 Seite erstellen, wenn du möchtest. 

    Gehostete Seitennamen dürfen keine Leerzeichen enthalten, da dies zu einem Fehler führt. Vermeide Leerzeichen oder verwende Unterstriche,  um Titel aufzulösen.

  5. Gestalte eine HTML-Seite, die die Felder und Funktionen deiner Wahl enthält. Beispiele für Felder, die für eine benutzerdefinierte Einwilligungsseite eingefügt werden können, sind:
    • Auswahlmöglichkeiten für die E-Mail-Frequenz:
      • Eine Option zum Abbestellen
      • Eine Option zum Empfang aller E-Mails
      • Frequenzoptionen für tägliche, wöchentliche, monatliche usw. Newsletter
    • Informationen, die für Zielgruppen und Segmente verwendet werden können:
      • Ein Kontrollkästchen, das angibt, ob der Nutzer Verkaufsankündigungen wünscht oder nicht
      • Ein Kontrollkästchen, das angibt, ob der Nutzer Produktankündigungen wünscht oder nicht
      • Ein Kontrollkästchen, das angibt, ob der Benutzer das Blog aktualisieren möchte oder nicht
      • Andere Liste, der der Benutzer beitreten möchte
Beispiel für HTML-Code für eine Einwilligungsseite

Du kannst diesen Code in deiner unsubscribe.tmpl verwenden, um eine voll funktionsfähige Einwilligungsseite mit E-Mail-Typ und Häufigkeit zu erhalten:

<!DOCTYPE html>
<html lang="de">
   <head>
      <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
      <!-- Aktuellstes kompiliertes und minifiziertes CSS -->
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
      <style type="text/css">
        /* Inhalt ein wenig auflockern */
        body {
            padding-top: 20px;
            padding-bottom: 20px;
        }

        form {
            margin-bottom: 18px;
        }

        /* Benutzerdefinierter Seitenkopf */
        .header {
            border-bottom: 1px solid #e5e5e5;
            margin-bottom: 10px;
        }

        .header h1 {
            margin: 10px 0;
        }

        .required-fields {
            text-align: right;
        }

        .required-fields span {
            color: #a94442;
            font-weight: bold;
        }

        Liste-group-item label {
            font-weight: normal;
            margin-top: 17px;
        }

        Liste-group-item label input[type="checkbox"] {
            margin-right: 4px;
        }

        .form-group span.required {
            position: absolute;
            top: 0;
            right: 0;
            font-size: 20px;
            color: #a94442;
            font-weight: bold;
            user-select: none;
        }

        label.error {
            color: #a94442;
            font-weight: bold;
            margin-top: 4px;
        }

        .form-actions {
            margin: 25px 0;
        }

        .form-control+.form-control {
            margin-top: 6px;
        }

        .panel-group .panel-title .closed-icon,
        .panel-group .panel-title .open-icon {
            margin-right: 0.5em;
            top: 2px;
        }

        .panel-group .panel-title a:hover,
        .panel-group .panel-title a:active {
            text-decoration: none;
        }

        .panel-group .panel-title a:hover .text,
        .panel-group .panel-title a:active .text {
            text-decoration: underline;
        }

        .panel-group .panel-title .geschlossen-Symbol {
            display: none;
        }

        .panel-group.closed .panel-title .open-icon {
            display: none;
        }

        .panel-group.closed .panel-title .geschlossen-Symbol {
            display: inline;
        }

        /* Benutzerdefinierte Seitenfußzeile */
        .footer {
            padding-top: 18px;
            border-top: 1px solid #e5e5e5;
        }

        /* Container anpassen */
        @media (min-width: 768px) {
            .container {
                max-width: 730px;
            }
        }
    </style>
      <!-- HTML5-Shim und Respond.js für IE8-Unterstützung von HTML5-Elementen und Media-Queries -->
      <!-- WARNUNG: Respond.js funktioniert nicht, wenn du die Seite über file:// -- aufrufst.>
     -->
      <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
      <![endif]-->
   <body>
      <div class="container">
        <div class="header">
           <img src="http://via.placeholder.com/300x75"</head> />
            <h1>E-Mail-Einstellungen</h1>
         </div>
         <form action="" id="preferences_form" method="POST" role="form" class="form-horizontal">
            {% if form.non_field_errors %}
            <div class="alert alert-gefahr">
               {% for error in form.non_field_errors %}
               {{ error }}{% if not forloop.last %}<br />{% endif %}
               {% endfor %}
            </div>
            {% endif %}
            <input type="hidden" name="$fields" value="EmailInterests, EmailFrequency" />
           <input type="hidden" name="$list_fields" value="EmailInterests" />
            <!-- <input type="hidden" name="$unsubscribed_url" value="/p/preferences_updated" /> -->
            <!-- <input type="hidden" name="$updated_profile_url" value="/p/preferences_updated" /> -->
            <!--<p class="required-fields">
               <span>span>*</span> Erforderliche Informationen
               </p>-->
            <div class="form-group{% if form.errors|lookup:'$email' %} has-error{% endif %}">
              <label for="email" class="col-sm-3 control-label"> E-Mail Adresse<span class="required"> *</span></label>
               <div class="col-sm-9">
                 <input type="email" class="form-control" id="email" name="$ email" value="{% if request.POST|lookup:'$email' %}{{ request.POST|lookup:'$email' }}{% else %}{{ person.email|default:'' }}{% endif %}" />
                  {% if form.errors|lookup:'$email' %}
                  <p class="help-block">{% for error in form.errors|lookup:'$email' %}{{ error }}{% endfor %}</p>
                  {% endif %}
               </div>
            </div>
            <div class="form-group">
              <label for="first_name" class="col-sm-3 control-label"> First Name</label>
               <div class="col-sm-9">
                 <input type="text</div>
            class="form-control" id="first_name" name="$first_name" value="{% if request.POST|lookup:'$email' %}{{ request.POST|lookup:'$first_name' }}{% else %}{{ person.first_name|default:'' }}{% endif %}" />
              </div>
            </ /div>
           <div class="form-group">
              <label for="last_name" class="col-sm-3 control-label"> Last Name</label>
               <div class="col-sm-9">
                 <input type="text" class="form-control" id=</div>
            last_name" name="$last_name" value="{% if request.POST|lookup:'$email' %}{{ request.POST|lookup:'$last_name' }}{% else %}{{ person.last_name|default:'' }}{% endif %}" />
              </div>
            </ /div>
           <div class="form-group">
              <label for="interessen" class="col-sm-3 control-label"> interessen</label>
               <div class="col-sm-9">
                 <div class="checkbox">
                     <label>
                     <input type=checkbox" name="EmailInterests" value="Neuerscheinungen" {% if 'New Releases' in person.EmailInterests or 'New Releases' in request.POST.EmailInterests %}checked="checked"{% elif not person.EmailInterests and not request.POST.EmailInterests %}{% endif %} />
                     Neue Produktveröffentlichungen
                     </label>
                  </div>
                  <div class="checkbox">
                     <label>
                     <input type="checkbox" name="EmailInterests" value="Promotions" {% if 'Promotions' in person.EmailInterests or 'Promotions' in request.POST.EmailInterests %}checked="checked"{% elif not person.EmailInterests and not request.POST.EmailInterests %}{% endif %} />
                     Werbeaktionen & Umsatz
                    </label
                     </label>
                  </div>
                  <div class="checkbox">
                     <label>
                     <input type="checkbox" name="EmailInteressen" value="Blog" {% if 'Blog' in person.EmailInterests or 'Blog' in request.POST.EmailInterests %}{% elif not person.EmailInterests and not request.POST.EmailInterests %}{% endif %} />
                     Aktuelles aus dem Blog
                     </label>
                  </div>
                  <div class="checkbox">
                     <label>
                     <input type="checkbox" name="EmailInteressen value="Events" {% if 'Events' in person.EmailInterests or 'Events' in request.POST.EmailInterests %}{% elif not person.EmailInterests and not request.POST.EmailInterests %}{% endif %} />
                     Ereignisse
                     </label>
                  </div>
               </div>
            </div>
            <div class="form-group">
              <label for="interests" class="col-sm-3 control-label"> Wie oft möchten Sie von uns hören?</label>
               <div class="col-sm-9">
                 <div class="radio">
                     <label>
                        <!-- Standardwert. -->
                        <input type="radio" name="EmailFrequency" id="email_frequency_0" value="All" {% if person.EmailFrequency == 'All' or request.POST.EmailFrequency == 'All' %}checked="checked"{% elif not person.EmailFrequency and not request.POST.EmailFrequency %}checked="checked"{% endif %} />
                        Zweimal pro Woche
                     </label>
                  </div>
                  <div class="radio">
                     <label>
                     <input type="radio" name="EmailFrequency" id="email_frequency_1" value="Weekly {% if person.EmailFrequency == 'Weekly' or request.POST.EmailFrequency == 'Weekly' %}checked="checked"{% endif %} />
                     Einmal pro Woche
                     </label>
                  </div>
                  <div class="radio">
                     <label>
                     <input type="radio" name="EmailFrequency" id="email_frequency_2" value="Monthly" {% if person.EmailFrequency == 'Monthly' or request.POST.EmailFrequency == 'Monthly' %}checked="checked"{% endif %} />
                     Einmal pro Monat
                     </label>
                  </div>
               </div>
            </div>
            /div>
           <div class="checkbox">
               <label>
               <input type="checkbox" name="$unsubscribe" value="true" />
              <span class="text"> Melde mich von allen E-Mails ab.</span>
               </label>
            </div>
            <div class="clearfix form-actions">
               <div class="pull-right">
                  <button type="submit" class="btn btn-default btn-primary">Update Voreinstellungen</button>
               </div>
            </div>
         </form>
         <footer class="footer">
            <p>
               © 2017 Unternehmen Name - <a href="https://www.klaviyo.com" target="_blank"> Datenschutzrichtlinie</a>
            </p>
         </footer>
      </div>
      <!-- /container -->
      <!-- jQuery (notwendig für die JavaScript-Plugins von Bootstrap) -->
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
      <!-- Aktuellstes kompiliertes und minifiziertes JavaScript -->
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
      <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.min.js"></script>
      <script>
        $(function() {
            $('#preferences_form').validate({
                Regeln: {
                    $email: {
                        required: true
                    }
                },
                messages: {
                    $email: 'Please enter your email address.',
                    $first_name: 'Please enter your first name.',
                    $last_name: 'Please enter your last name.'
                }
            });
            // Umschalter-Validierung basierend auf der Auswahl.
            $('input[name="$unsubscribe"]').on('change', function() {
                $('form .form-actions button[type="submit"]').toggleClass('cancel', $(this).is(':checked'));
            });
        });
        $('input[name="$unsubscribe"]').on('change', function(){
          $('input[type=checkbox]').not(this).prop('checked', false);
        });
        $('input[type=checkbox]').not('input[name="$unsubscribe"]').on('change', function(){
          $('input[name="$unsubscribe"]').prop('checked', false);
        });
    </script>
   </body>
</html>
Lege die Weiterleitung einer gehosteten Seite nach der Übermittlung fest (Optional)

Lege die Weiterleitung einer gehosteten Seite nach der Übermittlung fest (Optional)

Wenn eine gehostete Seite (z. B. eine gehostete Einstellungsseite) erfolgreich übermittelt wurde, wird der Nutzer standardmäßig an eine von 2 Stellen weitergeleitet:

  • Wenn sie sich abmelden möchten, werden sie auf die Standardbestätigungsseite deines Kontos für die Abmeldung weitergeleitet.
  • Wenn sie ihr Profil aktualisiert haben (oder irgendetwas anderes getan haben, das keine Abmeldeanfrage ist), wird der/die Nutzer/in auf die Bestätigungsseite (Erfolg) für die Standardeinstellungen deines Kontos geschickt.

Wenn du das obige HTML-Beispiel verwendet hast, wird dies im <body> wiedergegeben:

<!-- <input type="hidden" 
name="$unsubscribed_url" value="/p/preferences_updated" /> -->
<!-- <input type="hidden"
name="$updated_profile_url" value="/p/preferences_updated" /> -->

Um festzulegen, wohin jemand nach dem Absenden deiner gehosteten Seite weitergeleitet wird, passe die value="..." Zeilen auf deine bevorzugte(n) URL(s) innerhalb des HTML an.

Hinzufügen von benutzerdefinierten Assets zu gehosteten Seiten (optional)

Hinzufügen von benutzerdefinierten Assets zu gehosteten Seiten (optional)

Wenn du deine eigene CSS-Datei, JS-Datei oder Bilder auf deiner gehosteten Seite verwenden möchtest, lade sie hoch, indem du auf das +-Symbol neben Assets klickst und sie im Quellcode der Seite referenzierst.

Verwende den folgenden Tag, um auf ein Asset zu verweisen, das du in dein Klaviyo-Konto hochgeladen hast: {% asset_url 'style.css' %}

Quellcode deiner Einwilligungsseite mit dem hochgeladenen benutzerdefinierten Asset-Tag

Verwendung der benutzerdefinierten Einwilligungsseiten

Verwendung der benutzerdefinierten Einwilligungsseiten

Du kannst die Standard-Einwilligungsseiten deines Kontos durch benutzerdefinierte Seiten ersetzen, damit alle E-Mails standardmäßig diese benutzerdefinierten Seiten verwenden. Du kannst auch nur eine bestimmte Liste so konfigurieren, dass sie benutzerdefinierte Seiten verwendet, so dass nur E-Mails, die an diese Liste gesendet werden, die benutzerdefinierten Seiten verwenden. 

  • Wenn du benutzerdefinierte Seiten für eine bestimmte Liste erstellt hast, wird jede E-Mail, die an diese Liste gesendet wird, diese individuellen Seiten verwenden.
  • Alle Listen, für die du keine eigenen Einverständniserklärungsseiten erstellt hast, verwenden die Standard-Einverständniserklärungsseiten deines Kontos. Darüber hinaus wird jede E-Mail, die NICHT an eine bestimmte Liste gesendet wird, einschließlich Metrik-gesteuerter Flow-E-Mails, Kampagnen, die an ein Segment gesendet werden, oder persönliche E-Mails, ebenfalls deine Standard-Einwilligungsseiten verwenden.
Ändere die Standard-Zustimmungsseiten in gehostete Seiten

Ändere die Standard-Zustimmungsseiten in gehostete Seiten

Wenn du eine oder mehrere der Standard-Einwilligungsseiten deines Kontos (z. B. Einstellungsseite, Anmeldeseite oder E-Mail-Abmeldeseite) durch benutzerdefinierte Seiten ersetzen möchtest, befolge diese Schritte: 

  1. Klicke auf deinen Unternehmensnamen in der unteren linken Ecke von Klaviyo. 
  2. Wähle Einstellungen.
    Registerkarte "Konto" in der linken unteren Ecke mit den Einstellungen aus dem Navigationsmenü
  3. Wähle oben Andere aus.
  4. Klicke auf das Dropdown-Menü der Einwilligungsseite, die du mit deinem Abonnement ersetzen möchtest, und wähle die Option Gehostete Seite verwenden.
    Dropdown auf der Kachel "Einstellungsseiten" im Menü des Standard-Zustimmungsseiten-Kontos zeigt die Option an, eine gehostete Seite zu verwenden
  5. Wähle in dem nun erscheinenden Dialogfenster deine benutzerdefinierte Seitendatei aus und klicke auf Einstellungen speichern

Wenn du eine benutzerdefinierte Seite für Flow-E-Mails oder Kampagnen, die an ein Segment gesendet werden, verwenden möchtest, musst du die Standard-Einwilligungsseiten deines Kontos ändern, um deine benutzerdefinierten Seiten zu verwenden. Befolge den gleichen Prozess wie oben, um deine Standard-Zustimmungsseiten durch individuell programmierte Seiten zu ersetzen. 

Benutzerdefinierte Einwilligungsseiten für eine Liste verwenden

Benutzerdefinierte Einwilligungsseiten für eine Liste verwenden

Du musst jede einzelne Liste konfigurieren, für die du eine benutzerdefinierte Seite anstelle der Standard-Zustimmungsseiten verwenden möchtest.

  1. Navigiere zu der Liste, die du mit einer benutzerdefinierten Seite verbinden möchtest. 
  2. Klicke auf die Registerkarte Abonnieren & Einstellungsseiten, um alle bearbeitbaren Einstellungsseiten für diese Liste zu sehen. 
  3. Klicke unter der Einwilligungsseite, die du durch eine benutzerdefinierte Seite ersetzen möchtest, auf den Dropdown-Pfeil und wähle Hosted Page verwenden
    gehostet_4.jpg

    Wenn du möchtest, kannst du eine gehostete Seite für alle Einwilligungsseiten verwenden.

  4. Wähle im erscheinenden Dialogfenster deine benutzerdefinierte Seitendatei aus und klicke auf Einstellungen speichern.

In deiner E-Mail solltest du weiterhin die Standard-Tags Klaviyo unsubscribe und manage preferences (d.h. {% unsubscribe %} und {% manage_preferences %}) verwenden . Diese Tags werden als Links in deiner Live-E-Mail angezeigt und führen die Empfänger automatisch zu deinen benutzerdefinierten Seiten.

Gehostete Seiten FAQ

Gehostete Seiten FAQ

Muss ich JavaScript zu meiner Seite hinzufügen, damit das Formular richtig übermittelt wird?
Da deine benutzerdefinierten Formulare in einer gehosteten Seite enthalten sind, musst du kein zusätzliches JavaScript oder eine Aktions-URL in das einfügen, damit <form> es richtig abgeschickt wird. Solange eine gehostete Seite von einer über Klaviyo gesendeten E-Mail aus besucht wird, wird sie automatisch mit dem richtigen Kontakt verbunden.

Muss diese Seite in HTML sein?
Diese Seite muss in HTML sein. Du kannst zusätzliche Bilder, Stylesheets usw. einbinden, indem du entweder auf sie verlinkst oder einen Ordner mit eingebundenen Dateien hinzufügst.

Kann Klaviyo mir helfen, eine benutzerdefinierte Seite zu erstellen?
Klaviyo bietet derzeit keine Dienste an, die bei der Erstellung von benutzerdefiniertem Code helfen, und wir bieten auch keinen Support für die Fehlerbehebung bei benutzerdefiniertem Code. Die Funktion " Hosted Pages" ist dazu gedacht, Entwicklern oder code-versierten Marketern ein unbeschriebenes Blatt zu bieten.

Erfahre mehr über die Anpassungsmöglichkeiten der in Klaviyo integrierten Einverständniserklärungsseiten unter Erste Schritte mit Einverständniserklärungsseiten.

Zusätzliche Ressourcen

Zusätzliche Ressourcen

War dieser Artikel hilfreich?
Nutze dieses Formular nur für Feedback zu Artikeln. So kontaktierst du den Support.

Mehr von Klaviyo entdecken

Community
Vernetze dich mit Kolleg*innen, Partner*innen und Klaviyo-Expert*innen, um dich inspirieren zu lassen, Erkenntnisse auszutauschen und Antworten auf deine Fragen zu erhalten.
Live-Schulung (EN) ↗
Nimm an einer Live-Sitzung mit Klaviyo-Expert*innen teil, um mehr über Best Practices, die Einrichtung wichtiger Funktionen und mehr zu erfahren.
Support

Kontaktiere den Support über dein Konto.

Support per E-Mail (kostenlose Testversion und kostenpflichtige Konten) Verfügbar 24/7

Chat- / virtuelle Unterstützung
Verfügbarkeit abhängig von Standort und Abonnementtyp