> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qwoty.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a Quote custom field

> Add a custom field that flows from a quote template to the buyer's Dealroom and to your CRM.

A Quote custom field is information specific to your sales motion that should appear on every quote — for example, an event date, a project code, or a headcount. You define the field once in the Data model, configure it on each quote template, and optionally sync it to your CRM.

This guide walks through the full lifecycle in three steps.

<Note>
  You must have the **Admin** role with **Data → Read & Write** authorized. CRM mapping additionally requires **Developers** access. See [Manage roles](/user-guide/settings/users/manage-roles).
</Note>

## What you'll build

In this example, you'll add three custom fields to a quote used by an event production company:

| Field                      | Type   | Purpose                    |
| -------------------------- | ------ | -------------------------- |
| **Date(s) de l'événement** | Date   | When the event happens     |
| **Horaire de l'événement** | Text   | Start time (e.g., `16:00`) |
| **Nombre de personnes**    | Number | Headcount (e.g., `160`)    |

All three will be **mandatory**, **editable by sales reps**, and **displayed to the customer** in the Dealroom.

## Step 1: Create the field in the Data model

The Data model is where the field's definition lives. Without a definition, the field doesn't exist anywhere in Qwoty.

<Steps>
  <Step title="Open Data model">
    Go to **Settings → Data → Data model** and click the **Quote** object (or its parent Template object — the data model groups quote-level custom fields under Template since templates drive quote generation).
  </Step>

  <Step title="Click + New">
    In the top right of the field list, click **+ New** to open the field creation form.
  </Step>

  <Step title="Fill in General Information">
    * **Name**: enter the human-readable label (for example, `Date(s) de l'événement`)
    * **API Name**: Qwoty generates this from the name (for example, `dates_de_l_evenement`). You can edit it if needed — keep it lowercase, no spaces, underscores instead of dashes.
    * **Data Type**: pick `Date` (or `Number` for headcount, `Text` for time)
  </Step>

  <Step title="Save">
    Click **Save** in the top right. The new field appears in the Quote object's field list with the **Custom** badge and **Writable** API access.
  </Step>

  <Step title="Repeat for the other fields">
    Create `Horaire de l'événement` (Text) and `Nombre de personnes` (Number) the same way.
  </Step>
</Steps>

<Check>
  Three custom fields now exist in the Data model. Next, configure how they behave on a quote template.
</Check>

## Step 2: Configure the field on the template

The field exists, but it doesn't yet appear on any quote. You activate it per template, with three properties that control its behavior.

<Steps>
  <Step title="Open the template">
    Navigate to **Templates → Quote templates** and open the template you want to configure (or create a new one — see [Create a quote template](/user-guide/templates/how-tos/create-quote-template)).
  </Step>

  <Step title="Find the Custom Fields section">
    Scroll to the **Custom Fields** section of the template. The three fields you just created appear, each with a toggle and three checkboxes.
  </Step>

  <Step title="Activate the toggle">
    Click the toggle next to each field name to turn it on. The toggle turns dark — the field is now active on quotes generated from this template.
  </Step>

  <Step title="Configure the properties">
    For each field, check the boxes that match your needs:

    * **Mandatory** — required before the quote can be saved or submitted
    * **Editable by sale** — sales reps can edit the value (otherwise it's read-only after admin entry)
    * **Display for customer** — the field appears on the buyer-facing Dealroom

    For our event use case, check **all three** for each field. The customer needs to see and confirm the event date, the time, and the headcount.
  </Step>

  <Step title="Set default values (optional)">
    Below each field's checkboxes, you can enter a default value that pre-fills new quotes. Leave empty if there's no sensible default.
  </Step>

  <Step title="Save the template">
    Click **Save** at the top right of the template editor.
  </Step>
</Steps>

<Check>
  Your three fields are now active on every new quote created from this template. The Custom Fields section shows them with input controls (date picker, text box, number input) ready for sales-rep entry.
</Check>

### What the customer sees

Once a quote is published to the Dealroom, the customer sees the three fields at the top of the document, each marked with a violet **Display** badge:

```
Nombre de personnes  [Display]    Date(s) de l'événement  [Display]    Horaire de l'événement  [Display]
160                                29/04/2026                            16:00
```

The Display badge confirms (in admin preview) that the field is visible to the buyer. The customer doesn't see the badge — they see a clean list of values alongside the line items.

## Step 3: Sync with your CRM (optional)

If you've connected a CRM, you can map each Qwoty custom field to a CRM field. Sync runs in the direction you choose: Bidirectional, CRM → Qwoty, or Qwoty → CRM.

<Steps>
  <Step title="Open your CRM integration">
    Go to **Settings → Developers → Integration** and click your connected CRM (HubSpot, Salesforce, Pipedrive).
  </Step>

  <Step title="Find the custom fields mapping section">
    Scroll to the custom fields list. Your three Qwoty fields appear, prefixed with `Custom:` — for example, `Custom: Date(s) de l'événement`, `Custom: Horaire de l'événement`, `Custom: Nombre de personnes`.
  </Step>

  <Step title="Pick a sync direction for each field">
    Open the direction dropdown and choose one of:

    * **Bidirectional** ↔ — changes in either system propagate to the other
    * **CRM → Qwoty** — Qwoty receives, but never pushes back
    * **Qwoty → CRM** — Qwoty pushes, but ignores changes from the CRM

    For event-driven fields, **Qwoty → CRM** is typical: the sales rep fills the value in Qwoty, and it appears in the CRM record for reporting and follow-up.
  </Step>

  <Step title="Select the matching CRM field">
    From the **Select CRM field** dropdown, pick the field on the CRM side that should receive (or send) the value. Only compatible field types are listed:

    * Date → Date or Date-time
    * Number → Number, Integer, Decimal, or Currency
    * Text → Text, Picklist, or Dropdown
  </Step>

  <Step title="Save changes">
    Click **Save changes** at the bottom of the page. The new mapping is picked up at the next sync cycle (real-time for most modern CRMs).
  </Step>
</Steps>

<Check>
  Your custom fields now flow between Qwoty and your CRM. Test the sync by editing a value in either app and verifying it appears in the other within a few seconds.
</Check>

## Troubleshooting

<AccordionGroup>
  <Accordion title="The field doesn't appear in the template's Custom Fields section">
    Make sure you saved the field in the Data model. Refresh the template page. If the field still doesn't appear, check that the field's **Type** in the Data model is `Custom` (not `System`).
  </Accordion>

  <Accordion title="Sales reps can see the field but can't edit it">
    The **Editable by sale** checkbox is unchecked on the template. Open the template, find the field in the Custom Fields section, check the box, and save.
  </Accordion>

  <Accordion title="The customer doesn't see the field on the Dealroom">
    The **Display for customer** checkbox is unchecked. Activate it on the template and republish the quote — the field appears on the next render of the Dealroom.
  </Accordion>

  <Accordion title="The CRM field dropdown is empty">
    Either the CRM doesn't have a compatible field, or the integration's permissions don't grant access to it. Add or expose the field on the CRM side, then refresh the integration.
  </Accordion>

  <Accordion title="The mapping shows 'Custom: <field name>' but doesn't sync">
    Click **Save changes** at the bottom of the mapping section — changes aren't applied until you save. Then wait one sync cycle (real-time CRMs propagate within seconds).
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Field properties" icon="sliders" href="/user-guide/data-model/reference/field-properties">
    Detailed reference for Mandatory, Editable, Display.
  </Card>

  <Card title="CRM mapping" icon="arrows-rotate" href="/user-guide/data-model/reference/crm-mapping">
    All sync directions and compatibility rules.
  </Card>

  <Card title="Create a Contract custom field" icon="file-signature" href="/user-guide/data-model/how-tos/create-contract-custom-field">
    Same flow, applied to contract models.
  </Card>

  <Card title="Quote templates" icon="clone" href="/user-guide/templates/introduction">
    Manage the templates where Quote custom fields are configured.
  </Card>
</CardGroup>
