# API: Add product form

# addProductForm

Add a new form component (field) to a product. Use getProductForm to retrieve the full details of the created form including item IDs. To add custom items (options), pass premade=1 alongside items[] — without it only a default item is created. For items with pricing (Regular or Once), pass items[{n}][pricing]=1 or prices will not be saved.

# Required parameters

Parameter Description
product_id Product ID
type Field type: input, textarea, encryptedinput, encryptedpassword, phonenumberinput, multiinput, textblock, select, searchselect, dropdownms, radio, checkbox, multicheckbox, selectqty, selectref, qty, slider, sliderinput, slidersequenced, datepicker, relatedcomponent, relatedservice, signagreement, documentsupload, sshkeyselect, contactselector, servergroupselector, serverselector, servicegroupselector, san, domaindnssupport, idprotection
name Form field label shown to the customer

# Optional parameters

Parameter Description
description Description shown below the field
admin_description Description visible to admin only
key URL key (auto-generated from name if not provided)
variable Variable name used in email templates and automation
category Display category / group label for this field
options Bitmask of field flags: 1 = required, 2 = show in admin panel, 4 = hidden from client
premade Set to 1 to save custom items passed in items[]. Without this parameter, only a default Default item is created regardless of what is passed in items[]. Required for all field types that accept items (select, searchselect, dropdownms, radio, checkbox, multicheckbox, selectqty, selectref, qty, slider, sliderinput, slidersequenced, idprotection).
config[initialval] Default/initial value; supports template variables e.g. {account_domain} (input, textarea, slider, sliderinput, slidersequenced, san)
config[unique] Enforce unique value across all accounts: 1 = yes (input, textarea, multiinput)
config[expression] Regex validation pattern e.g. /^[a-z]+$/i (input, textarea, multiinput)
config[maxinput] Maximum number of inputs allowed (multiinput)
config[replace] On save, write value into account domain field: 1 = yes (input, textarea, phonenumberinput)
config[replaceusername] On save, write value into account username field: 1 = yes (input, textarea, phonenumberinput)
config[minvalue] Minimum allowed value or selection count (qty, slider, sliderinput, slidersequenced, multicheckbox, selectqty)
config[maxvalue] Maximum allowed value or selection count (qty, slider, sliderinput, slidersequenced, multicheckbox, selectqty, san)
config[step] Step increment (slider, sliderinput)
config[steps] Comma-separated list of discrete step values e.g. 512, 1024, 2048 (slidersequenced)
config[dontchargedefault] Do not charge for the default quantity: 1 = yes (slider, sliderinput, slidersequenced)
config[showsteps] Show step markers on the slider: 1 = yes (slider, sliderinput, slidersequenced)
config[upgradefee] Extra fee charged when upgrading the value (qty, slider, sliderinput, slidersequenced)
config[downgradefee] Extra fee charged when downgrading the value (qty, slider, sliderinput, slidersequenced)
config[enableddefault] Checkbox ticked by default: 1 = yes (checkbox, multicheckbox, domaindnssupport, idprotection)
config[hidden] Hide the field from display while still storing the value: 1 = yes (checkbox, multicheckbox)
config[addemptyoption] Prepend an empty -- option to the list: 1 = yes (select, searchselect, dropdownms, radio, selectqty, selectref, relatedservice)
config[hideontransfer] Hide the option during domain transfer: 1 = yes (select, idprotection)
config[related] ID of the qty/slider field whose quantity this field is linked to (relatedcomponent)
config[link] ID of the field this dropdown is linked to for quantity selection (selectref)
config[categories] Comma-separated category IDs to filter available services (relatedservice)
config[statuses] Comma-separated statuses to filter available services e.g. Active,Pending (relatedservice)
config[only_one] Allow selecting only one related service: 1 = yes (relatedservice)
config[contract] Contract template ID that the client must sign (signagreement)
config[single_key] Allow selecting only a single SSH key: 1 = yes (sshkeyselect)
config[filelimit] Maximum number of files the client can upload (default: 1) (documentsupload)
config[extensions] Allowed file extensions e.g. .png,.pdf,.jpg (documentsupload)
config[filesize] Maximum file size in MB (default: 10) (documentsupload)
config[minsize] Minimum file size in KB (default: 1) (documentsupload)
config[start_date] Earliest selectable date in MM/DD/YYYY format (datepicker)
config[end_date] Latest selectable date in MM/DD/YYYY format (datepicker)
config[minimaldatetotoday] Force minimum date to today: 1 = yes (datepicker)
config[setstartdatetotoday] Set start date to today automatically: 1 = yes (datepicker)
config[setenddateoffsetN] Number of days from today to set as end date (datepicker)
config[freenames] Number of SANs included for free (san)
config[skipsubdomainvalidation] Skip subdomain hostname validation: 1 = yes (san)
config[allowWildcard] Allow wildcard entries e.g. *.example.com: 1 = yes (san)
items[{n}][name] Item label — provide for each option of select/checkbox/radio fields. Requires premade=1 to be saved.
items[{n}][variable_id] Item variable identifier used in templates
items[{n}][paytype] Item pricing model: Free, Once, Regular
items[{n}][pricing] Set to 1 for items with pricing (Regular or Once paytype). Required for prices to be saved. Omit for Free items.
items[{n}][m] Monthly price (Regular paytype)
items[{n}][q] Quarterly price (Regular paytype)
items[{n}][s] Semi-annual price (Regular paytype)
items[{n}][a] Annual price (Regular paytype)
items[{n}][b] Biennial price (Regular paytype)
items[{n}][t] Triennial price (Regular paytype)
items[{n}][d] Daily price (Regular paytype)
items[{n}][w] Weekly price (Regular paytype)
items[{n}][m_setup] Monthly setup fee (Regular paytype)
items[{n}][a_setup] Annual setup fee (Regular paytype)
items[{n}][m1] One-time price (Once paytype)
items[{n}][m_setup1] One-time setup fee (Once paytype)

# Request

GET /admin/api.php?api_id=API_ID&api_key=API_KEY&call=addProductForm&product_id=PRODUCT_ID&type=TYPE&name=NAME

# PHP Samples

# PHP Samples: Add text input (required)

# PHP Samples: Add textarea

# PHP Samples: Add encrypted input

# PHP Samples: Add encrypted password field

# PHP Samples: Add phone number input

# PHP Samples: Add multiinput (multiple text boxes)

# PHP Samples: Add textblock (display-only text)

# PHP Samples: Add select field with Regular billing options

# PHP Samples: Add select field with one-time (Once) pricing

# PHP Samples: Add searchselect (searchable dropdown)

# PHP Samples: Add dropdownms (multi-select dropdown)

# PHP Samples: Add radio field

# PHP Samples: Add checkbox (single, with pricing)

# PHP Samples: Add multicheckbox (multiple checkboxes, min/max)

# PHP Samples: Add selectqty (dropdown with quantity)

# PHP Samples: Add qty field with range and pricing

# PHP Samples: Add slider field

# PHP Samples: Add sliderinput field (slider with editable text box)

# PHP Samples: Add slidersequenced field (discrete steps)

# PHP Samples: Add datepicker field

# PHP Samples: Add signagreement field

# PHP Samples: Add documentsupload field

# PHP Samples: Add sshkeyselect field

# PHP Samples: Add contactselector field

# PHP Samples: Add servergroupselector field

# PHP Samples: Add servicegroupselector field

# Response

{
    "success": true,
    "field_id": 47,
    "call": "addProductForm",
    "server_time": 1706614584,
    "info": [
        "Component added"
    ]
}
Last Updated: 5/11/2026, 2:17:28 PM