Canonical URL: https://chargezen.com/docs/checkoutos/checkout-extensions/custom-fields

# Custom Fields

Collect additional information from customers during checkout

Last updated: 2025-01-16

**Custom Fields** allow you to collect additional information from customers during checkout. This data can be used for personalization, fulfillment requirements, regulatory compliance, or marketing purposes.

##### Use Sparingly

Each additional field adds friction to checkout. Only collect information that's truly necessary. Every required field can reduce conversion by 1-3%.

## Available Field Types

### Text Fields

#### Text Input Types

*   Single-line text — Short responses
*   Multi-line textarea — Longer responses like instructions
*   Email — With validation
*   Phone number — With formatting
*   Number — Numeric input only

### Selection Fields

#### Selection Types

*   Dropdown select — Single choice from a list
*   Radio buttons — Single choice, all options visible
*   Checkboxes — Multiple selections allowed
*   Toggle switch — Yes/no binary choice

### Special Fields

#### Special Input Types

*   Date picker — Calendar selection
*   Time picker — Time slot selection
*   File upload — Document/image uploads
*   Signature — Digital signature capture

## Common Use Cases

### Delivery Instructions

Delivery Instructions Field

```json
{
  "field": {
    "id": "delivery_instructions",
    "type": "textarea",
    "label": "Delivery Instructions",
    "placeholder": "Gate code, leave at door, etc.",
    "required": false,
    "max_length": 200,
    "placement": "shipping_address"
  }
}
```

### Age Verification

Age Verification Field

```json
{
  "field": {
    "id": "age_verification",
    "type": "date",
    "label": "Date of Birth",
    "required": true,
    "validation": {
      "min_age": 21,
      "error_message": "You must be 21 or older to purchase this product"
    },
    "conditional": {
      "show_when": "cart_contains_tag",
      "tag": "age-restricted"
    }
  }
}
```

### Business/Tax Information

Business Fields

```json
{
  "fields": [
    {
      "id": "company_name",
      "type": "text",
      "label": "Company Name",
      "required": false
    },
    {
      "id": "vat_number",
      "type": "text",
      "label": "VAT Number",
      "required": false,
      "validation": "vat",
      "conditional": {
        "show_when": "country_in",
        "countries": ["DE", "FR", "IT", "ES", "NL"]
      }
    }
  ]
}
```

### Product Personalization

Personalization Fields

```json
{
  "field": {
    "id": "engraving_text",
    "type": "text",
    "label": "Engraving Text",
    "placeholder": "Enter text to engrave (max 20 characters)",
    "required": true,
    "max_length": 20,
    "conditional": {
      "show_when": "cart_contains_product",
      "product_ids": ["ring-001", "bracelet-002"]
    }
  }
}
```

## Setting Up Custom Fields

1

#### Create New Field

Go to CheckoutOS → Checkout Extensions → Custom Fields → Add Field.

2

#### Select Field Type

Choose the appropriate input type for your data.

3

#### Configure Properties

Set label, placeholder, validation rules, and requirements.

4

#### Set Conditions (Optional)

Define when the field should appear based on cart or customer.

5

#### Choose Placement

Select where in checkout the field appears.

6

#### Map Data Destination

Configure where the collected data is stored and sent.

## Validation Options

Ensure data quality with built-in validation:

Validation Configuration

```json
{
  "validation": {
    "required": true,
    "min_length": 2,
    "max_length": 100,
    "pattern": "^[A-Za-z ]+$",
    "pattern_message": "Only letters and spaces allowed",
    "custom_validator": "validate_phone_number",
    "validate_on": "blur"
  }
}
```

## Conditional Display

Show fields only when relevant conditions are met:

Conditional Logic

```json
{
  "conditions": {
    "logic": "AND",
    "rules": [
      {
        "type": "cart_total",
        "operator": "greater_than",
        "value": 100
      },
      {
        "type": "shipping_country",
        "operator": "in",
        "value": ["US", "CA"]
      }
    ]
  }
}
```

## Data Handling

Custom field data can be sent to multiple destinations:

#### Data Destinations

*   Shopify order attributes — Visible in order admin
*   Shopify order notes — Concatenated into notes field
*   Shopify metafields — Structured data storage
*   Webhooks — Send to external systems
*   Email — Include in order confirmation
*   Fulfillment apps — ShipStation, etc.

##### PII Handling

If collecting sensitive personal information (SSN, health data, etc.), ensure your data handling complies with applicable regulations (GDPR, CCPA, HIPAA). Consider encryption and access controls.

## Styling Custom Fields

Field Styling

```json
{
  "styling": {
    "label_position": "above",
    "label_size": "small",
    "input_style": "outlined",
    "error_style": "inline",
    "help_text_position": "below",
    "required_indicator": "*",
    "group_fields": true,
    "group_title": "Additional Information"
  }
}
```

## Best Practices

##### Optimization Tips

*   **Minimize required fields** — Every field adds friction
*   **Use conditional display** — Only show relevant fields
*   **Provide clear labels** — Users should know why you're asking
*   **Use appropriate field types** — Date pickers for dates, dropdowns for fixed options
*   **Set sensible defaults** — Pre-fill when possible
*   **Test on mobile** — Ensure fields work well on touch devices

## Related Topics

[

### Checkout Extensions Overview

See all available extensions

Learn more



](https://chargezen.com/docs/checkoutos/checkout-extensions/overview)[

### Discount Functions

Apply discounts based on field values

Learn more



](https://chargezen.com/docs/checkoutos/discount-functions/overview)

Was this page helpful?

Need more help? [Contact support](https://chargezen.com/docs/checkoutos/troubleshooting/support)
