Skip to main content

Field Type Reference

The Activity Form Builder supports a rich set of field types. Each type is designed for a specific kind of input and carries its own configuration options in the Property Panel.

This page documents every available field type, with deep-dive sections for Mappable Field and Remote Select — the two most powerful and commonly misunderstood types.


Quick Reference​

Field TypeUse When You Need…
textA single-line text input
passwordA masked text input for secrets
numberA numeric input
checkBoxA boolean toggle (checkbox style)
SwitchSelectorA boolean toggle (switch/toggle style)
RadioButtonA group of mutually exclusive options
selectA single-choice dropdown with fixed options
multiSelectA multi-choice dropdown shown as tags
multiSelectWithoutTagsA multi-choice dropdown without tag UI
remoteSelectA dropdown whose options are fetched dynamically from an API
mappableFieldA field whose value can be bound to a workflow variable, resource, or schema property
DndFieldA drag-and-drop binding target for global variables and resources
CodeInputA code editor with syntax highlighting
tableA repeatable table of rows with defined columns
UploadSchemaA JSON Schema upload and editor
MappingInputAn input mapping/transformation UI
MappingOutputAn output mapping/transformation UI
ConditionExpressionA visual condition / expression builder
FilterGroupsA filter group builder (AND/OR conditions)
AggregationTableA SQL-style aggregation table
FixedWidthTableA fixed-width table display
ContextA context variable picker
WorkflowAttributesA workflow attribute selector
GroupActivitySelectorA picker for the activity's group
TimeZoneSelectorA timezone picker
RunIntervalSelectorA cron expression selector
DateSelectorA date picker
TimeSelectorA time picker
ScopesTableAn OAuth scopes table
ButtonAn action button
prefixedTextA text input with a fixed prefix
AlertMsgA read-only alert/info message
DisplayComponentA read-only display element

Mappable Field​

A Mappable Field is a text-based input that can optionally be bound to a data source — a workflow global variable, a resource reference, or a schema property. When bound, the field value is resolved dynamically at runtime rather than being typed in manually.

This is the field type to use for any value that might change per workflow run, per tenant, or per environment — such as API keys, IDs, tenant codes, or dynamic URLs.

How It Works​

In its default state a Mappable Field looks and behaves like a plain text input. The binding capability is unlocked by setting allowGlobalVariable or allowResource to true, which wraps the field in a drag-and-drop zone. Users can then drag a variable or resource from the workflow sidebar onto the field to bind it.

At runtime, the platform resolves the bound reference and substitutes the real value before the activity executes.

Configuration Properties​

PropertyTypeDescription
TitlestringLabel shown above the field.
KeystringInternal schema key for this field.
RequiredbooleanWhether a value or binding is required.
PlaceholderstringGhost text for the unbound state.
Info MessagestringTooltip text (ℹ icon).
Mapped TostringDeclares that this field is a binding point for a specific schema path (see below).
Hide While MappingbooleanWhen true, this property is excluded from the activity's output schema when the field is bound. Prevents duplication in the mapper.
Allow Global VariablebooleanEnables drag-and-drop binding from workflow global variables. Uses the $: prefix internally.
Allow ResourcebooleanEnables drag-and-drop binding from deployed Managed Resources. Uses the ref: prefix internally.
Accepts Dynamic Values Of Typestring[]Filters which resource types can be dropped onto this field (e.g., ["OAuth", "SFTP"]).
Data Typestring | integer | number | booleanChanges the rendered input: boolean renders a toggle switch; number/integer renders a numeric input; string renders a text input.

The mappedTo Property​

mappedTo declares which part of the activity's API schema this field controls. The format is:

<table>/<fieldName>

Examples:

mappedTo valueWhat it targets
header/AuthorizationThe Authorization HTTP header
queryParams/userIdThe userId query parameter
body/customerIdThe customerId property in the request body
path/orderIdThe {orderId} path parameter

Internally, Koodisi converts this to the JSONPath $.properties.<table>.properties.<fieldName> when building the input schema.

hideFieldWhileMapping​

When a Mappable Field has a binding set and hideFieldWhileMapping is true, the property is removed from the activity's output schema during schema transformation. This prevents a bound field from appearing as a redundant, always-empty property in the mapper.

Set this to true for fields that represent parameters injected at runtime (e.g., auth tokens, tenant IDs) that should never be manually wired in the workflow mapper.

When to Use Mappable Field​

  • HTTP header values (e.g., Authorization, X-Tenant-ID)
  • URL path or query parameters that vary per run
  • Credentials or tokens supplied from a Managed Resource
  • Any field where the value comes from upstream workflow data

Remote Select​

A Remote Select is a dropdown whose options are loaded lazily from an API — they are not hardcoded in the form definition. Options are fetched the first time the user opens the dropdown, using a JavaScript code snippet you provide.

How It Works​

  1. The user opens the dropdown.
  2. Koodisi runs your fetchCode snippet in a sandboxed JavaScript environment.
  3. The snippet calls an API (using fetch or a platform helper) and returns an array of { id, name } objects.
  4. The dropdown displays the returned options.
  5. The selected value is encoded as remote:{"id":"<rawValue>","name":"<label>"} and stored in the form.

The platform automatically decodes this encoded value when passing data to the activity's actual API call — your downstream code always receives the raw id.

Configuration Properties​

PropertyTypeDescription
TitlestringLabel shown above the field.
KeystringInternal schema key for this field.
RequiredbooleanWhether a selection is required.
PlaceholderstringText shown before an option is selected.
Fetch CodestringJavaScript code executed to retrieve options (see below).
Auth Config — Header NamestringThe name of the HTTP header used for auth (e.g., Authorization).
Auth Config — SchemestringThe auth scheme prepended to the token (e.g., Bearer).
Depends OnstringThe key of another field this dropdown depends on. When that field's value changes, the cached options are cleared and re-fetched on next open.
Mapped TostringSame as Mappable Field's mappedTo — links the selected value to a schema path.
Hide While MappingbooleanSame as Mappable Field's hideFieldWhileMapping.

Writing fetchCode​

The fetchCode snippet is plain JavaScript executed in a secure sandbox. It has access to:

  • formValues — the current values of all other fields in the form (useful for dependent fetches).
  • authToken — the resolved auth token if authConfig is set.
  • fetch — the standard Web Fetch API.

The snippet must return (or resolve to) an array of objects with at least id and name properties:

// Example: fetch a list of Salesforce objects
const response = await fetch("https://myapi.example.com/objects", {
headers: {
Authorization: `Bearer ${authToken}`,
},
});
const data = await response.json();
return data.records.map((r) => ({ id: r.Id, name: r.Name }));

For a field that depends on a parent selection (via dependsOn):

// parentField value is available in formValues
const parentId = formValues.parentCategory;
const response = await fetch(`https://myapi.example.com/subcategories/${parentId}`);
const data = await response.json();
return data.map((item) => ({ id: item.code, name: item.label }));

Value Encoding​

The stored value format is:

remote:{"id":"<rawId>","name":"<displayLabel>"}

Example: If a user selects "Acme Corp" (ID acme-001) from the dropdown, the form stores:

remote:{"id":"acme-001","name":"Acme Corp"}

When the form is submitted or the activity runs, the platform strips the remote: wrapper and passes the raw ID to the API. The label is preserved so the form can display the previously selected value even before options are re-fetched.

Dependency Cascade​

Setting dependsOn to another field's key creates a parent-child relationship:

  • When the parent field changes, the Remote Select clears its cached options and its current selection.
  • The next time the user opens the dropdown, fresh options are fetched based on the new parent value.
  • On initial form load (hydrating a saved value), the cascade is suppressed so the existing selection is preserved.

When to Use Remote Select​

  • Selecting a record from a CRM or ERP (Salesforce object, HubSpot contact, etc.)
  • Picking from a list that changes frequently (e.g., live campaigns, active projects)
  • Chained dropdowns where the second list depends on the first selection
  • Any field where options cannot be known at activity-design time

Other Field Types​

Basic Inputs​

text — Single-line text input. Use for free-form string values such as names, URLs, and identifiers.

password — Masked text input. Use for secrets, API keys, or passwords that should not be visible on screen.

number — Numeric input. Accepts integers and decimals. Use for timeouts, counts, and thresholds.

checkBox — Boolean checkbox. Displays a labelled checkbox. Use for simple on/off toggles.

SwitchSelector — Boolean toggle switch. Visually distinct from a checkbox; preferred for settings that feel like on/off states (e.g., "Enable caching", "Active").

RadioButton — A group of mutually exclusive options rendered as radio buttons. Suitable when the user must pick exactly one value from a small fixed set (3–5 options).

prefixedText — A text input with a fixed, non-editable prefix attached to the left. Useful for path segments or namespaced identifiers (e.g., PREFIX_<user input>).


select — Single-choice dropdown with a fixed list of options defined at design time. Use when the set of valid values is known and small.

multiSelect — Multi-choice dropdown. Selected values are displayed as removable tags. Use for selecting multiple items from a fixed set.

multiSelectWithoutTags — Same as multiSelect but without the tag display. Selected values are shown as a comma-separated list.


Code and Schema​

CodeInput — A code editor with syntax highlighting. Supports JavaScript and other languages. Use for expressions, scripts, or custom transformation logic.

UploadSchema — A combined JSON Schema upload + inline editor. Users can paste a schema directly or upload a JSON file. Used for defining structured input/output shapes.


Mapping​

MappingInput — An input mapping configuration UI. Allows users to define how incoming workflow data is mapped to the activity's expected input structure.

MappingOutput — An output mapping configuration UI. Allows users to define how the activity's output is mapped back into the workflow context.

DndField — A drag-and-drop binding field. Similar to a Mappable Field but without a text fallback — the value can only be set by dragging a variable or resource onto it.


Logic and Conditions​

ConditionExpression — A visual builder for a single condition expression (e.g., value > 10 AND status === "active").

FilterGroups — A builder for nested AND/OR filter groups, similar to query builders in BI tools. Produces a structured condition tree.


Tables​

table — A repeatable table where each row contains a set of defined sub-fields (columns). Users can add, remove, and reorder rows. Use for key-value pairs, header lists, or any variable-length structured data.

AggregationTable — A specialised table for defining SQL-style aggregations (GROUP BY, SUM, COUNT, etc.).

FixedWidthTable — A read-only or lightly editable fixed-column table. Used when the number and structure of columns is fixed at design time.

ScopesTable — A specialised table for defining OAuth scopes (scope ID, description, default flag). Used in Resource Template configuration.


Date and Time​

DateSelector — A calendar date picker.

TimeSelector — A time picker (hours/minutes).

TimeZoneSelector — A searchable timezone picker (e.g., America/New_York).

RunIntervalSelector — A cron expression builder. Generates a cron string (e.g., 0 9 * * 1-5) from a visual UI. Used for scheduling activities.


Workflow Integration​

Context — A picker for workflow context variables. Allows the user to select a key from the current workflow's context object.

WorkflowAttributes — A picker for workflow-level attributes and metadata.

GroupActivitySelector — A dropdown for selecting the activity group this activity belongs to (used in metadata configuration).


Display Only​

AlertMsg — A static alert or informational message displayed inside the form. Not an input — used to surface warnings, notes, or instructions to the user.

DisplayComponent — A generic read-only display element. Renders a computed or static value without allowing user edits.

Button — An action button that triggers an operation (e.g., "Test Connection", "Fetch Schema") without submitting the form.