Skip to content

Setting Up Custom Fields

Custom fields let you capture any data FoxCLM doesn't have out of the box - school year, membership tier, emergency contacts, medical notes, referral source, anything specific to your business. They show up automatically in the relevant edit modals and can drive workflow conditions.

This tutorial walks through adding custom fields to clients, sessions, and invoices. Takes about 5 minutes.

1. Open the Custom Fields page

Click Custom Fields in the sidebar (under AI TOOLS).

Custom Fields page

The page has three tabs:

  • Client Fields - appear when editing a client
  • Event Fields - appear when editing a session
  • Invoice Fields - appear when editing an invoice

Each tab lists the existing fields with their Label, Type, Required flag, Order, and action buttons. The seeded examples show School Year (Select type) and Learning Goals (Text type) on clients.

Click + New Field in the top right.

2. The new field modal

New field modal (empty)

Fields:

  • Label (required) - the field name users see (e.g. "School Year", "Emergency Contact")
  • Type - one of:
    • Text - single or multi-line free text
    • Number - numeric value
    • Date - calendar date picker
    • Select (dropdown) - pick from a predefined list
  • Sort Order - position in the form (lower = higher)
  • Options - for select fields only, one option per line
  • Required - if checked, the record can't be saved without a value

3. Adding a text field

The simplest case: a free-form text field.

Text field filled

Example: "Emergency Contact" as a text field that captures a name and phone number as a single string. Clients can't be saved without it if you tick Required.

Text fields work for:

  • Notes
  • Emergency contacts
  • Referral source
  • Medical conditions
  • Anything that doesn't fit a number, date, or predefined list

4. Adding a select (dropdown) field

For values where the options are known upfront, use a select field:

Select field with options

Example: "Membership Tier" with four options - Bronze, Silver, Gold, Platinum - one per line.

Select fields have two advantages over text:

  • Consistency - users can't typo "Golld" or "gold " (with trailing space)
  • Filterable - you can reliably filter and report on known values

Use select for:

  • Membership levels
  • Class size preference (1-on-1, Small group, Large group)
  • Skill level (Beginner, Intermediate, Advanced)
  • Delivery method (In-person, Online, Hybrid)

5. Save

Click Create. The field appears in the list immediately and shows up in the relevant edit modal (Client edit, Session edit, or Invoice edit) for every record going forward.

Existing records get the new field too - they just have no value yet. Edit and save them to populate.

6. Where fields appear

In the edit modal

Every client edit modal shows all Client Fields at the bottom under a Custom Fields section. Same for sessions and invoices.

In workflow conditions

Custom fields can drive automation. Example: "When a client's membership_tier equals Platinum, fire the send_welcome_email action with a premium template."

Build conditions at Workflow -> pick a transition -> add a condition with the custom field as the left-hand side. See Your First Workflow for the condition editor reference.

In email action bodies

Custom email action bodies can reference custom field values with placeholders like:

Hello {{fname}},

Your {{custom.membership_tier}} membership expires on {{custom.expires_at}}.

In webhook payloads

Same placeholder syntax works in webhook payload templates.

In the invoice designer

Drag any custom field onto your invoice template. Great for custom references, PO numbers, or contract IDs that need to appear on the invoice.

7. Editing and removing fields

Edit

Click Edit next to any field. You can change the label, type, order, and required flag. Existing values are preserved (converted if the type changes, blanked if the type is incompatible).

Delete

Click Delete to remove a field. This also deletes all values stored in it across every record. FoxCLM asks for confirmation.

If you want to keep the data but hide the field from the UI, consider archiving instead (not currently supported - use a "z-deprecated" prefix in the label and move to the bottom of the sort order).

8. Which entity to target

Field should live onExampleTab
Per-client infoEmergency contact, membership tier, allergiesClient Fields
Per-session infoTopic covered, homework assigned, attendance notesEvent Fields
Per-invoice infoPO number, project code, contract refInvoice Fields

If you're not sure, ask "does this change per X?" If it changes per session (e.g. homework), it's an Event field. If it stays the same for the client over many sessions (e.g. emergency contact), it's a Client field.

Tips

  • Don't over-engineer. Start with 3-5 fields and add more when you find yourself putting info in the notes field repeatedly.
  • Prefer select over text when the set of values is known. Consistent values unlock reliable filtering and workflow conditions.
  • Use Required sparingly. Required fields block saves and frustrate collaborators who don't have the info yet. Better to leave optional and use a workflow to chase the missing data.
  • Order fields by frequency of use. Most-edited fields first; one-off notes at the bottom.

What's next

FoxCLM Documentation