Set Up Custom Fields
Create custom fields in the Fungies Dashboard to collect customer data during checkout.
This guide walks you through creating custom fields to collect additional information from customers during checkout.
Prerequisites
Create a Custom Field
Open the Dashboard
Go to Fungies Dashboard → Products → Game Assets
Select a Project
Click Add project to create a new one, or edit an existing project
Add a Custom Field
In the project form, scroll to Custom Fields and click Add field
Configure the Field
Choose a field type and configure its settings (see below)
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.
| Setting | Description |
|---|---|
| Label | Field label shown to customers (e.g., "Player ID") |
| Placeholder | Hint text shown in the empty field |
| Regex | Optional pattern validation (e.g., ^[a-zA-Z0-9]{3,20}$) |
| Validation URL | Optional API endpoint for custom validation |
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.
| Setting | Description |
|---|---|
| Label | Field label shown to customers (e.g., "Select Server") |
| Options | List of choices (minimum 1 required) |
Common uses:
- Game server selection
- Region preference
- Product variants or configurations
Example Configurations
Player ID Field
Label: Player ID
Placeholder: Enter your in-game player ID
Regex: ^[a-zA-Z0-9_]{3,32}$This accepts alphanumeric player IDs between 3 and 32 characters.
Server Selection Field
Label: Select Your Server
Options:
- US East
- US West
- EU Central
- Asia PacificCustomers select which server should receive their purchased items.
Discord Username Field
Label: Discord Username
Placeholder: username#1234
Regex: ^.{3,32}#[0-9]{4}$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:
{
"id": "evt_123e4567-e89b-12d3-a456-426614174000",
"type": "payment_success",
"data": {
"items": [
{
"object": "item",
"id": "itm_abc123",
"name": "Legendary Sword",
"customFields": {
"playerId": "Player_12345",
"server": "US East"
}
}
]
}
}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, notdata.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
Last updated