Creating a Custom Type
- How to open the Custom Types builder
- What each field on the definition form does
- How to add fields, choose field types, and set validation rules
Creating a Custom Type is a two-step job: first you define the template (what fields your records will have), then you and your team can add records against that template.
Step 1 — Open the Custom Types page
- In the AutoTalk sidebar, click Custom Types. You'll see the list of types your company has already defined (empty on a new account).
- Click the + button at the top right (its tooltip reads "Add new custom_types").
Step 2 — Fill in the top-level fields
| Field | Description |
|---|---|
| Slug | A unique identifier for this type, like leads or helpdesk_tickets. Must start with a lowercase letter, then lowercase letters, digits, and underscores; 3 to 41 characters. Slugs that match built-in AutoTalk collections (contacts, messages, support_tickets, …) are reserved and will be rejected. You cannot change the slug later, so pick carefully. The slug becomes part of every URL and API call for this type. |
| Name | The human-readable label shown in menus and page titles (e.g., "Leads"). You can change this any time. |
| Description | A one-sentence summary shown in list views. Optional. |
| Purpose | A longer paragraph explaining what this type is for. Very useful when AI agents are deciding whether to read or write your type — treat it like a handoff note to a colleague. Optional but recommended. |
Step 3 — Add fields
The Fields section is where you describe the shape of each record. Click "+ Add field" to create a new row.
Each field has:
- Name — the key used in the stored record (e.g.,
email,status,priority). Use camelCase or snake_case consistently. - Type — what kind of data this field holds:
- Text — short or long strings
- Number — integers or decimals, with optional min/max
- Boolean — true/false checkbox
- Date — calendar day (no time)
- Date & time — calendar day with hour/minute
- Select (enum) — a dropdown; list the allowed values one per line
- Array — a list of repeated items
- Reference — link to another record (a Contact, an Employee, or another Custom Type)
- Location — a geographic point
- JSON — a free-form JSON object for advanced cases
- Image — an uploaded image
- File — an uploaded file (image, video, audio, or document)
- Required — whether the user must fill this in before saving
- Description — helper text shown in the form
Type-specific options
- Text — set a max length to cap very long strings (e.g.,
maxLength: 256). - Number — set min and max bounds.
- Select — list the allowed values, one per line, in the Allowed values text area. For example:
new
contacted
qualified
won
lost - Reference — enter the target type. Use a built-in name like
contactsoremployees, or another Custom Type with thect:prefix — e.g.,ct:leads. - Image / File — optionally restrict the upload with Accepted files (MIME) (e.g.,
image/*) and Max size (bytes). For File fields, pick the File kind (image, video, audio, or document). An Array whose items are Image or File renders as an upload gallery.
Reordering and removing
Each row has ↑ and ↓ arrows to change position (this controls the order fields appear in the form), plus Edit and Delete buttons.
Step 4 — Tabs and sections (optional)
For types with many fields, group them into Tabs and Sections to keep the form readable.
- A tab is a top-level grouping (e.g., "General", "Billing", "Notes").
- A section is a collapsible group of fields within a tab (e.g., within "General" you might have a "Contact info" section and a "Scoring" section).
Add them in the Tabs / Sections fields. To assign a field to a tab or section, edit that field's cel JSON and set cel: { tab: "general", section: "scoring" } — there is no visual picker for this in the field editor.
Step 5 — Indexed paths (optional, for performance)
If your users will filter on the same field frequently (e.g., always searching leads by email or status), add that field name to Indexed paths. Up to 5 per type. This makes searches faster once you have thousands of records.
Step 6 — MCP hints (optional)
If you plan to let AI agents or external MCP clients read/write this type, add one or two short hints to MCP hints. They're shown to the LLM alongside the type definition. Example: "Always set status when creating a lead."
Step 7 — Save
Click Save. The type now appears in your sidebar under Custom Types, and your team can start adding records to it.
Start with a minimal field list. You can add more fields later by editing the type definition, and existing records will stay intact. Deleting or renaming fields is harder — plan the essentials up front.
What happens after you save
- AutoTalk creates the list page at Custom Types → your type name.
- The type is exposed through the AutoTalk API at
/v1/dynadata/type/ct:<slug>/{list,create,update,...}(POST) for any integration you or an agent might build. - The MCP server automatically discovers the new type so AI agents can read and write records against it.
Next steps
- Managing records — add, edit, filter, and delete records of your new Custom Type
- Using with MCP — hand the type to an AI agent