Return to Administrator's Guide
Return to Profiles Admin Main Page


View the Custom Field Set tutorial

View the Custom Fields tutorial

CUSTOM FIELDS are created through the CUSTOM DATA function. These fields can be used in Profiles or in standard forms and screens, such as view contacts.


CUSTOM FIELDS are data fields not included in the standard version of CIVICRM. You can create as many CUSTOM FIELDS as you like.

Custom fields can be added and used for various types of records (contacts, activities, relationships, contributions, event participants, etc.) For example, you could add a field to ask if event participants "Need Childcare?", or you could add a field to record the "Eye Color" of contacts, or for contributions you could add fields where contributors indicate specific funds for their contributions, i.e., "New Building Fund", "Beds for Children", "Uganda Fund", etc.

CUSTOM DATA FIELDS are created using the CUSTOM DATA function (see below).


CUSTOM FIELD SETS are used to collect and store information not included in standard CIVICRM forms. CUSTOM FIELD SETS are simply a collection of CUSTOM FIELDS. You can create one or many sets of custom fields.

For example, you could create a CUSTOM FIELD SET to hold data about summer camp participants. The group could include CUSTOM FIELDS such as Camp Activities, Camp Counselor, Cabin Assignment, Assigned Chores, etc. You can then use these fields in a profile to allow management of camp participant data on one screen.

All CUSTOM FIELDS in a CUSTOM FIELD SET must be used for the same type of record (i.e. for Individual Contact records, or for Contribution records...). As you plan and implement custom data in your database - consider the type of record each field belongs to and then group them accordingly. A common pitfall is assigning custom fields to a person (individual contact record) that are better assigned to a transaction or activity which the person engages in. A field which stores a person's entree choice at a Dinner Event should be assigned to the Participant record, and not to the Individual Contact record - because this data describes the person "as a participant" in an event (they might not have or make the same choices for another dinner).

CiviCRM stores each custom field set as a MySQL table with a column for each custom field in that set. It is important to consider this as you plan your custom data "schema" - as it will have the same advantages and limitations as other MySQL tables. Organizing your custom fields into logical groupings is a key concept. If you put too many fields in one set, you risk exceeding MySQL's limit for maximum row-size. Creating more than 40 or so custom data sets may result in exceeding MySQL's maximum allowed number of left joins (64) when doing operations like exporting data. Consult the MySQL Reference Manual for more details. It's a good idea to load up some records with the maximum expected set of custom data and test operations like search and export before finalizing your database design and putting it into production.

  • When you upgrade to a newer version of CiviCRM, your Custom Field definitions and the data stored in them will be maintained.
  • Specialized customizations using the PHP programming language will need to be re-created when you upgrade, however.
  • Minimize frustration by documenting your PHP customizations for easy re-creation by the person managing your upgrade.

For assistance in deciding when to use custom fields, see Tags vs. Groups vs. Custom Fields.

Go to: Creating Custom Field Sets & Custom Fields
Go to: How to Create Profiles