This reference maps fields from the Clients & Contacts edit dialogs to the external data warehouse. Use it when building reports or validating an integration.
Tables covered: client, client_group, contact, contact_info, client_tax_region, office, and staff.
Human-readable contact and address values are stored in contact_info. A client can point to several different contact_info rows, so use the documented join for the field you need.
Client fields
Screen: Clients & Contacts → Client detail → Edit Client
| UI field | Table | Column | Notes |
|---|---|---|---|
| Name | client | name | Client display name |
| Client ID | client | client_ref, key | Both values are written on save |
| Client Type | client | client_type_id | Display text comes from client_type.name |
| Client Group | client | client_group_id | Only shown when Client Groups is enabled |
| Primary Contact | client → contact → contact_info | pref_contact_id → contact_info_id → full_name | The client stores the contact ID; the displayed name is in contact_info |
| Secondary Contact | Same join | secondary_contact_id → full_name | Same join pattern as Primary Contact |
| Billing Contact | Same join | billing_contact_id → full_name | Same join pattern as Primary Contact |
| Fiscal Year End | client | fiscal_year_end_month, fiscal_year_end_day | Stored as separate month and day values |
| FEIN | client | fein | Federal Employer Identification Number |
| Delivery method | client | invoice_delivery_method | Invoice delivery preference |
| Office | client | office_id | Foreign key to the office record |
| Partner | client | partner_staff_id | Foreign key to staff |
| Manager | client | manager_staff_id | Foreign key to staff |
| Billing Manager | client | staff_billing_manager_id | Foreign key to staff |
| Tax Regions | client_tax_region | client_id, tax_region_id | One junction-table row per client and tax-region pair |
| Custom Fields | client | custom_field_values | JSON keyed by custom-field name |
Client address
The address on Edit Client is reached through client.client_contact_info_id. This is not necessarily the same contact_info row used by the client's Primary or Billing Contact.
| UI field | Table | Column |
|---|---|---|
| Address | contact_info | address |
| Address 2 | contact_info | address_2 |
| City | contact_info | city |
| Country | contact_info | country |
| State / Province | contact_info | state |
| Postal Code | contact_info | zip_code |
Client Group fields
Screen: Clients & Contacts → Client Groups → Edit client group
| UI field | Table | Column | Notes |
|---|---|---|---|
| Group Name | client_group | name | Group display name |
| Clients | client | client_group_id | Membership is stored on each member client, not as a list on the group |
| Primary Client | client_group → client | parent_client_id → name | Foreign key to the representative client |
| Primary Contact | client_group → contact → contact_info | primary_contact_id → contact_info_id → full_name | Optional group-level foreign key |
| Billing Contact | Same join | billing_contact_id → full_name | Optional group-level foreign key |
| Office | client_group → office | office_id → name | Required in the edit dialog |
| Partner | client_group → staff | partner_staff_id → full_name | Optional |
| Manager | client_group → staff | manager_staff_id → full_name | Optional |
Group-level Primary Contact and Billing Contact columns exist in the data model. Confirm whether your product configuration uses them before treating them as communication-routing fields; client-level contact settings remain the documented source for invoice and statement recipients.
Contact fields
Screen: Clients & Contacts → Contacts → Add Contact
| UI field | Table | Column | Notes |
|---|---|---|---|
| Name | contact_info | full_name, first_name, last_name | All three values are written together |
contact_info | email | Used for client communications | |
| Job Title | contact_info | job_title | Optional |
| Prefix | contact_info | prefix | Optional |
| Salutation | contact_info | salutation | Optional |
| Phone | contact_info | phone | Informational |
| Address | contact_info | address | Contact address line 1 |
| Address 2 | contact_info | address_2 | Contact address line 2 |
| City | contact_info | city | |
| Country | contact_info | country | Defaults to US in the documented form |
| State / Province | contact_info | state | US values use the two-letter abbreviation; non-US values may be free text |
| Postal Code | contact_info | zip_code |
SSN and Spouse SSN are secure PII. They are handled outside the normal entity-save path and are not exposed for reporting through these tables.
Query notes
- To find a group's members, query
clientbyclient_group_id. - Do not assume one
contact_inforow per client. Follow the specific foreign key for the address or contact role you need. - Parse
client.custom_field_valuesas JSON. Custom field names are keys, not queryable columns. - For reporting by contact, join
contact.contact_info_idtocontact_info; queryingcontactalone does not return the displayed name, email, or address.