This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
en:survey:opt-in-live [25.06.2015 10:40] – [PHP Code for Time 1] alexander.ritter | en:survey:opt-in-live [24.05.2021 10:36] – sophia.schauer | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Multi-Wave Surveys with Self-Selection | + | ====== Multi-Wave Surveys with Self-Recruited Respondents |
- | As a general rule, participants' | + | If you want to use the [[: |
- | The two options differ from each other, if the participant has to disclose | + | However, if participants are recruited through links on a website, social media or via advertising banners, |
- | If the participant has to " | ||
- | Another advantage | + | ===== Position |
+ | The e-mailadress is required via a question of the type [[: | ||
+ | Some respondents do not want to provide their email address (whether due to spam/ | ||
- | ===== Request Email Address at the Beginning ===== | + | Asking for the email address very early in the first questionnaire has the following advantages: |
- | * A mailing is creating beforehand for each survey wave (even for the first) (**Invitation Mailings** -> **Mailings**). In the // | + | * Participants who categorically do not wish to provide an email address will be excluded from the study right at the start. These participants do not waste time on the first questionnaire. |
- | * The participant has to register their email address for the study beforehand. An additional questionnaire is created in the survey project in order to do so (**Compose Questionnaire** -> //Further Questionnaires// | + | * You can work with '' |
- | * After this there are two options: | + | |
- | | + | |
- | ==== Manual Sending | + | Asking for the email address by the end of the first questionnaire has the following advantages: |
- | This makes sense if participants should fill in the questionnaire | + | * You will receive more data records for the first questionnaire |
+ | * By the end of the first questionnaire, one has already invested some time in participating and has (hopefully) been able to gain some confidence in the researcher' | ||
- | * Adresses are collected over a period of time -- and when there are enough addresses in the **Address List**, the first mailing (invitation to take part in the first questionnaire) will be sent to everyone. | ||
- | * Further invitations will be manually (and at the same time for everyone) sent using the mailing function. | ||
+ | ===== Step 1: Create Questionnaires ====== | ||
- | ==== Automatic Sending | + | A total of three questionnaires are required, hereafter referred to as " |
- | This option | + | - The first questionnaire (A1) is used for recruitment, |
+ | - The second questionnaire (A2) is called | ||
+ | - A third questionnaire (B) contains the questions for the second survey wave. If further survey dates are planned, additional questionnaires may be needed (C, D, E, ...). | ||
- | | + | Unter **Fragebogen zusammenstellen** -> Karteireiter |
- | * At the end of the questionnaire, | + | |
- | + | ||
- | ===== Request Email Address at the End of the First Questionnaire ===== | + | |
- | * An " | + | Under **Compose questionnaire** -> **Manage questionnaires** please select questionnaire A1 under //Standard questionnaire// and save this setting ({{:button.save.png|Save button}}).. |
- | * In addition, you need another questionnaire (**Compose | + | |
- | * Create a mailing for each survey wave (even for the first) (**Invitation Mailings** -> **Mailings**). In the //Questionnaire Link// tab, which questionnaire should be used for the individual waves is set. For the first mailing, the link does not point to the first questionnaire, | + | |
- | * The scheduling of the time-controlled mailing occurs by using the '' | + | |
- | * Choose this particular mailing in the opt-in question in // | + | |
- | ===== Example ===== | + | The questions for the first survey time point can be distributed between " |
- | The following example demonstrates the use of '' | + | Create a question |
- | ==== Functions ==== | + | With double opt-in, a confirmation email is first sent to the registered email address. Only when the participant clicks on the link in the confirmation mail, the e-mail address will be added to the mail distribution list (**Send invitations** -> **Address list**). This ensures that the email address is correct and that a third party does not simply register foreign email addresses for the study. |
- | * Participants automatically receive an invitation to the next time of measurement (next part of the questionnaire) after a certain time and will not have access to the questions | + | Then insert |
- | * Participants automatically receive reminder emails, if they do not respond to the first invitation to the next time of measurement within a certain amount of time. | + | |
- | ==== Preparation ==== | ||
- | All parts in the questionnaire are arranged one after the other in one questionnaire. " | + | ===== Step 2: Serial Mails ===== |
- | If the participants' | + | Now select **Send Invidation**. There, SoSci Survey may first ask you to agree on an AVV. This is because e-mail |
- | Create a mailing | + | Now please create two [[: |
- | Create two more mailings (ID 2 and 3 in the example). These serve as a reminder, if the participant | + | - The serial mail no. 1 is only used to call the questionnaire " |
+ | - The serial mail no. 2 is the invitation to the second survey wave. It will be sent delayed and its number | ||
+ | - If you plan additional survey times, create additional serial emails accordingly, | ||
- | Create three more mailings (ID 4-6 in the example): An invitation to the third part and two reminders (settings | + | Now please open the opt-in question again for editing. Under // |
+ | The process so far is as follows: | ||
- | ==== PHP Code for Time 1 ==== | + | - The participant clicks on the link to the questionnaire ([[: |
+ | - There he answers questions and (sooner or later) enters his e-mail address in the opt-in question. | ||
+ | - Once the email address has been entered and the data has been submitted to the server by clicking the " | ||
+ | - The participant receives the e-mail and clicks on the confirmation link. This now opens the A2 questionnaire. | ||
- | The values (numbers) in the PHP code are to be adapted to each study, in particular regarding time intervals and mailing IDs. | ||
- | In **Compose Questionnaire**, | + | ===== Schritt 3: Mailversand automatisieren ===== |
+ | Prinzipiell könnten Sie mit der bisherigen Lösung schon arbeiten. Die E-Mail-Adressen werden in der **Adressliste** gespeichert und Sie könnten die Serienmail Nr. 2 manuell versenden, um die Einladung zum zweiten Erhebungszeitpunkt zu versenden. | ||
+ | |||
+ | Oftmals soll der Versand der Einladung aber automatisiert erfolgen. Entweder zu einem vorab definierten Zeitpunkt oder eine bestimmte Zeitspanne nach dem Aufrunf von A2. Dafür wird im Fragebogen A2 [[: | ||
+ | |||
+ | Fügen Sie auf der ersten Seite des Fragebogens A2 ein Element " | ||
+ | |||
+ | <code php> | ||
+ | mailSchedule(false, | ||
+ | </ | ||
+ | |||
+ | Der Befehl '' | ||
+ | |||
+ | - Der erste spezifiziert den Adresseintrag, | ||
+ | - Der zweite Parameter gibt an, welche Serienmail verschickt werden soll. Im Beispiel oben ist das die Serienmail mit der Nummer 2. | ||
+ | - Der dritte Parameter gibt den Zeitpunkt an, wann die Serienmail verschickt werden soll. Dies kann entweder eine Zeitspanne in Sekunden sein oder ein Unix-Zeitstempel. Im obigen Beispiel sind es 7 Tage (7 mal 24 Stunden á 3600 Sekunden). Alterantiv könnten Sie z.B. auch als dritten Parameter eintragen '' | ||
+ | |||
+ | **Tipp:** Tragen Sie zum Testen für den dritten Parameter einen kleinen Wert ein, z.B. 300 Sekunden (5 Minuten). | ||
+ | |||
+ | **Tipp:** Nutzen Sie zum Testen Wegwerf-Mailadressen ([[https:// | ||
+ | |||
+ | Man kann die Registrierung mit einer E-Mail-Adresse beliebig oft testen, sofern man die Adresse anschließend wieder aus der Adressliste löscht (**Einladungen verschicken** -> **Adressliste**). Eine E-Mail-Adresse ist nach Versand der Opt-In-Mail für 10 Minuten blockiert, bevor eine weitere Opt-In-Mail versandt werden kann. | ||
+ | |||
+ | **Tipp:** Starten Sie den ersten Fragebogen unter **Fragebogen zusammenstellen** im Debug-Modus ({{: | ||
+ | |||
+ | Wenn Sie nun den ersten Fragebogen aufrufen, dort eine E-Mail-Adresse eintragen und den Link in der Bestätigungsmail anklicken, dann können Sie unter **Einladungen verschicken** -> **Adressliste** den neuen Adresseintrag sehen. Und unter **Serienmail** sehen Sie auch, dass der Versand der Serienmail an eine Adresse vorbereitet ist. | ||
+ | |||
+ | |||
+ | ==== Mehrere Serienmails ==== | ||
+ | |||
+ | Wenn Sie mehrere Einladungen zu unterschiedlichen Zeitpunkten versenden möchten, dann wiederholen Sie den '' | ||
+ | |||
+ | <code php> | ||
+ | // Einladungsmails | ||
+ | mailSchedule(false, | ||
+ | mailSchedule(false, | ||
+ | mailSchedule(false, | ||
+ | // Erinnerungen | ||
+ | mailSchedule(false, | ||
+ | mailSchedule(false, | ||
+ | mailSchedule(false, | ||
+ | </ | ||
+ | |||
+ | Eine Erinnerungsmails erstellen Sie genauso wie eine Serienmail. Anschließend wählen Sie im Karteireiter // | ||
+ | |||
+ | |||
+ | ===== Hinweise für Teilnehmer ===== | ||
+ | |||
+ | Im Fragebogen A1 sollten Sie den Teilnehmer auf Folgendes hinweisen: | ||
+ | |||
+ | * Je nachdem, welchen Provider oder Mailserver der Teilnehmer verwendet, kann sich die Zustellung der Bestätigungsmail verzögern -- üblich sind 0 bis 30 Minuten. | ||
+ | * Manchmal verfangen sich Bestätigungsmails im Spam-Filter. | ||
+ | * Zur Fortsetzung der Befragung ist es notwendig, in der Bestätigungsmail auf den Bestätigungslink zu klicken. Falls man den Link nicht direkt anklicken kann (sehr selten), muss man ihn evtl. in die Adresszeile des Internet-Browsers kopieren. | ||
+ | |||
+ | |||
+ | ===== Manueller Versand der Einladungen ===== | ||
+ | |||
+ | Als Alternative zur automatisierten Vorbereitung des Versands von Serienmail Nr. 2 können Sie diese Serienmail auch manuell versenden -- '' | ||
+ | |||
+ | Dieses Vorgehen ist sinnvoll, wenn alle Teilnehmer den Fragebogen ungefähr zur selben Zeit ausfüllen sollen. Zwar erstreckt sich der Erhebungszeitraum weiterhin über mehrere Tage, weil nicht jeder sofort auf die E-Mail reagiert -- gerade bei einer längeren Rekrutierung sind die Daten aber in zeitlicher Hinsicht besser vergleichbar als beim automatischen Versand (wo dafür der Zeitabstand zwischen den beiden Erhebungswellen gleich ist). | ||
+ | |||
+ | * Es werden eine Weile Adressen gesammelt -- und wenn genug Adressen in der **Adressliste** liegen, wird die Serienmail Nr. 2 (Einladung zum Fragebogen " | ||
+ | * Sollte die Rekrutierung danach noch forgesetzt werden, kann die Serienmail nach Bedarf erneut verschickt werden. Teilnehmer, welche die Serienmail schon erhalten haben, erhalten sie __nicht__ erneut. Sofern weitere Befragungswellen erfolgen sollen, können weitere Serienmails verschickt werden. | ||
+ | |||
+ | |||
+ | ===== Datensatz ===== | ||
+ | |||
+ | Im Datensatz haben Sie am Ende pro Teilnehmer drei Datenzeilen -- zumindest wenn der Teilnehmer eine gültige E-Mail-Adresse angegeben und die Links in beiden E-Mails angeklickt hat: | ||
+ | |||
+ | - Antworten auf " | ||
+ | - Antworten auf " | ||
+ | - Antworten auf " | ||
+ | |||
+ | Wenn alle Antworten später in der Statistik-Software zu einer Datenzeile verschmolzen werden sollen (MERGE), dann ist es zweckmäßig, | ||
+ | |||
+ | |||
+ | ===== Daten in einer Datenzeile ===== | ||
+ | |||
+ | Statt unterschiedliche Fragebögen für " | ||
+ | |||
+ | Das folgende Beispiel demonstriert die Verwendung von '' | ||
+ | |||
+ | |||
+ | ==== Funktionen ==== | ||
+ | |||
+ | * Teilnehmer erhalten automatisch nach einer bestimmter Zeit die Einladung zum nächsten Messzeitpunkt (nächsten Fragebogenteil) und sollen vor Ablauf dieser Zeit auch keinen Zugriff auf die Fragen des nächsten Fragebogenteils haben. | ||
+ | * Teilnehmer erhalten automatische Erinnerungsmails, | ||
+ | |||
+ | |||
+ | ==== Vorbereitungen ==== | ||
+ | |||
+ | Alle Fragebogen-Teile werden in einem Fragebogen hintereinander angeordnet. Als Zugriffsmodus für den Fragebogen wird " | ||
+ | |||
+ | Falls die E-Mail-Adressen der Teilnehmer __nicht__ vorab bekannt sind, wird ein zweiter Fragebogen mit einer Frage [[: | ||
+ | |||
+ | Legen Sie eine Serienmail (im Beispiel ID 1) an, welche nach 7 Tagen als Einladung für den Messzeitpunkt 2 verschickt werden soll. Im Karteireiter " | ||
+ | |||
+ | Legen Sie zwei weitere Serienmails (im Beispiel ID 2 und 3) an. Diese dienen als Erinnerung, wenn der Teilnehmer den zweiten Fragebogen-Teil nach 9 bzw. 11 Tagen noch noch ausgefüllt hat (Einstellungen wie bei der Serienmail 1). | ||
+ | |||
+ | Legen Sie drei weitere Serienmails (im Beispiel ID 4-6) an: Eine Einladung zum dritten Teil und zwei Erinnerungen (Einstellungen wie bei der Serienmail 1). | ||
+ | |||
+ | |||
+ | ==== PHP-Code für Zeitpunkt 1 ==== | ||
+ | |||
+ | Die Werte (Zahlen) im PHP-Code sind entsprechend der jeweiligen Studie anzupassen, insbesondere Zeitabstände und die Serienmail-IDs. | ||
+ | |||
+ | Zwischen dem ersten und zweiten Fragebogen-Teil wird beim Fragebogen zusammenstellen eine zusätzlich Seite eingefügt (Unterbrecherseite). Die Unterbrecherseite hat folgende Funktion: | ||
+ | |||
+ | * Sie versendet mittels '' | ||
+ | * Wenn der Teilnehmer die Seite erstmals aufruft (am Ende des ersten Fragebogen-Teils), | ||
+ | * Wenn der Teilnehmer die Seite erneut aufruft (nachdem er die Einladung zum zweiten Fragebogen-Teil bekommen hat) leitet sie direkt weiter zur nächsten Seite. | ||
+ | |||
+ | **Wichtig: | ||
+ | |||
+ | Beim **Fragebogen zusammenstellen** wird auf der Unterbrecherseite folgender PHP-Code platziert: | ||
<code php> | <code php> | ||
- | // Time which the page interruption was first accessed | + | // Die Zeit des ersten Aufrufs der Unterbrecherseite wird in Variable |
- | // isset() und registerVariable() | + | // isset() und registerVariable() |
if (!isset($timepart1)) { | if (!isset($timepart1)) { | ||
- | // store time | + | // Zeit speichern |
$timepart1 = time(); | $timepart1 = time(); | ||
registerVariable($timepart1); | registerVariable($timepart1); | ||
- | // Send invitation with mailing | + | // Einladung mit der Serienmail |
- | // Time interval always given in seconds | + | // Der Zeitabstand wird jeweils |
mailResume(false, | mailResume(false, | ||
- | // Send first reminder email with mailing | + | // Erste Erinnerungsmail mit Serienmail |
- | // (i.e. two days after the first invitation to the second period of measurement) | + | // (d.h. zwei Tage nach der ersten Einladung zum zweiten Messzeitpunkt) |
mailResume(false, | mailResume(false, | ||
- | // Send second reminder email with mailing | + | // Zweite Erinnerungsmail mit Serienmail |
- | // (i.e. four days after the first invitation) | + | // (d.h. vier Tage nach der ersten Einladung) |
mailResume(false, | mailResume(false, | ||
} | } | ||
- | // Check how much time has passed since the page was first accessed | + | // Prüfen, wie viel Zeit seit dem ersten Aufruf der Seite vergangen ist |
if ((time() - $timepart1) < 7 * 24 * 3600) { | if ((time() - $timepart1) < 7 * 24 * 3600) { | ||
- | // Display page interruption if this is less than 7 days, | + | // Unterbrecherseite anzeigen falls es weniger als 7 Tage sind, |
- | // so participants cannot see the questions in the second period of measurement before this time has passed. | + | // damit Teilnehmer nicht schon früher die Fragen des zweiten Messzeitpunkts sehen können. |
- | option(' | + | option(' |
- | option(' | + | option(' |
- | text('end1' | + | text('ende1' |
} else { | } else { | ||
- | // If the participant returns after 7 days, making the current time minus the new time variable | + | // Ist der Teilnehmer nach 7 Tagen zurückgekehrt und somit die aktuelle Zeit minus die neue Zeit-Variable |
- | // more than 7 days, then the survey will be resumed on the next page. | + | // größer als 7 Tage ist, dann wird die Befragung auf der nächsten Seite fortgesetzt |
goToPage(' | goToPage(' | ||
} | } | ||
Line 106: | Line 217: | ||
- | ==== PHP Code for Time 2 ==== | + | ==== PHP-Code für Zeitpunkt |
- | + | ||
- | A new page interruption is placed between the second and third parts of the questionnaire. To a great extent, the PHP code complies with the code above. However, mailRevoke() ensures that potential outstanding reminders (mailings ID 2 and 3) are no longer sent. | + | |
+ | Zwischen dem zweiten und dritten Fragebogen-Teil wird erneut eine Unterbrecherseite platziert oder alternativ auf der letzten Seite des zweiten Fragebogen-Teils. Der PHP-Code entspricht weitgehend dem obigen Code. Allerdings sorgt mailRevoke() dafür, dass eventuell noch ausstehende Erinnerungen (Serienmails ID 2 und 3) nicht mehr versendet werden. | ||
<code php> | <code php> | ||
- | // New time variable for the second period | + | // Neue Zeit-Variable für die zweiten Zeitpunkt |
if (!isset($timepart2)) { | if (!isset($timepart2)) { | ||
$timepart2 = time(); | $timepart2 = time(); | ||
registerVariable($timepart2); | registerVariable($timepart2); | ||
- | // Delete reminder emails if they are outstanding | + | // Erinnerungsmails löschen, falls diese noch ausstehen |
mailRevoke(false, | mailRevoke(false, | ||
mailRevoke(false, | mailRevoke(false, | ||
- | // Send invitation with mailing | + | // Einladung zum dritten Messzeitpunkt mit der Serienmail |
mailResume(false, | mailResume(false, | ||
- | // First reminder email after 9 days | + | // Erste Erinnerungsmail nach 9 Tagen |
mailResume(false, | mailResume(false, | ||
- | // Second reminder email after 11 days | + | // Zweite Erinnerungsmail nach 11 Tagen |
mailResume(false, | mailResume(false, | ||
} | } | ||
- | // Pause for 7 days | + | // Unterbrechung für 7 Tage |
if ((time() - $timepart2) < 7 * 24 * 3600) { | if ((time() - $timepart2) < 7 * 24 * 3600) { | ||
option(' | option(' | ||
Line 139: | Line 249: | ||
</ | </ | ||
- | ==== PHP Code for Time 3 ==== | ||
- | Any reminder emails that are yet to be sent have to be deleted on the penultimate page of the questionnaire. | + | ==== PHP-Code für Zeitpunkt 3 ==== |
+ | |||
+ | Auf der vorletzten Seite des Fragebogens müssen noch die eventuell ausstehenden Erinnerungsmails gelöscht werden. | ||
<code php> | <code php> | ||
Line 148: | Line 259: | ||
</ | </ | ||
- | ==== Tips ==== | ||
- | |||
- | **Important: | ||
- | |||
- | **Note:** The invitation to the third part of the questionnaire takes place in relation to the time the participant follows the invitation to part 2. Therefore, if they fill do not fill out part 2 until 10 days after part 1, the invitation to part 3 will be sent 17 days after part 1 has been filled out. Alternatively, | ||
- | **Note:** The attendance status for the follow-up and reminder mailings are __not__ apparent in the address list (mailings are in gray). The attendance status will only be displayed for a potential Opt-in mailing. However, in order to get a feeling for the attendance status, you are able to look at data that has already been collected. Individual attribution using the SERIAL variable is only possible if email addresses have been imported using the " | + | ==== Hinweise ==== |
- | **Tip:** The same reminder emails can be used multiple times (with a general reminder text). In the above example, mailing ID 2 could be sent for all reminders (i.e. instead of mailings ID 3, 5 and 5). | + | **Wichtig:** Platzieren Sie auf den Unterbrecherseiten keine Fragen -- der PHP-Code oben sieht lediglich einen Text vor (Danke, Verabschiedung und Hinweis auf den nächsten Messzeitpunkt). |
+ | **Hinweis: | ||
+ | **Hinweis: | ||
- | + | **Tipp:** Man kann dieselben Erinnerungsmails mehrfach verwenden (mit einem allgemein gefassten Erinnerungstext). Im obigen Beispiel könnte man z.B. Serienmail ID 2 für alle Erinnerungen (also statt den Serienmails ID 3, 5 und 5) senden. |