# Work with forms
URL: https://docs.awellhealth.com/api-reference/guides/work-with-forms

> For the complete documentation index, see [llms.txt](https://docs.awellhealth.com/llms.txt).



Rendering an Awell form yourself means fetching the questions, evaluating conditional logic as the user
answers, and submitting the response.

If you'd rather not build this, [Navi](/docs/embed-and-host/what-is-navi) does it for you.

## Evaluate conditional logic on every answer [#evaluate-conditional-logic-on-every-answer]

Forms can hide and show questions based on earlier answers. A mutation evaluates all of a form's
conditional logic and tells you which questions should be visible or hidden.

> **Call it every time the user answers any question**, so they only ever see the relevant
> questions.

Evaluating once at the start gives you the right questions for an empty form and the wrong ones from the
second answer onward.

## Send every answer value as a string [#send-every-answer-value-as-a-string]

> **Form responses are polymorphic, so an answer value is always sent as a string.**

Awell validates and deserializes on its side, and **rejects** a value that doesn't match the data
point's value type. So the string has to be the right shape for the underlying type:

| Question type   | Data point type | Send                                  |
| --------------- | --------------- | ------------------------------------- |
| Date            | `date`          | An ISO 8601 string                    |
| Number, slider  | `number`        | The number as a string                |
| Single select   | as defined      | The answer's **value**, not its label |
| Multiple select | as defined      | The selected values                   |
| Short/long text | `string`        | The text                              |

For a single select, send the value the option carries, not the label the user saw. See
[Encode questions and answer options](/docs/design-care-flows/encode-questions-and-answer-options).

## Specifying who answered [#specifying-who-answered]

When submitting, you can specify which user the response is attributed to. Do it, because an
unattributed clinical answer is a gap in the record.

## Reading responses back [#reading-responses-back]

A separate query returns a submitted form response, including the data points it produced. Use it to
confirm what Awell stored rather than assuming your submission was interpreted as intended.

## Next steps [#next-steps]

* [Manage patients](/api-reference/guides/manage-patients)
* [Versions and releases](/api-reference/guides/versions-and-releases) for why a form's questions differ
  between care flow versions
