Rest V2 Gap - Custom Field Tabs & Headers

In the Legacy XMLRPC API - we could query the DataFormField table and get a list of all custom fields. From here, you would also query the DataFormFieldTab & DataFormFieldGroup tables to know which tab & section header a custom field belongs to.

We can currently retrieve the custom field metadata, but it doesn’t contain the tab/header the field belongs to.

At a minimum, it would be great to have the tab/header added into that model.

Ideally we would have a CustomFieldAPI that has crud operations for tabs/headers/custom fields.

I saw some items on the known issues tracker as it pertains to custom fields, but it did not mention anything about tabs/headers.. so I wanted to put this request in.

Thanks,
Casey

@Casey_Page Thanks for reporting this. I’ll bring it up internally with the team and get back to you once I have more details or an update.

This has been added to the known issues tracker.

Hi @Casey_Page,

This is now available in REST V2.

We introduced support for custom field grouping that includes tabs and headers via the new Custom Field Groups model. You can retrieve and manage the structure (including tab-level organization) through the V2 endpoints.

For each supported record type (contacts, companies, opportunities, notes, tasks, subscriptions, orders, affiliates), the following CRUD endpoints are available:


GET    /v2/<record_type>/model/customFields/groups?tab_id={tabId}
GET    /v2/<record_type>/model/customFields/groups/{group_id}
POST   /v2/<record_type>/model/customFields/groups
PATCH  /v2/<record_type>/model/customFields/groups/{group_id}?update_mask=...
DELETE /v2/<record_type>/model/customFields/groups/{group_id}

In total, this is 40 new endpoints (5 endpoints × 8 record-type controllers).

Example (Contacts):


GET    /v2/contacts/model/customFields/groups
GET    /v2/contacts/model/customFields/groups/{group_id}
POST   /v2/contacts/model/customFields/groups
PATCH  /v2/contacts/model/customFields/groups/{group_id}
DELETE  /v2/contacts/model/customFields/groups/{group_id}

You can find the full documentation here:

CC: @Todd_Stoker @Timothy_Withers, this was also listed in your initial github report.

Hey @OmarAlmonte

Thanks for the new end-points, but I think it’s missing a key feature - the Tab Name.

I looked at the doc links and updated to the latest API SDK to make sure I’m not missing naything

<https://developer.infusionsoft.com/docs/restv2/#tag/Contact/operation/getContactCustomFieldGroup>
<https://developer.infusionsoft.com/docs/restv2/#tag/Contact/operation/createContactCustomFieldGroup>
<https://developer.infusionsoft.com/docs/restv2/#tag/Contact/operation/listContactCustomFieldGroups>
<https://developer.infusionsoft.com/docs/restv2/#tag/Contact/operation/updateContactCustomFieldGroup>
<https://developer.infusionsoft.com/docs/restv2/#tag/Contact/operation/deleteContactCustomFieldGroup>

I need to know the Tab Names & Header names for each custom field. Currently it only shows the “tab_id”

When creating/adding a custom field, it would be nice to add this custom field where I want to. Currently, I can create a Header, but I can’t create a Tab. To be fair, you couldn’t create a Tab in the XML RPC Api either - so if that’s a limitation it’s fine.. I can tell them to login to Keap and create the tab first, but its just not the best experience.

Maybe a quick fix would be to add tab_id and tab_name to the custom_field model just like you have group_id and group_name … With this, I could atleast get a list of existing Tabs & Headers with the id/name I need.

https://developer.infusionsoft.com/docs/restv2/#tag/Contact/operation/retrieveContactModel

{
   "custom_fields":[
      {
         "id":"string",
         "label":"string",
         "options":[
            {
               "id":"string",
               "label":"string"
            }
         ],
         "record_type":"CONTACT",
         "field_type":"CURRENCY",
         "default_value":"string",
         "group_id":"string",
         "group_name":"string",
         "field_name":"string"
      }
   ],
   "optional_properties":[
      "string"
   ]
}

With the new end-points you added, I can atleast have them select an existing tab and add a new header, but as it is today, I can’t see the Tab Name.

If I over-looked something, let me know!

Thanks,

Casey

@OmarAlmonte - just tagging you here in case you didn’t see my last post on this thread about the Tab Names not being visible from the API.

Hey Casey, sorry. I thought I had replied to your previous message.

We reviewed this internally and decided to add new endpoints for tab management. They’re already implemented and currently being tested, so they should be available soon.

Thanks for the feedback.

Ok great thanks.