Can I create form fields that aren't transmitted to the server?

Is it possible to specify that some fields in the form should not be transmitted to the server? In a form that I’m building, I have several of the following:

  • Notes that show dynamic hints to the data collector
  • Questions that are redundant, but are asked for the purpose of validating other fields
  • A bunch of calculate fields for intermediate values
  • Private data that helps while filling out the form, but should not be needed afterwards
    For example, we ask for the name of household members. These are shown as possible answers in a subsequent “select one” question, but we don’t need to store the actual values.

When I look at the data on the server or download it as CSV, I’d like to not see those fields. What I have in mind is a column (maybe call it local or private) similar to the relevant and readonly columns, which could prevent a field from being transmitted to the server. Is that possible?

@Sjlver, you could always filter this data, save the changes that you wish to download and then download them whenever required.

Hello @Sjlver ,
If you also look for anonymisation of data, like removing names before submitting, the previous discussion here may help you. https://community.kobotoolbox.org/t/anonymization-of-personal-data-deleting-the-entries-of-sensitive-data-before-submitting-to-the-server/3197/14

1 Like

Thanks @wroos, that’s an amazing workaround. I had searched the forums before posting, but somehow this one escaped me.

For posteriority:

  1. Add a required acknowledge field at the end of the form, named finished and labelled something like “Finished; strip private information”
  2. For all private fields, add finished = '' to the relevant condition.
    This causes private fields to become irrelevant (and hence not transmitted) as soon as finished is set.

I guess this could be extended further. For example, we could make the stripping a bit more explicit by setting calculate to 'redacted' and trigger to ${finished} for each private field. This would set all private values to “redacted” rather than removing them.

1 Like

Hello @Sjlver,
Would you mind to explain what you mean with redacted, please. Maybe even with a trigger example?

We used the finished (acknowledge) e.g. for supervisors doing quality assurance before the case was sent by the enumerator.

A disadvantage might be that after a save all mon-relevant declared data are deleted. (For ex. name and GPS might be needed,) for the enumerator to go back to a case. So, maybe a double confirmation to finishing might make sense.

Kind regards

@wroos 'redacted' is simply a word that will show up in the data instead of the original value.

I added a few more examples to this question on anonymization. I haven’t tried those… but think that it would be possible to replace a value with something else than redacted, e.g., with a truncated version of the value.

Double confirmation seems like a useful idea too. Should be fairly easy:

  • Create a first acknowledge labeled “Finished; strip private data”
  • Create a second acknowledge labeled “Are you sure? Please confirm” that is relevant only when the first is selected, and that triggers the actual stripping.
1 Like