> For the complete documentation index, see [llms.txt](https://orbit-b2b.gitbook.io/orbit-b2b-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://orbit-b2b.gitbook.io/orbit-b2b-docs/b2b-registration/custom-fields.md).

# Custom fields & file upload

Collect exactly the information you need from B2B applicants by adding your own fields to the registration form — including file uploads that land directly in your Shopify Files.

> **Plan:** Custom fields are available on the **Advanced plan and above**. On Free and Essential the built-in fields still work fully; only adding your own fields requires Advanced.

***

## Add a custom field

1. Open the form editor (**Registration → Form settings → Edit form**)
2. At the bottom of the **Form fields** list, click **+ Add element**
3. Pick a field type
4. The field is added and selected — configure it in the right-hand panel
5. **Save**

On Free/Essential the **+ Add element** button is replaced by an upgrade note.

***

## Field types & their settings

| Type                 | Extra settings                               |
| -------------------- | -------------------------------------------- |
| **Text / Textarea**  | Placeholder                                  |
| **Number**           | Minimum, Maximum, Step                       |
| **Dropdown / Radio** | List of options (add, remove, reorder)       |
| **Checkbox**         | — (a single consent tick)                    |
| **Checkbox group**   | List of options (customer can tick several)  |
| **Date**             | Earliest date, Latest date                   |
| **File upload**      | Allowed file types, Max size, Allow multiple |

Every field also has **Required**, **Width** (full/half), **Label**, and **Placeholder** where relevant.

***

## How field IDs work

Each custom field gets a unique ID generated from its label:

* **Chọn date** → `chon_date_a1b2`
* **Reseller license** → `reseller_license_9f30`

Accents and special characters are stripped, spaces become underscores, and a short random suffix is added so two fields with the same label never collide — and a custom field never clashes with a built-in one. While the field is unsaved, the ID follows the label; once you save, the ID is **frozen** so existing submissions keep pointing to the right field even if you rename it.

Built-in fields keep their fixed IDs (`firstName`, `email`, …) and are never regenerated.

***

## File upload fields

A **File upload** field lets applicants attach documents such as a business license, tax certificate, or reseller permit.

**Settings:**

* **Allowed file types** — toggle PDF, Images (PNG/JPG/WebP), and Documents (DOC/DOCX)
* **Max file size (MB)** — 1 to 25 MB
* **Allow multiple files** — let the applicant attach more than one

**What happens on submit:**

1. When the applicant selects a file, the app uploads it immediately to your store's **Shopify Files** (Shopify admin → **Content → Files**)
2. The allowed types and size limit are enforced **on the server**, so they can't be bypassed from the browser
3. A link to each file is stored on the submission

**Reviewing:** in the submission detail, uploaded files appear as clickable links you can open or download while deciding whether to approve.

> Files are stored in Shopify Files, not attached to the customer record. They remain available in your Files area for your reference.

***

## Where custom answers appear

Custom field answers are saved on the submission and shown in the **submission detail** when you review an application:

* File uploads → clickable links
* Checkbox group → the list of ticked choices
* Checkbox → Yes / No
* Everything else → the value as entered

They are kept on the submission for your reference and are not written onto the Shopify customer record.

***

## Languages

Custom field labels and placeholders can be translated per language, just like the built-in fields — switch the language tab in the editor and enter the translated text. (Dropdown/radio option labels currently display in your primary language.)


---

# 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://orbit-b2b.gitbook.io/orbit-b2b-docs/b2b-registration/custom-fields.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.
