Field plug-in catalog

Before exploring the catalog, we suggest that you read the guide to field-plug-ins. Also, click on the "Follow" button in the top right to learn about new field plug-ins that are published.

This catalog is a curated list of available field plug-ins for use in SurveyCTO form designs. Each one contains a brief description, and links below for downloading the plug-in file, as well as links to any available documentation, guides, and sample forms for that plug-in. 

For those looking to transition away from face-to-face data collection, the phone-call, scto-exotel, twilio-call and launch-sms field plug-ins are options for use in our computer-assisted telephone interviewing (CATI) starter kit. Find these two in the integration field plug-in category.

Table of contents

Either scroll down or click on a category of field plug-in to jump to that section:

  1. Baseline field plug-ins: For use as templates for designing new field plug-ins, but also contain useful improvements over default field functionality.
  2. Integration with outside applications: Connect SurveyCTO Collect with other applications and services.
  3. Timed data collection: Impose time limits and/or record elapsed time. 
  4. New data input modes: Offer new ways to input data into forms.
  5. Simplified data input options: Familiar data entry, simplified through added convenience.
  6. Web services: Connect your forms to useful web services.

Baseline field plug-ins

While the baseline field plug-ins are intended as templates for developers, they have improvements over default SurveyCTO field functionality that can be useful for non-developers. By using baseline field plug-ins as templates, the same general improvements can be added to new field plug-ins. Download the baseline field plug-ins here and read below about their general improvements over default functionality

HTML label styling support with baseline-select_one and baseline-select_multiple

The labels of choice lists options can now be styled using HTML tags, just like with field labels when using the baseline-select_one and baseline-select_multiple field plug-ins. Just add HTML tags directly into the label with your actual content.

Download baseline field plug-ins above.

Right-to-left languages support with baseline-select_one and baseline-select_multiple

If you use a right-to-left language (like Arabic) in your form, and you would like the choice lists in your select_one and select_multiple fields to reverse direction for that language, you can use the baseline-select_one and baseline-select_multiple field plug-ins. These field plug-ins will make choice lists responsive to the current form language, positioning the radio buttons and checkboxes to the right of the choice label for right to left languages (and leaving the default behavior for left-to-right languages).

Download baseline field plug-ins above.

Render HTML returned in field references in all baseline field plug-ins

All baseline field plug-ins (including the baseline-select_one and baseline-select_multiple field plug-ins above) improve field labels support by rendering HTML returned in field references. In more detail, when a value is returned and displayed in a field's label using the ${fieldname} syntax, if that value included HTML, those tags would be rendered through the use of a baseline field plug-in (or any field plug-in that was created using a baseline field plug-in as a template). For an example, see this sample form.

Download baseline field plug-ins above.

Display a larger text input box with text-box

The text-box field plug-in inherits all of the functionality of the baseline-text field plug-in, but it offers a larger text area for entering data, which is useful for longer responses, so enumerators can see what they have entered more easily. This field plug-in can also limit the number of characters that can be entered (without a constraint), display the character count so far (or characters remaining), and auto-expand to fit its content. Check out the documentation for full details of what this field plug-in can do, and how to use it.

Documentation | Plug-in file | Sample form

Integration with outside applications

Find field plug-ins that integrate with other apps and services here. Field plug-ins that achieve integrations with other Android apps do so using intents

Create calendar events with create-google-event

The create-google-event field plug-in launches the Google Calendar app on Android, creating an event, and populating it with details (works offline). In web forms, Google Calendar will be launched in a new browser tab, populated with event details. Use this field plug-in to create calendar events (e.g. for follow-up interviews).

Note: Does not yet support iOS.

Documentation | Plug-in file | Sample form

Send an SMS with launch-sms

The launch-sms field plug-in launches an SMS application on the target platform, populating it with a phone number and message stored in the form, ready to be sent by the user. This SMS might contain important feedback for the respondent determined in the form. For example, the SMS could contain the details of an assessment, an appointment to be kept, or a receipt for a transaction.

User guide | Documentation | Plug-in file | Sample form

Send a WhatsApp message or make calls with launch-whatsapp

The launch-whatsapp field plug-in facilitates launching WhatsApp from a form. WhatsApp can be populated with a message and a recipient phone number. WhatsApp can also be launched for the purpose of starting phone calls, passing just a phone number. In both cases, the user must send the message and start the call manually.

Note: Phone numbers must be registered on WhatsApp.

Documentation | Plug-in file | Sample form

Launch a phone call managed inside Collect with phone-call

The phone-call field plug-in populates SurveyCTO Collect's built-in phone call management system. Not only can you populate the dialer with a phone number to call which can be managed inside Collect, you can also control the visibility of the phone number, providing a label in its place, to protect personally identifying information.

Documentation | Plug-in file | Sample form

Launch a phone call with scto-exotel

The scto-exotel field plug-in allows you to initiate calls in India using the Exotel service (similar to twilio-call, but only for India). In contrast to phone-call (above), the Exotel service will call you (the caller) first, then call the callee, and connect the two. Exotel supports call masking, call recording, centralized billing, and nonprofit pricing (see their website for details). This field plug-in requires that you have an Exotel account to use it. 

This field plug-inalso allows you to send SMS messages via Exotel to any destination (not only India).

This field plug-in was developed by J-PAL South Asia.

Documentation | Plug-in file | Sample form

Launch a phone call with twilio-call

The twilio-call field plug-in allows you to initiate calls using the Twilio service (similar to the scto-exotel field plug-in, but voice services are not restricted to India). In contrast to phone-call (above), the Twilio service will call you (the caller) first, then call the callee, and connect the two. Twilio supports call masking, call recording, centralized billing, and nonprofit pricing (see their website for details). This field plug-in requires that you have a Twilio account to use it. In the sample form, you will define your Twilio account information in a CSV file attached to the form, which you can learn more about in the documentation.

This field plug-in works but is new, so should be tested carefully before adopting. We have only been able to test in a few countries, so we encourage you to start a Twilio trial, test it, and provide feedback (visit the Documentation for details).

User guide | Documentation | Plug-in file | Sample form

Stop a recording with twilio-control

With the twilio-control field plug-in, you can stop and delete a Twilio call recording. That way, if the respondent does not wish to be recorded, you can delete the recording that has already been started, as if it had never started. You can also simply stop the recording in case you would like to keep the recording of the respondent denying consent, or even start a recording if it has not been started, and the respondent has given consent to be recorded.

Note: For the sample form, you will need the twilio-call field plug-in, as well as its CSV file to retrieve the Twilio account information.

User guide | Documentation | Plug-in file | Sample form

Timed data collection

Field plug-ins add capabilities for time-limiting activities, and measuring how much time an activity took. Find all of our time-related field plug-ins in this category.

Easily start a timed task with button-to-advance

If you add button-to-advance to your form, instead of moving ahead by swiping or clicking an arrow, respondents can move to the next field either by clicking a button in the middle of the screen, or pressing a key on their keyboard. That way, their mouse or hands will be in the correct position when the timed field(s) start.

To sample this field plug-in, use the timed-field-list field plug-in (see above).

Documentation | Plug-in file

Time progress with a task using counter-with-stopwatch

With counter-with-stopwatch, you can track exactly how long a task takes to complete, and also count the number of times a certain event occurs. Use this field plug-in for any simple counting task where you need to know the duration.

Documentation | Plug-in file | Sample form

Track progress for a task against a time limit using counter-with-timer

With the counter-with-timer field plug-in, you can count the number of times an event occurs in a set period of time. Use this field plug-in for any time-limited simple counting task.

Documentation| Plug-in file | Sample form

Perform IAT and more with timed-categories

A select_one field with the timed-categories field plug-in will show choices in columns instead of rows, and the field will be timed. The respondent can select a choice either by clicking/tapping on the column, or by pressing the corresponding keyboard key. This can be great for implicit association tests (IAT) where the respondent has to quickly categorize a word/phrase in order to reveal their subconscious belief.

Documentation | Webinar | Plug-in file | Sample form (attachment)

Time-limit responses with timed-choice

The timed-choice field plug-in makes it possible to specify a time limit to answer a field. When time runs out, the form will automatically advance to the next screen whether an answer has been supplied or not. 

Documentation | Plug-in file | Sample form

This field plug-in works with select_one and select_multiple fields. For text, integer, and decimal fields, use the timed-advance field plug-in.

Documentation | Plug-in file | Sample form

Answer multiple timed fields at once with timed-field-list

If you would like to time your field list, or if you would like the headers of your field list to always stay on the top of the screen, you can use the timed-field-list field plug-in. This field plug-in features many optional parameters you can use to customize it to your needs.

If you would just like to use the persistent headers, you can also leave out the timer.

User guide | Documentation | Plug-in file | Sample form

Perform EGRA tests and more with timed-grid-test

With the timed-grid-test field plug-in, choices in the select_multiple choice list will appear in a grid, and the respondent can select choices from that grid, which is color-coded for convenience. Plus, this field plug-in displays a customizable timer that can time the respondent, and even prevent them from entering data after time runs out. Perfect for EGRA tests, and more!

User guide | Documentation | Plug-in file | Sample form

New data input modes

Entirely new modes of data collection are offered through this category of field plug-ins. Use these field plug-ins to offer new, intuitive approaches to collecting more accurate data.

Add clickable images with clickable-svg

With the clickable-svg field plug-in, you can offer an alternative method for collecting categorical data. Instead of a list of choices with radio buttons, present an image with a clickable or tappable region, and the user will make their selection by tapping on a specific part of the image. Conventionally, this would be ideal for situations where choices are parts of a whole, and where a visual approach to presenting answers has advantages. For example, you can have an image of the human body, and the respondent can tap to show where they hurt. Field plug-ins like this one will go some way to making forms a little more user-friendly, especially for low-literacy populations.

To use this field plug-in, users will need to generate their own Scalable Vector Graphic (SVG) files. Look at the More resources heading in the GitHub repository to learn more.

Documentation | Plug-in file | Sample form

Easily rank choices with ranking-choices

Use this field plug-in to easily drag-and-drop choices to rank them in a select_multiple field on a single screen. It will store a space-separated list of values in rank order.

Documentation | Plug-in file | Sample form

Add continuous sliders using slider and slider-label

The slider and slider-label field plug-ins offer an alternative to SurveyCTO's likert field appearance option. These plug-ins work with integer and decimal field types as opposed to select_one. These slider type plug-ins have a number of advantages, allowing for wide value ranges, free-flowing refinement of inputs.

For capturing more subjective inputs, use the slider field plug-in.

Documentation | Plug-in file | Sample form

For scenarios requiring greater precision, use the slider-label field plug-in with a marked scale to guide the user.

Documentation | Plug-in file | Sample form

Enter text data in select_one and select_multiple fields with specify-other

Normally, if an enumerator selects "Other" in a select_one or select_multiple field, you need to add a text field so the enumerator can enter the "Other" value on the next page. With the specify-other field plug-in, a text box appears automatically when the "Other" choice is selected, and the enumerator can enter the "Other" data right on the same page.

Important: To save the "Other" data entered by enumerators, you will need to add a calculate field to retrieve that value, which you can learn how to do in the Data format section of the documentation.

Documentation | Plug-in file | Sample form (media attachments)

Create a data entry grid with table-grid

The table-grid field plug-in allows for the creation of a spreadsheet-like table for data input in SurveyCTO forms.This field plug-in allows you to create the real grid appearance and edit data directly from the table.

Documentation | Plug-in file | Sample form

Perform conjoint analysis with conjoint

Use the conjoint field plug-in to run conjoint analysis experiments to learn which attributes most strongly affect the choices of survey respondents. The conjoint plug-in presents a series of randomly assembled profile pairs from attributes you specify, allowing respondents to pick their preferred profile. Use the generated data to determine the most influential attributes.

Documentation | Plug-in file | Example form

Simplified data input options

While you'll recognize these field types, these field plug-ins offer improvements to help simplify familiar data entry tasks.

Randomize with coinflip

The coinflip field plug-in shows a coin, which will flip when you tap it. It has a 50% chance of coming up heads, and a 50% chance of coming up tails, and it will save the result. You can also customize what is displayed when heads or tails comes up.

This field plug-in was developed by Mehrab Ali, Executive Director at ARCED Foundation.

Documentation | Plug-in file | Sample form (attachments)

Add buttons to collect standard responses using extra-buttons

With the extra-buttons field plug-in, you can make your forms more intuitive and easier to complete by including buttons for standard responses on screen for supported field types that don't use choice lists. The historical convention in SurveyCTO has been to tell the form's users to enter special numeric codes that represent standard responses like "don't know" and "refused to answer" when asking for numeric inputs. Using this field plug-in, you can add intuitive "don't know" and "refused" buttons in any language which will correspond with special codes that get automatically filled into the field. 

Small usability improvements can help you improve the quality of data in aggregate, with fewer mistakes being made in the field.

Documentation | Plug-in file | Sample form

Add a formatting symbol to specify the numeric unit with format-symbol

With the format-symbol field plug-in, you can make data entry of specific numeric data types more intuitive with a formatting symbol which appears on the left or right of a decimal field. That symbol might be an amount of money in a specific currency (e.g. $, €, ₦, etc.), weight in a specific unit (e.g. Kg, L, etc.), or the temperature (e.g. ºC, etc.) - whatever you like. You'll be able to specify the symbol and left or right placement.

Documentation | Plug-in file | Sample form

Filter pre-loaded choice lists with preload-filter

You can use the preload-filter field plug-in to dynamically filter choices pre-loaded from an external file or server dataset, similar to how you can use a choice_filter in standard choice lists. This can allow you to dynamically remove previously selected choices, only display certain choices, and more.

This field plug-in also has an optional search box like the search-select_one and search-select_multiple field plug-ins.

Documentation | Plug-in file | Sample form (attachment)

Search choice lists on the same screen with search-select-one and search-select-multiple

The search-select field-plug-ins allow enumerators to filter the choices listed in select_one and the select_multiple fields. This is useful when you have to choose from long option lists. By typing in a search term or part of the term, the options will be filtered accordingly on the same screen.

Present a choice list in sortable, filterable table using table-list

Use table-list to present a select_one or select_multiple field as a table of choices with many attributes. Enumerators can sort that table's attribute columns by tapping on the headers, and filter it using search terms, to help you find the choice you are looking for. Use table-list to make long lists of people, place names, occupations, or medications (just a few examples) easy to navigate.

User guide | Documentation | Plug-in file | Sample form   

Web services

While SurveyCTO has always facilitated 100% offline data collection, field plug-ins are built on web technology, making it easy to connect and integrate with web services. These field plug-ins work in both web forms and the SurveyCTO Collect mobile app, although they require an internet connection.

Ensure links were opened with detect-clicked-link

With detect-clicked-link, you can track how many times each link in the field has been clicked. That way, you can make sure the enumerator/respondent really did open the needed links before moving on in the form.

Documentation | Plug-in file | Sample form

Display web content in an iframe with display-iframe

With display-iframe you can display content from a web source in an iframe as part of your form.  The principle tested use case is displaying a web-published Google sheet graph, but the field plug-in may work well for other use cases. The content to be displayed needs to be public so sensitive information should not be shared this way. It uses an internet connection to display content.

Documentation | Plug-in file | Sample form

Collect IP addresses with get-ip-address

Use the get-ip-address field plug-in to record the IP addresses of respondents in web forms. For projects where there are concerns about privacy, there is also an optional parameter to store the hash of the IP address, to anonymize it. Lastly, due to how field plug-ins work in their current form, this field plug-in needs to be attached to a visible field in the form design, so consider displaying a message that must be read for long enough to get the IP address.

User guideDocumentation | Plug-in file | Sample form

Embed YouTube videos with scto-youtube

With this field plug-in, you can easily embed a YouTube video into your form by simply copying-and-pasting the video's URL. That way, the whole form can be completed in SurveyCTO Collect without needing to switch apps to watch a video. The device will however require an internet connection in order to play the video. If you will need to play the video without an internet connection, download the video file, and attach it directly to the form, as illustrated in the product documentation on including media, using a field's media:video parameter.

This field plug-in was developed by Mehrab Ali of Innovations for Poverty Action.

Documentation | Plug-in file | Sample form

Track YouTube videos with youtube-detector

The youtube-detector field plug-in not only plays YouTube videos, but it tracks how long the video has been playing for, if the video ended, autoplays the video if you'd like, and more. This can help ensure the enumerator/respondent has actually watched the video before moving on in the form.

Documentation | Plug-in file | Sample form

The end…

More field plug-ins

Didn't find what you're looking for?

Don't worry! Field plug-ins are a gateway of possibilities.The SurveyCTO team is working on more useful field plug-ins, so do click on the "Follow" button in the top right corner of this article to get updates when new plug-ins are added.

Do you have requests?

Requests are welcome. We don't distinguish between general feature and field plug-in requests, so we ask that you submit a feature request whenever you'd like to see SurveyCTO do something that it doesn't currently do. If it is possible to implement your request using field plug-in support, depending on the popularity or merit of your feature request, it could get selected for development. One of the great things about field plug-ins is their development can happen completely independently of the main SurveyCTO platform.

Do you want it sooner?

No need to wait. If you have the skills, develop the field plug-in you need yourself. If you don't, consider hiring someone who does. Another idea is that if you think your plug-in idea could help others like you, consider reaching out to other SurveyCTO users to see about sharing development costs.


  • 0
    Amrik Cooper

    Since the launch of the field plug-in catalog, there have been some improvements and new additions:

    • The existing call-phone-number and launch-sms field plug-ins now support calls on any system including iOS, and web forms (assuming the browser can connect to a phone app).
    • Use the new scto-youtube field plug-in to imbed YouTube videos.
    • Collect IP addresses in web forms using the new get-ip-address field plug-in.
    • Easy and intuitively rank items in a choice list using the ranking-choices field plug-in.

    We hope you find these additions useful!

  • 0
    Amrik Cooper

    We have three new field plug-ins ready for you!

    1. The table-list field plug-in, for presenting a choice list with several attributes in a table that can be sorted by columns, and filtered using a search field. Compatible with the select_one and select_multiple field types.
    2. The search-select_one field plug-in, which adds a search field for filtering the choice list for a select_one field.
    3. The search-select_multiple field plug-in, which adds a search field for filtering the choice list for a select_multiple field.

    Use these field plug-ins to make long and complex choice lists easier to work with! Find them under the new "Simplified data input options" category.

  • 0
    Amrik Cooper

    We have two new field plug-ins for you, all about making phone calls. If you're interested in reliable call recording that works on every device, centralized billing, call masking, and nonprofit pricing, these could be for you.

    Visit the field plug-in catalog to learn more about the twilio-call and scto-exotel field plug-ins (look in the "Integration with outside applications" section).

Please sign in to leave a comment.