Skip to content

Surveys and questionnaires

Surveys are questionnaires built with a drag-and-drop form builder and sent to contacts to answer. They are used for ad-hoc data gathering and for a standing supplier data-collection questionnaire (the DCQ). The feature is enabled per site (Questionnaires setting).

What a survey is

A survey has a name, description, an open window (start/end dates), and a form — a set of questions built from the available field types (text, textarea, number, radio, radio group, checkbox group, select, matrix, plus headings/paragraphs). The form definition is stored as JSON on the survey record.

Surveys have their own permissions (object type survey): view is open by default, editing requires the admin role (and being a superuser or a member of the survey's own company), and delete/admin default to superusers.

Two kinds of survey

  • Custom survey — you build the questions yourself in the form builder and invite recipients by hand.
  • Data Collection Questionnaire (DCQ) — a standing supplier questionnaire built around matrix questions (one column per supplier), where recipients are derived automatically: contacts tagged for the DCQ whose company has a product profile in the chosen category. Its results use a dedicated supplier-comparison report rather than a plain per-question tally.

Recipients and responses

Invited contacts are tracked per survey (a "who was invited / who has responded" list). A contact has responded once they submit their answers, which are stored as JSON against their invitation — there is one row per respondent, holding both the invitation and the answers.

Two important behaviors, confirmed in code:

  • Inviting a recipient no longer emails them — the automatic invitation email was disabled; invitations are recorded but not mailed.

  • Reminders to non-responders are sent as in-app notifications, not emails.

  • Anyone logged in can submit — the submit endpoint has no permission check and creates an invitation on the fly for a contact who wasn't pre-invited, so submission isn't limited to invited recipients. The "one response per person" guard is present but not implemented.

Results

The results view aggregates responses per survey. For the DCQ it renders a supplier matrix report — for each supplier, how members answered (do you use them, switchable spend, overall rating, reasons) — built from an indexed copy of the answers. Custom surveys show per-question results.

Why do survey results look off

  • A survey shows no questions to answer — its open window has closed (past the end date); closed surveys show as finished.
  • More responses than invitations — submission creates invitations for non-invited contacts, and repeat submissions aren't blocked.
  • A DCQ's recipients aren't who you expected — they're derived from the DCQ tag plus product profiles in the selected category, not chosen by hand.

What surveys are not

  • Not supplier reviews — the supplier scorecard/rating is a separate feature (Supplier reviews and scorecard) despite some shared "survey" wording.
  • Not tenders — the tender feature reuses survey plumbing but is its own module.
  • Not email campaigns — reminders are in-app notifications, not campaigns.