> For the complete documentation index, see [llms.txt](https://docs.dapta.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dapta.ai/dapta-forms/connect/hubspot/value-maps-and-static-properties.md).

# Value maps & static properties

Translate the answers a Dapta Form collects into the exact values your HubSpot picklists expect, and stamp fixed values such as an opt-in flag or a lifecycle stage on every completed submission.

Two sections of the **HubSpot** card deal with values rather than fields. **Value maps** rewrite an answer on its way to a picklist property. **Static properties** stamp a value you choose on every completed submission, whatever the respondent answered.

Both live in the **Connect** tab of your form, inside the **HubSpot** card.

***

## Value maps

A HubSpot dropdown property does not store the label your team reads: it stores an internal value. Your form stores the answer as `sales`, your CRM expects `SALES_TEAM`. A value map is the translation table between the two.

**Step 1:** Scroll to **Value maps: translate form answers to CRM values** and click **Add value translation**. Pick the question in the group picker, then click the chevron to **Expand** it.

<figure><img src="https://3835013762-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-82e8da28489fdeb86a65e2e3b42a68096ce79126%2Fforms-value-maps-and-static-properties-01-group.png?alt=media" alt="An expanded value map group for a choice question, showing the target property hint and two answer to CRM value rows"><figcaption><p>One collapsible group per question. The count on the right reads <strong>{n} value(s)</strong>.</p></figcaption></figure>

Inside the group you get:

| Element                                 | What it does                                                                                                                                                            |
| --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Values are written to: {properties}** | Reminds you which property this question already feeds. When the question is not mapped yet it reads **Map this question to a property above to pick from its values.** |
| **Answer in the form**                  | The answer exactly as the form stores it. For a choice question that is the option's **Value**, not its label.                                                          |
| **Value in HubSpot**                    | What HubSpot receives instead.                                                                                                                                          |
| **Add value**                           | Adds another row to this group.                                                                                                                                         |
| **Remove**                              | Deletes a row, or the whole group when clicked on the group header.                                                                                                     |

> **⚠️ Note:** The left side must match the stored answer, not the text on screen. If your option is labelled **Sales team** with the value `sales`, type `sales`. You can check an option's **Value** in the question settings on the **Build** tab.

***

**Step 2:** Set the right side. When the question is mapped to an enumeration property, the picker lists the real picklist entries from your portal, in HubSpot's own order.

<figure><img src="https://3835013762-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-b824a6e65e06b19349440cdd429740c6799d4848%2Fforms-value-maps-and-static-properties-02-picklist.png?alt=media" alt="The Value in HubSpot picker open, listing the picklist entries of the mapped property as Label (internal_value)"><figcaption><p>Each entry reads <strong>Option label (internal_value)</strong>, so you never have to guess the internal value.</p></figcaption></figure>

Choose **Custom value…** to type a value that is not in the list, and **Back to list** to return to the picker. The empty state of the section reads **No value translations yet.**

Answers you do not translate are sent unchanged, so you only need rows for the ones that differ.

***

## Static properties

Static properties are values that do not depend on the answers at all: a lifecycle stage, a source label, an opt-in flag, a campaign tag.

**Step 3:** Scroll to **Static properties**, click **Add property**, pick the HubSpot property on the left and set its value on the right. Enumeration properties give you the same picklist as a value map; everything else is a plain text field.

<figure><img src="https://3835013762-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-ea63a0e77b3456e410892b3c2be4416bbd37fc7b%2Fforms-value-maps-and-static-properties-03-static.png?alt=media" alt="The Static properties section with a Lifecycle Stage property set to New lead and the Add property button"><figcaption><p>Fixed values stamped on every completed submission. The empty state reads <strong>No static properties yet</strong>.</p></figcaption></figure>

Two rules govern how they are applied:

* They are written on **completed submissions only**. A partial submission never carries them.
* They **never overwrite a mapped answer**. If the same property is also fed by a question, the respondent's answer wins.

***

## Which one should you use?

| You want to                                            | Use                                                                        |
| ------------------------------------------------------ | -------------------------------------------------------------------------- |
| Send the answer, but under a different code            | A **value map** on that question                                           |
| Send the same value for everyone who finishes the form | A **static property**                                                      |
| Send the answer to a second property as well           | A row under **Custom field mappings**                                      |
| Send the score or the outcome                          | The **Score property** or **Outcome property** under **Map form elements** |

***

## What's next

* [Map questions to contact properties](/dapta-forms/connect/hubspot/map-questions.md): the mapping these translations build on.
* [Form elements: UTMs, score, outcome, submitted date](/dapta-forms/connect/hubspot/form-elements.md): the metadata Dapta Forms captures on its own.
* [How the sync works & troubleshooting](/dapta-forms/connect/hubspot/how-sync-works.md): what arrives on a partial submission, and what only arrives at the end.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.dapta.ai/dapta-forms/connect/hubspot/value-maps-and-static-properties.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
