Have an idea?

Visit Sawtooth Software Feedback to share your ideas on how we can improve our products.

One survey with multiple parts to complete per day

I'm hoping somebody can give some tips here! I am working on a project which requires data collection at 5 points over a week (Mon, Weds, Fri, Sat & Sun). Within the final Sunday survey, responses to questions on previous days must to be accessible. If I set each day up as a separate survey I can't automatically access the responses from questions to previous days.

I planned to approach this by setting this up as ONE survey with 5 stages, terminating after each day. So on Monday respondents receive the generic link, but then on Weds they get the link with a "sys_skiptoQWED" or similar, so that they go straight to the Weds questions, then same on Friday, etc. Unfortunately, the sys_skipto function can only be used if the survey is incomplete (a restart). Ideally I was hoping to have multiple terminations within the survey, one after each day with a different disposition code to indicate each daily completion. This doesn't seem possible, as I can't use the sys_skipto if the survey has been designated complete or disqualified. By leaving the survey as incomplete I am relying on respondents to not jump ahead and complete future days early. An added complication is that some respondents might miss a day or two within the 5 days.

Any ideas from the clever folk out there?
asked Feb 10, 2017 by Christine Hanley (370 points)

1 Answer

0 votes
I've had to deal with some similar situations like this before (e.g. skipping from survey 1 to survey 2 but having a delay of 2 days between survey 1 and survey 2).

I found the SystemTime function to be very handy for these type of dilemmas.

Hopefully this idea helps.

You can possibly keep this all in one survey and split into the 5 sections.

The order may look something like this ...

*Complete section 1.
*Record the system time.
*Thank the respondent for completing section 1 and inform them when section 2 is ready to commence.
*Suspend at the section 2 introduction.
*Check the current system time and the Wednesday start time has been passed.
*Complete section 2.
*Record the system time.
*Thank the respondent for completing section 2 and inform them when section 3 is ready to commence.
*Suspend at the section 3 introduction.
*Check the current system time and the Friday start time has been passed.
*Complete section 3.
*Record the system time.
*Thank the respondent for completing section 3 and inform them when section 4 is ready to commence.
*Suspend at the section 4 introduction.
*Check the current system time and the Saturday start time has been passed.
*Complete section 4.
*Record the system time.
*Thank the respondent for completing section 4 and inform them when section 5 is ready to commence.
*Suspend at the section 5 introduction.
*Check the current system time and the Sunday start time has been passed.
*Complete section 5.
*Thank the respondent for completing section 5.
*File the survey away as a completed status.

After each section is completed, record the system time (as per the steps mentioned above). An example of how to do this at section 1 is to create a pass-in field and call it "Section1Time".

Use this script at the end of section 1 by placing it in the footer of the section 1 thank you page ...

When Wednesday arrives, each respondent who has completed section 1 should be suspended at the introduction page for section 2. Use a skip which controls them going forward or not. The logic can be something like these examples ...

Not(SystemTime()>(Section1Time+172800)) [2 day delay from when section 1 was completed]
*Note SystemTime is captured in seconds. The 172800 refers to 2 days.

Not(SystemTime()>(???) [where ??? is the system time in seconds for the Wednesday start time]

You would repeat this process at the beginning of sections 3-4-5.

You need to decide on whether you want an exact 2 day delay to be reached or a simple start time on each day. I mentioned both skip types above.

The downside to the single survey approach is the respondent will only be filed as a completed survey once all 5 sections have been completed.

If you decide to go with a 5 survey approach, you can pass all relevant fields from survey 1 to survey 2, survey 2 to survey 3, and so on ...
This would include passing a system time variable for each survey and checking the system time at the beginning of survey 2-3-4-5 before proceeding. If you are needing to pass a lot of variables from one survey to the next, it may be easier to keep it in one survey.

*Note: When you pass a numeric variable from one survey to another, the maximum number allowed within Sawtooth is 999,999,999. I worked a way around this issue.

If you need to see .ssi examples of the survey 1 / delay of 2 days / survey 2, I'm happy to pass them on to you as this may trigger some ideas of your own.

In summary, look to the SystemTime function for assistance. It's a beauty!

I hope this information points you in the right direction.
answered Feb 10, 2017 by Paul Moon Platinum (87,415 points)
Thanks Paul, your advice is always so clear and helpful. I think using the system time function will be useful. However, the other issue that I'm having is that some people won't complete monday, but need to be able to progress to wednesday (using the skipto function embedded in their hyperlink). Right now I can't figure out how to do this unless I make all the questions non-required response so they can be skipped even if unanswered (which isn't ideal). Do you know if there is any way to make a question required only if it is seen? Or a way to auto-submit a nil response if the page is skipped? Or another way this might be handled?? Thanks and sorry for the endless questions! Christine
Without knowing the study in detail, I can throw a couple of ideas at you.

If Monday has passed, you can insert an unconditional skip over section 1 and skip them immediately to the introduction at section 2. This method could be used for all sections. It is a manual process however and requires program changes during field.

A neater solution might be this: If you have a time expiry applied to each section, you can use the SystemTime function within your skips for each section. So if the Monday time has been reached, skip to section 2 and if the Wednesday time has been reached, skip to section 3, and so on ...  

I think you can control the skipping of sections by using the SystemTime function, that way you do not need to fiddle with your program during field. The manual process has been removed which is a positive. If I was to use this approach, I would QA test it very carefully and use smaller time intervals during my testing by using minutes apart rather than days apart for the respective sections.

The skipping of sections in this manner removes the need to deal with required and non-required questions.
Will try it thanks!