0 votes
in SoSci Survey (dt.) by s121571 (150 points)

Hallo zusammen,

ich habe ein ähnliches Problem. Ich möchte für meine Masterarbeit gerne mehrwellig (zwei Messzeitpunkte mit 4 Wochen Abstand) erheben.
Dabei habe ich noch keine E-Mail Adressen vorliegen, sondern erhebe mittels Selbstrekrutierung.
Hierfür möchte ich, dass sich die Teilnehmer mit ihrer E-Mail Adresse über Single Opt-in eintragen und dann direkt nach Eingabe der E-Mail Adresse zum Hauptfragebogen weitergeleitet werden (keine Bestätigungsmail). Mein Hauptfragebogen arbeitet dann mit mailResume und Unterbrecherseite zwischen den beiden Messzeitpunkten.

Wie kann ich eine Verbindung zwischen der Abfrage der E-Mail Adresse (Single Opt-in) und dem Beginn des Hauptfragebogens herstellen?

Der Befehl mailSchedule liefert folgende Fehlermeldung: Dieses Interview wurde nicht in Verbindung mit einer Serienmail begonnen, daher kann mailSchedule() den passenden Adressaten nicht ermitteln.

Vielen Dank für Ihre Hilfe und viele Grüße
Eva

1 Answer

0 votes
by SoSci Survey (327k points)

Wie kann ich eine Verbindung zwischen der Abfrage der E-Mail Adresse (Single Opt-in) und dem Beginn des Hauptfragebogens herstellen?

Sie haben beim Opt-In zwei Möglichkeiten. Variante 1 mit Double-Opt-In:

  1. Ausfüllen des Opt-In-Fragebogens (Fragebogen 1a)
  2. Empfangen der Bestätigungsmails
  3. Klick auf den Link und damit automatische Weiterleitung zu Fragebogen 1b
  4. In Fragebogen 1b wird erst das mailSchedule() verwenden

Variante 2 mit Single-Opt-In:

  1. Ausfüllen des kombinierten Opt-In- und Welle-1-Fragebogens
  2. In Fragebogen 1a ein mailSchule(), bei welchem Sie als ersten Parameter value() mit der Kennung der Opt-In-Frage eintragen.

Wenn Ihre Opt-In-Frage also die Kennung OI01 hat, dann würde Sie auf der Seite nach dem Single-Opt-In (oder später) folgendes schreiben:

mailSchedule(value('OI01'), 1, strtotime('+4 weeks'));
by s121571 (150 points)
Vielen Dank :)
Genau ich möchte gerne mit Single-Opt-in arbeiten, *ohne* dass dabei aber eine Mail wirklich an den Teilnehmer rausgeschickt wird. Das heißt, ich verschicke den Link zum Opt-In Fragebogen (qnr1) und dann tragen sich die Teilnehmer ein und sollen automatisch zum Hauptfragebogen (qnr2), der dann wiederum durch Unterbrecherseiten zwei Fragebogenteile für zwei Messzeitpunkte enthält, gelangen.
Also werden tatsächlich zwei Fragebögen erstellt, einer für Opt-In und einer für den Hauptfragebogen? Das funktioniert bei mir irgendwie noch nicht. Und wo wird dann oben genannter Code platziert?

Und wie kann ich es einstellen, dass die Teilnehmer wirklich keine Bestätigungsmail erhalten sondern automatisch weitergeleitet werden?

Ist es auch möglich die Single-Opt-in Frage erst am Ende des ersten Teils des Hauptfragebogens zu stellen, damit Teilnehmer erst dort ihre E-Mail Adresse eintragen müssen zur Versendung der Serienmail zum Messzeitpunkt 2. Das wäre eleganter, als sie direkt zu Beginn nach ihrer E-Mail Adresse zu fragen.

Vielen lieben Dank für Ihre Hilfe!
by SoSci Survey (327k points)
> Also werden tatsächlich zwei Fragebögen erstellt, einer für Opt-In und einer für den Hauptfragebogen?

Nur beim Double-Opt-In, wie oben beschrieben ("Variante 1").

> Ist es auch möglich die Single-Opt-in Frage erst am Ende des ersten Teils des Hauptfragebogens zu stellen, damit Teilnehmer erst dort ihre E-Mail Adresse eintragen müssen

Wenn Sie noch eine E-Mail versenden möchten, muss mindestens noch eine Seite mit dem mailSchedule() folgen. Wenn diese Seite keine weiteren Inhalte zeigt, gelangt der Teilnehmer dann automatisch zur Verabschiedung.
by s121571 (150 points)
Super, vielen Dank!

Ich habe jetzt die Seite mit der Opt-In Frage kurz vor Abschluss des ersten Teil des Hauptfragebogens platziert, also kurz vor der Unterbrecherseite. Zwischen Opt-In und Unterbrecherseite habe ich die beiden folgenden Codes platziert:

mailSchedule(value('EM01'), 1, 1);
mailSchedule(value('EM01'), 2, strtotime('+4 weeks'));

Der obere für die Serienmail die im Hintergrund verschickt wird, aber nie wirklich verschickt wird und der untere für die Serienmail mit Link zum zweiten Hauptfragebogenteil. Stimm das denn so? :)

Dann gelange ich automatisch zur Verabschiedung nach der Opt-in Frage. Dabei kommt folgende Fehlermeldung:

Dieses Interview wurde nicht in Verbindung mit einer Serienmail begonnen, daher kann mailResume() den passenden Adressaten nicht ermitteln.

Dies ist mein verwendeter PHP Code:

// Die Zeit des ersten Aufrufs der Unterbrecherseite wird in Variable $timepart1 gespeichert
// isset() und registerVariable() verhindern, dass diese Zeit beim erneuten Aufruf der Seite (z.B. Neuladen der Seite) geändert wird und/oder dass E-Mails doppelt geplant werden
if (!isset($timepart1)) {
  // Zeit speichern
  $timepart1 = time();
  registerVariable($timepart1);
 
  // Einladung mit der Serienmail ID 2 zum zweiten Messzeitpunkt nach 28 Tagen senden
  // Der Zeitabstand wird jeweils in Sekunden angegeben: 28 x 24 x 3600 Sekunden = 28 Tage
  mailResume(false, 2, 28 * 24 * 3600);
 
  // Erste Erinnerungsmail mit Serienmail ID 3 nach 32 Tagen senden
  // (d.h. vier Tage nach der ersten Einladung zum zweiten Messzeitpunkt)
  mailResume(false, 3, 32 * 24 * 3600); array(
  'status' => 'no-response'
);
 
  // Zweite Erinnerungsmail mit Serienmail ID 4 nach 40 Tagen senden
  // (d.h. zwölf Tage nach der ersten Einladung)
  mailResume(false, 4, 40 * 24 * 3600); array(
  'status' => 'no-response'
);
}
 
// Prüfen, wie viel Zeit seit dem ersten Aufruf der Seite vergangen ist
if ((time() - $timepart1) < 28 * 24 * 3600) {
  // Unterbrecherseite anzeigen falls es weniger als 28 Tage sind,
  // damit Teilnehmer nicht schon früher die Fragen des zweiten Messzeitpunkts sehen können.
  option('resume', true); // Kein Hinweis, dass das Interview fortgesetzt wird
  option('nextbutton', false); // Weiter-Knopf ausblenden (Interview unterbrechen)
  text('T002');  // Evtl. eine Verabschiedung zum ersten Fragebogen-Teil anzeigen
} else {
  // Ist der Teilnehmer nach 28 Tagen zurückgekehrt und somit die aktuelle Zeit minus die neue Zeit-Variable
  // größer als 28 Tage ist, dann wird die Befragung auf der nächsten Seite fortgesetzt
  goToPage('next');
}

Passt da was nicht?

Vielen lieben Dank für die Hilfe!
by SoSci Survey (327k points)
> also kurz vor der Unterbrecherseite.

Vorsicht... wenn Sie mit einer Unterbrecherseite arbeiten und nicht mit zwei getrennten Fragebögen, dann müssen Sie mailResume() anstatt mailSchedule() verwenden.

> Der obere für die Serienmail die im Hintergrund verschickt wird, aber nie wirklich verschickt wird und der untere für die Serienmail mit Link zum zweiten Hauptfragebogenteil.

Nein, beim Single-Opt-In wird nicht mal eine virtuelle Serienmail verschickt. Die erste Zeile kann demnach raus. Und die zweite - wie gesagt - muss zu mailResume() werden.

> Dieses Interview wurde nicht in Verbindung mit einer Serienmail begonnen, ...

Sicher, dass die Opt-In-Frage die Kennung EM01 hat UND dass diese auf der vorherigen Seite oder noch früher im Fragebogen steht? Sonst kann value() nicht funktionieren, weil es dann vor der Eingabe der Mailadresse aufgerufen werden würde.

Wenn ja, dann posten Sie bitte noch die Debug-Information der Seite: https://www.soscisurvey.de/help/doku.php/de:create:debugging

> Dies ist mein verwendeter PHP Code:

Dort steht ja nun mailResume(), allerdings nicht mit value(), sondern mit false. Sie sind also schon ganz nah dran :)
by s121571 (150 points)
Ich glaube jetzt funktioniert es! :):)

Wenn ich in meinem obigen langen PHP Code statt false value('EM01') einsetze müsste das ja genügen und ich kann diesen Befehl:

mailResume(value('EM01'), 2, strtotime('+4 weeks'));

der zwischen Opt-In und Unterbrecherseite platziert ist löschen, oder? Er sagt ja im Prinzip das gleiche wie der erste mailResume Befehl im langen PHP Code.

Das einzige, was mir jetzt nichtmehr angezeigt wird, ist die geplante Serienmail in vier Wochen unter dem Reiter "Einladungen verschicken" und "Serienmails". Zuvor stand hier die Serienmail, die dann in vier Wochen um die gleiche Uhrzeit verschickt werden soll. Haben Sie dafür noch eine Erklärung?

1000 Dank für Ihre Hilfe! :)
by SoSci Survey (327k points)
> Er sagt ja im Prinzip das gleiche wie der erste mailResume Befehl im langen PHP Code.

Ich würde ihn in der Klammer lassen. Wenn man den Fragebogen öfter aufruft, soll man ja nicht mehrere E-Mails erhalten.

> was mir jetzt nichtmehr angezeigt wird, ist die geplante Serienmail in vier Wochen

Korrekt, denn es wird ja keine Serienmail verschickt, sondern eine Fortsetzungsmail.

Zum Testen können Sie den Zeitraum ja einfach mal auf 4 Minuten oder 4 Stunden reduzieren. Ein paar Tests sollten Sie auf jeden Fall vorab laufen lassen.
by s121571 (150 points)
Super, vielen Dank! Es funktioniert nun :)

> Er sagt ja im Prinzip das gleiche wie der erste mailResume Befehl im langen PHP Code.

>Ich würde ihn in der Klammer lassen. Wenn man den Fragebogen öfter aufruft, soll man ja nicht mehrere E-Mails erhalten.

Was genau meinen Sie damit?
by SoSci Survey (327k points)
Wenn jemand die Seite mehrfach mit F5 neu lädt oder im Browser offen lässt und sie jedes Mal geladen wird, wenn der Browser startet ... das könnte u.U. zu einer größeren Anzahl E-Mails führen.
by s121571 (150 points)
Alles klar, vielen Dank!
 
Bedeutet das also ich brauche zusätzlich zu meinem langen PHP Code, der  eine Seite nach der Single Opt-in Seite platziert ist:

// Die Zeit des ersten Aufrufs der Unterbrecherseite wird in Variable $timepart1 gespeichert
// isset() und registerVariable() verhindern, dass diese Zeit beim erneuten Aufruf der Seite (z.B. Neuladen der Seite) geändert wird und/oder dass E-Mails doppelt geplant werden
if (!isset($timepart1)) {
  // Zeit speichern
  $timepart1 = time();
  registerVariable($timepart1);
 
  // Einladung mit der Serienmail ID 2 zum zweiten Messzeitpunkt nach 28 Tagen senden
  // Der Zeitabstand wird jeweils in Sekunden angegeben: 28 x 24 x 3600 Sekunden = 28 Tage
  mailResume(value('EM01'), 2, 1 * 24 * 3600);
 
  // Erste Erinnerungsmail mit Serienmail ID 3 nach 32 Tagen senden
  // (d.h. vier Tage nach der ersten Einladung zum zweiten Messzeitpunkt)
  mailResume(value('EM01'), 3, 1 * 25 * 3600); array(
  'status' => 'no-response'
);
 
  // Zweite Erinnerungsmail mit Serienmail ID 4 nach 40 Tagen senden
  // (d.h. zwölf Tage nach der ersten Einladung)
  mailResume(value('EM01'), 4, 1 * 26 * 3600); array(
  'status' => 'no-response'
);
}
 
// Prüfen, wie viel Zeit seit dem ersten Aufruf der Seite vergangen ist
if ((time() - $timepart1) < 1 * 24 * 3600) {
  // Unterbrecherseite anzeigen falls es weniger als 28 Tage sind,
  // damit Teilnehmer nicht schon früher die Fragen des zweiten Messzeitpunkts sehen können.
  option('resume', true); // Kein Hinweis, dass das Interview fortgesetzt wird
  option('nextbutton', false); // Weiter-Knopf ausblenden (Interview unterbrechen)
  text('T002');  // Evtl. eine Verabschiedung zum ersten Fragebogen-Teil anzeigen
} else {
  // Ist der Teilnehmer nach 28 Tagen zurückgekehrt und somit die aktuelle Zeit minus die neue Zeit-Variable
  // größer als 28 Tage ist, dann wird die Befragung auf der nächsten Seite fortgesetzt
  goToPage('next');
}

zusätzlich noch einen weiteren PHP Code auf derselben Seite mit folgendem Code:

mailResume(value('EM01'), 2, strtotime('+4 weeks'));

Verhindert dies dann, dass ggf. bei F5 oder Neuladen der Seite eine größere Anzahl E-Mails versendet werden?

Vielen Dank!!
by s121571 (150 points)
Vielleicht noch als Ergänzung: obiger PHP Code ist gerade mein Code zum Testen, ansonsten steht hier dann

 mailResume(value('EM01'), 2, 28 * 24 * 3600);
 mailResume(value('EM01'), 3, 32 * 24 * 3600);
 mailResume(value('EM01'), 3, 40 * 24 * 3600);
by SoSci Survey (327k points)
> zusätzlich noch einen weiteren PHP Code auf derselben Seite mit folgendem Code

Nein, ich wollte nur anraten, dass Sie das mailResume() nicht voranstellen, sondern innerhalb der geschweiften Klammern an der Stelle lassen, wo es ursprünglich war: https://support.soscisurvey.de/?qa=13918/verbindung-single-opt-in-mit-hauptfragebogen&show=13928#c13928

>  ansonsten steht hier dann

Vermutlich wird es mit mailResume() funktionieren, das Sie die gleiche Serienmail mehrfach versenden. Testen Sie dies aber zur Sicherheit gründlich.
by s121571 (150 points)
Alles klar, super! Vielen lieben Dank!

Es funktioniert soweit:) Das einzige was mich jetzt noch verwundert ist, dass die Serienmails, die noch ausstehen nicht bei "Einladungen verschicken" unter "Serienmails" vorgermerkt sind. Haben Sie dafür eine Erklärung oder ist das bei diesem Code jetzt normal? Zuvor beim Testen wurden mir die vorgemerkten Serienmails angezeigt.

Vielen lieben Dank!
by SoSci Survey (327k points)
mailResume() funktioniert in einigen Aspekten anders als mailSchedule(). Zum einen ist der mehrfache Versand derselben Serienmail an denselben Adresseintrag möglich. Zum anderen werden die Versandzeitpunkte grundsätzlich individuell verwaltet und nicht als Versandtermine bei den Serienmails geführt. Das hängt auch damit zusammen, dass die Fortsetzungs-Links in den Mails mit einem einzelnen Interview verknüpft sind. VIele Einstellungen bei der Serienmail im Karteireiter "Fragebogen-Link" sind deshalb bei Verwendung von mailSchedule() auch irrelevant.
by s121571 (150 points)
Alles klar, vielen Dank für die Erklärung. :) Es wird schon alles so klappen dann :)

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...