Turn any form into a conversation.

Web, iOS, and Android libraries for turning traditional inputs into voice conversations.

Check it out

This is an example of a traditional form with voice conversation support. Try out the playground to try out building your own conversational forms.

Work order: #23041
Technician: Doug McDougerson

Summary of what was done.

  const builder = new Veform.VeformBuilder({
    description: 'Work order for a plumber to complete when leaving a job site.'
  });
  builder.addField({
    name: 'arrival-time',
    question: 'Arrival time?',
    type:'text'
  }).addValidation({
    validate: true,
    pattern: 'time'
  }).onChange((value) => document.getElementById('arrival-time').value = value);
  
  builder.addField({
    name: 'departure-time',
    question: 'Departure time?',
    type:'text'
  }).addValidation({
    validate: true,
    pattern: 'time'
  }).onChange((value) => document.getElementById('departure-time').value = value);
  
  builder.addField({name: 
    'work-completed',
    question: 'Work completed?',
    type: 'textarea'
  }).onChange((value) => document.getElementById('work-completed').value = value);
  
  builder.addField({name:
    'parts-used',
    question: 'Parts used?',
    type: 'textarea'
  }).onChange((value) => document.getElementById('parts-used').value = value);
  
  builder.addField({
    name: 'confirm-done',
    question: 'Are you ready to submit?',
    type: 'yesNo'
  }).addBehavior(
      Veform.FieldEvents.VALID_YES_ANSWER,
      {type: Veform.FieldBehaviorType.MOVE_TO, moveToFieldName: 'goodbye'}
    ).addBehavior(
      Veform.FieldEvents.VALID_NO_ANSWER,
      {type: Veform.FieldBehaviorType.MOVE_TO, moveToFieldName: 'change'}
    ).onChange((value) => {
      if (value === 'yes') {
        document.getElementById('submit-button').click();
      }
    });

  builder.addField({
    name: 'change',
    question: 'What would you like to change?',
    type: 'intent'
  }).addBehavior(
    Veform.FieldEvents.VALID_ANSWER,
    {type: Veform.FieldBehaviorType.MOVE_TO, moveToFieldName: 'change'
  })

  builder.addField({name: 'goodbye', question: 'We will submit it. Goodbye!', type: 'info'});
  const veform = new Veform.Veform(builder);

  function runWorkOrderDemo() {
    veform.start('https://demo.veform.co/token');
  }
Try it in the playground

Features

Simple Setup - Add a few lines of code to your form and you're good to go.

Seriously Customizable - UI/UX is yours, you shouldn't compromise your vision an inch for the sake of a library.

Data Security - We store nothing, Veform parses audio and surfaces raw data for the form field values. What you do with it is up to you.

Get started