Skip to main content
This guide walks you through creating custom fields to collect additional information from customers during checkout.

Prerequisites

You have webhooks set up to receive custom field data

Create a Custom Field

1

Open the Dashboard

Go to Fungies DashboardProductsGame Assets
2

Select a Project

Click Add project to create a new one, or edit an existing project
3

Add a Custom Field

In the project form, scroll to Custom Fields and click Add field
4

Configure the Field

Choose a field type and configure its settings (see below)
5

Save

Click Save to apply your changes
Custom fields apply to all products within a project. Customers must fill in all custom fields to complete checkout.

Field Types

Text Field

A free-form text input for collecting strings like usernames, IDs, or notes. Common uses:
  • Player IDs / Usernames
  • Email addresses
  • External account identifiers
  • Custom notes or messages

Selection Field

A dropdown menu where customers choose from predefined options. Common uses:
  • Game server selection
  • Region preference
  • Product variants or configurations

Example Configurations

Player ID Field

This accepts alphanumeric player IDs between 3 and 32 characters.

Server Selection Field

Customers select which server should receive their purchased items.

Discord Username Field

Validates the classic Discord username format.

Receiving Custom Field Data

When a customer completes a purchase, the custom field data is included on each line item, under data.items[].customFields — not at the top level of the event:
Your webhook handler can extract this data from each item and use it to fulfill the order in your system. See the Event object reference for the full payload shape.
customFields is only populated for keys that exactly match a field’s Key. The Key you set in Add a Custom Field above is the literal property name that shows up under customFields in the webhook payload. Any value submitted at checkout whose key doesn’t match a defined field’s Key character-for-character (case-sensitive) is silently dropped — no error is raised, on either your side or ours.If customFields shows up empty or missing values:
  • Confirm the field is actually defined on the product (or project) being purchased — fields don’t apply store-wide, only to the project/product they’re configured on.
  • Confirm the key your checkout flow sends matches the field’s Key exactly.
  • Double-check you’re reading data.items[].customFields, not data.customFields — it’s nested per line item.

Best Practices

Keep it minimal. Only ask for information you actually need. More fields = more friction = lower conversion rates.
  • Use clear, descriptive labels that customers understand
  • Add placeholder text showing the expected format
  • Use regex validation to catch errors early
  • Consider using selection fields when there’s a fixed set of options

Next Steps

Add Validation Rules

Learn how to validate customer input with regex patterns or your own API