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

# How to collect customer data at checkout

> Decide what to ask a customer for and where to ask it — built-in profile fields, customer attributes, and item questions — and know where each answer lands.

<Frame caption="Settings > Checkouts > [checkout] > Steps — Contact">
  <img src="https://mintcdn.com/twicecommerce/-eBzqVyOhlqcTzCw/images/checkout-add-field-picker.webp?fit=max&auto=format&n=-eBzqVyOhlqcTzCw&q=85&s=4cb857f97ea194d6484ddb82a7e62e3c" alt="The checkout editor's Add field picker showing the Customer fields group" width="1920" height="1080" data-path="images/checkout-add-field-picker.webp" />
</Frame>

<Card title="Open in TWICE Admin" icon="external-link" href="https://admin.twicecommerce.com/settings/checkouts" horizontal>
  settings/checkouts
</Card>

Every question you add to a checkout costs you conversions and buys you information. So the useful decision is not *what could I ask* but *where does this belong, and where will the answer be when I need it*.

There are three places to ask, they land in three different places, and picking the wrong one is why merchants end up with data they cannot filter on. This guide is the routing decision.

## Prerequisites

<Warning>
  **Required permissions:** checkout configuration lives in Settings and is gated there — see [Checkouts](/docs/settings/checkouts). Creating the attributes a field can be backed by needs attribute management — see [Attributes & tags](/docs/settings/attributes-tags).
</Warning>

<Info>
  **Decide before you start:**

  * **Will you filter or report on this?** If yes it has to be a field or an attribute, not free text in a note.
  * **Is it about the person or about the item?** That single question picks the place — see the first step.
  * **Do you need it every time?** Required fields block the checkout, which is a real cost on a phone at a trailhead.
</Info>

## The Walkthrough

<Steps>
  <Step title="Route the question to the right place">
    Three destinations, and they are not interchangeable:

    | Ask about                                            | Put it                                                 | Lands on                                    |
    | ---------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------- |
    | **The person**, and it is one of the seven built-ins | A **Customer field** on the Contact step               | The matching column on the customer profile |
    | **The person**, and it is your own field             | A **customer attribute**, surfaced on the Contact step | The attribute on the customer profile       |
    | **The item they are taking**                         | A listing checkout field                               | The order line, not the customer            |

    The third is a different guide — [ask customers for information at checkout](/docs/guides/catalog/listing-checkout-fields) — because a question about the item belongs to the listing, not the checkout. Height for a bike fitting is an item question. Driving licence number is a person question.
  </Step>

  <Step title="Add the built-in profile fields you need">
    Seven fields from the customer profile can be collected on the **Contact** step, grouped under **Customer fields** in the **Add field** picker: **Date of birth**, **Billing address**, **Shipping address**, **Language**, **Customer type**, **Company name** and **Tax ID**.

    Each can be added once per checkout, and per field you set **Required**, a **Label**, a **Placeholder**, and whether it sits on the **same row as the previous field**.

    These are the fields that make a profile useful later: **Customer type**, **Company name** and **Tax ID** are what turn a checkout into a [business customer record](/docs/guides/customers/business-customers) without anyone retyping it.

    Full control-by-control detail is on [Checkout steps](/docs/settings/checkouts/steps).
  </Step>

  <Step title="Use attributes for anything the built-ins do not cover">
    Anything else about the person — membership number, licence class, club affiliation — is a **customer attribute**. Create it once, then surface it on the Contact step.

    Attributes are the difference between data you can act on and data you merely hold: an attribute is a column in the customers table, so it can be filtered, sorted and grouped. That is what makes [segmentation](/docs/guides/customers/segment-customers) possible. A value typed into a general note cannot be found again at scale.

    Attribute-backed fields inherit the attribute's input mask, so a licence number can be validated in the shape you defined rather than accepted as any text.
  </Step>

  <Step title="Be sparing with Required">
    **Required** blocks the customer from continuing past the Contact step. That is right for anything legally necessary — an age check where you sell to over-18s only — and wrong for anything merely useful.

    A practical rule: required for what you cannot legally or operationally proceed without; optional for what you would like to know. Everything you add is friction, and the Contact step is late enough in the flow that friction there is expensive.
  </Step>

  <Step title="Know that checkout values overwrite the profile">
    This is the behaviour that surprises people, and it is worth understanding before you rely on stored data.

    When an order is placed, TWICE matches the checkout against an existing customer **by email**. On a match, the values from the checkout are **written over** the stored ones — name, language, customer type, company name, tax ID, date of birth and both addresses.

    So a returning customer who types their name differently, or leaves a field blank where the checkout does not require it, changes the profile. The checkout is treated as the more recent truth rather than as a supplement.

    <Note>
      A matching email also **revives an archived profile**. A customer you archived who then checks out again returns to active with their new order attached, rather than accumulating orders on a hidden record. That is deliberate, and it is why archiving is not a way to make someone go away.
    </Note>
  </Step>
</Steps>

## How do I know it worked?

* **Place a test order** through the checkout and open the resulting customer record. Every field you added should be populated from what you typed.
* **The values are on the profile, not only the order** — that is the whole point of using Customer fields rather than a note.
* **Attribute columns appear in the customers table**, filterable, which confirms they are usable for segmentation.
* **A second test order with the same email updates the same profile** rather than creating a second one.

## Troubleshooting / Common Pitfalls

<AccordionGroup>
  <Accordion title="The field is not in the Add field picker">
    **Cause:** it is already on the form. Fields already placed leave the picker, since each can be added only once per checkout.

    **What to do:** scroll the Contact step — it is already there. If you want it in a different position, move it rather than adding it again.
  </Accordion>

  <Accordion title="A returning customer's details changed by themselves">
    **They did not change by themselves — the customer changed them at checkout.** A matching email overwrites the stored profile fields with the checkout values.

    **What to do:** treat the profile as reflecting the most recent order rather than as a stable record you curate. Where a value must not be customer-editable, do not collect it at checkout; set it in the admin and leave it off the Contact step.
  </Accordion>

  <Accordion title="I collected the data but cannot filter customers by it">
    **Cause:** it went somewhere unfilterable — a general note, or a listing checkout field that landed on the order line rather than the customer.

    **What to do:** make it a customer attribute and collect it as a Customer field. Data about the person that lives on an order line cannot be segmented on.
  </Accordion>

  <Accordion title="Customers are abandoning the checkout">
    **Look at how many Required fields you have added.** The Contact step is late in the flow, and every required field is a chance to give up.

    **What to do:** make everything optional that you do not strictly need, and reconsider whether the question belongs at checkout at all — some things are better asked at pickup, by a person.
  </Accordion>

  <Accordion title="I need the same question per item, not per customer">
    **Wrong destination.** A per-item question belongs to the listing.

    **What to do:** see [ask customers for information at checkout](/docs/guides/catalog/listing-checkout-fields). Those answers land on the order line, which is where a per-item answer is useful.
  </Accordion>
</AccordionGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="Checkout steps" icon="list-check" href="/docs/settings/checkouts/steps">
    The Contact step, field by field.
  </Card>

  <Card title="Segment customers" icon="filter" href="/docs/guides/customers/segment-customers">
    Using what you collect to build groups.
  </Card>

  <Card title="Ask for information at checkout" icon="circle-question" href="/docs/guides/catalog/listing-checkout-fields">
    The per-item version of this decision.
  </Card>

  <Card title="Attributes" icon="tag" href="/docs/concepts/admin/attributes">
    How attributes and input masks work.
  </Card>
</CardGroup>
