Field Types
Complete reference for all available FieldType values and their specific properties.
Text fields
texto — Plain text
{
"nome": "nome_completo",
"tipo": "texto",
"label": "Full name",
"obrigatorio": true,
"tamanho": 12,
"placeholder": "e.g. John Doe",
"hint": "Enter your name as it appears on your ID"
}
textarea — Long text
{
"nome": "descricao",
"tipo": "textarea",
"label": "Description",
"obrigatorio": false,
"tamanho": 12,
"validacao": { "minLength": 20, "maxLength": 500 }
}
number — Number
{
"nome": "quantidade",
"tipo": "number",
"label": "Quantity",
"obrigatorio": true,
"tamanho": 4,
"validacao": { "min": 1, "max": 100 }
}
email — Email
{
"nome": "email",
"tipo": "email",
"label": "Email",
"obrigatorio": true,
"tamanho": 6
}
password — Password (with show/hide toggle)
{
"nome": "senha",
"tipo": "password",
"label": "Password",
"obrigatorio": true,
"tamanho": 6,
"validacao": { "minLength": 8 }
}
Masked fields
telefone — Masked phone number
{
"nome": "telefone",
"tipo": "telefone",
"label": "Phone",
"obrigatorio": true,
"tamanho": 6
}
Automatic mask: (99) 99999-9999.
cpf — Masked CPF (Brazilian individual tax ID)
{
"nome": "cpf",
"tipo": "cpf",
"label": "CPF",
"obrigatorio": true,
"tamanho": 6
}
Automatic mask: 999.999.999-99.
cep — ZIP code with autocomplete
{
"nome": "cep",
"tipo": "cep",
"label": "ZIP Code",
"obrigatorio": true,
"tamanho": 4,
"cepFillMap": {
"logradouro": "endereco",
"bairro": "bairro",
"cidade": "cidade",
"estado": "estado"
}
}
cepFillMap defines which form fields are auto-filled with the ZIP lookup result. The key is the property from CepLookupResult and the value is the nome of the target field.
Date and time fields
date — Date
{
"nome": "data_nascimento",
"tipo": "date",
"label": "Date of birth",
"obrigatorio": true,
"tamanho": 4,
"validacao": { "minAge": 14, "maxAge": 80 }
}
datetime — Date and time
{
"nome": "data_evento",
"tipo": "datetime",
"label": "Date and time",
"obrigatorio": true,
"tamanho": 6,
"validacao": { "minDate": "2026-01-01" }
}
time — Time
{
"nome": "horario",
"tipo": "time",
"label": "Preferred time",
"tamanho": 4
}
date_range — Date range
{
"nome": "periodo_viagem",
"tipo": "date_range",
"label": "Travel period",
"tamanho": 8,
"dateRangeStartLabel": "Departure date",
"dateRangeEndLabel": "Return date"
}
Submitted value: { start: "2026-01-10", end: "2026-01-17" }.
Selection fields
select — Simple select
{
"nome": "estado_civil",
"tipo": "select",
"label": "Marital status",
"obrigatorio": true,
"tamanho": 6,
"opcoes": [
{ "valor": "solteiro", "label": "Single" },
{ "valor": "casado", "label": "Married" },
{ "valor": "divorciado", "label": "Divorced" },
{ "valor": "viuvo", "label": "Widowed" }
]
}
To load options dynamically from externalData:
{
"nome": "cidade",
"tipo": "select",
"label": "City",
"tamanho": 6,
"opcoesFromVar": "evento.cidades"
}
autocomplete — Select with search
{
"nome": "pais",
"tipo": "autocomplete",
"label": "Country",
"tamanho": 6,
"opcoes": [
{ "valor": "BR", "label": "Brazil" },
{ "valor": "AR", "label": "Argentina" }
]
}
radio — Exclusive options (radio)
{
"nome": "genero",
"tipo": "radio",
"label": "Gender",
"obrigatorio": true,
"tamanho": 12,
"opcoes": [
{ "valor": "M", "label": "Male" },
{ "valor": "F", "label": "Female" },
{ "valor": "O", "label": "Other" },
{ "valor": "NI", "label": "Prefer not to say" }
]
}
checkbox — Single checkbox (boolean)
{
"nome": "maior_de_idade",
"tipo": "checkbox",
"label": "I am 18 years of age or older",
"obrigatorio": true,
"tamanho": 12
}
checkbox_group — Multi-select
{
"nome": "interesses",
"tipo": "checkbox_group",
"label": "Areas of interest",
"tamanho": 12,
"opcoes": [
{ "valor": "esportes", "label": "Sports" },
{ "valor": "musica", "label": "Music" },
{ "valor": "arte", "label": "Art" }
]
}
Submitted value: ["esportes", "musica"].
Special fields
switch — On/off toggle
{
"nome": "receber_newsletter",
"tipo": "switch",
"label": "Receive newsletters by email",
"tamanho": 12,
"defaultValue": true
}
slider — Slider control
{
"nome": "nivel_experiencia",
"tipo": "slider",
"label": "Experience level",
"tamanho": 12,
"minValue": 0,
"maxValue": 10,
"step": 1
}
rating — Star rating
{
"nome": "satisfacao",
"tipo": "rating",
"label": "Overall rating",
"tamanho": 6,
"maxRating": 5
}
color — Color picker
{
"nome": "cor_camiseta",
"tipo": "color",
"label": "T-shirt color",
"tamanho": 4
}
hidden — Hidden field
{
"nome": "origem_lead",
"tipo": "hidden",
"label": "Source",
"defaultValue": "landing-page-2026"
}
File and document fields
file — File upload
{
"nome": "foto_documento",
"tipo": "file",
"label": "Document photo",
"obrigatorio": true,
"tamanho": 12,
"validacao": {
"fileTypes": ["image/jpeg", "image/png", "application/pdf"],
"maxFileSize": 5242880
}
}
Requires uploadFile configured in FormRenderer. The submitted value is the string returned by the function (URL or upload ID).
terms — Terms acceptance
{
"nome": "aceite_termos",
"tipo": "terms",
"label": "I have read and accept the terms of service",
"obrigatorio": true,
"tamanho": 12,
"termoTexto": "By confirming, you agree to our {{evento.nomeTermos}}.",
"termoPdfUrl": "https://example.com/terms.pdf"
}
Or with a PDF by upload ID (requires resolveTermsUploadUrl):
{
"termoPdfUploadId": "pdf-upload-id-from-your-backend"
}
Structured fields
field_array — Dynamic list of items
Lets the user add/remove groups of sub-fields:
{
"nome": "contatos_emergencia",
"tipo": "field_array",
"label": "Emergency contacts",
"tamanho": 12,
"itemLabel": "Contact",
"addLabel": "Add contact",
"minItems": 1,
"maxItems": 3,
"subFields": [
{
"id": "sf-nome",
"nome": "nome",
"label": "Name",
"tipo": "texto",
"obrigatorio": true,
"tamanho": 6,
"ordem": 1
},
{
"id": "sf-tel",
"nome": "telefone",
"label": "Phone",
"tipo": "telefone",
"obrigatorio": true,
"tamanho": 6,
"ordem": 2
}
]
}
Submitted value: [{ nome: "Maria", telefone: "11999..." }, { nome: "José", telefone: "11888..." }].
sub_form — Embedded sub-form
Groups related fields into a sub-object:
{
"nome": "responsavel",
"tipo": "sub_form",
"label": "Guardian",
"tamanho": 12,
"subSchema": {
"titulo": "Guardian information",
"fields": [
{
"id": "r-nome",
"nome": "nome",
"label": "Name",
"tipo": "texto",
"obrigatorio": true,
"tamanho": 6,
"ordem": 1
},
{
"id": "r-cpf",
"nome": "cpf",
"label": "CPF",
"tipo": "cpf",
"obrigatorio": true,
"tamanho": 6,
"ordem": 2
}
]
}
}
Submitted value: { responsavel: { nome: "...", cpf: "..." } }.
Event-specific fields
participation_type — Participation type
Special field for events with multiple participation categories:
{
"nome": "tipo_participacao",
"tipo": "participation_type",
"label": "Participation type",
"obrigatorio": true,
"tamanho": 12
}
Submitted value: ParticipationValue — an object with information about the selected category.
payment_method — Payment method
Special field for selecting a payment method:
{
"nome": "forma_pagamento",
"tipo": "payment_method",
"label": "Payment method",
"obrigatorio": true,
"tamanho": 12
}
Submitted value: PaymentMethodValue. Customize the options via paymentMethodOptions on FormRenderer.
Campos de texto
texto — Texto simples
{
"nome": "nome_completo",
"tipo": "texto",
"label": "Nome completo",
"obrigatorio": true,
"tamanho": 12,
"placeholder": "Ex: João Silva",
"hint": "Informe o nome como consta no documento"
}
textarea — Texto longo
{
"nome": "descricao",
"tipo": "textarea",
"label": "Descrição",
"obrigatorio": false,
"tamanho": 12,
"validacao": { "minLength": 20, "maxLength": 500 }
}
number — Número
{
"nome": "quantidade",
"tipo": "number",
"label": "Quantidade",
"obrigatorio": true,
"tamanho": 4,
"validacao": { "min": 1, "max": 100 }
}
email — E-mail
{
"nome": "email",
"tipo": "email",
"label": "E-mail",
"obrigatorio": true,
"tamanho": 6
}
password — Senha (com toggle show/hide)
{
"nome": "senha",
"tipo": "password",
"label": "Senha",
"obrigatorio": true,
"tamanho": 6,
"validacao": { "minLength": 8 }
}
Campos com máscara
telefone — Telefone mascarado
{
"nome": "telefone",
"tipo": "telefone",
"label": "Telefone",
"obrigatorio": true,
"tamanho": 6
}
Máscara automática: (99) 99999-9999.
cpf — CPF mascarado
{
"nome": "cpf",
"tipo": "cpf",
"label": "CPF",
"obrigatorio": true,
"tamanho": 6
}
Máscara automática: 999.999.999-99.
cep — CEP com autocomplete
{
"nome": "cep",
"tipo": "cep",
"label": "CEP",
"obrigatorio": true,
"tamanho": 4,
"cepFillMap": {
"logradouro": "endereco",
"bairro": "bairro",
"cidade": "cidade",
"estado": "estado"
}
}
cepFillMap define quais campos do formulário são preenchidos automaticamente com o resultado da busca de CEP. A chave é a propriedade do CepLookupResult e o valor é o nome do campo a preencher.
Campos de data e hora
date — Data
{
"nome": "data_nascimento",
"tipo": "date",
"label": "Data de nascimento",
"obrigatorio": true,
"tamanho": 4,
"validacao": { "minAge": 14, "maxAge": 80 }
}
datetime — Data e hora
{
"nome": "data_evento",
"tipo": "datetime",
"label": "Data e hora",
"obrigatorio": true,
"tamanho": 6,
"validacao": { "minDate": "2026-01-01" }
}
time — Hora
{
"nome": "horario",
"tipo": "time",
"label": "Horário preferencial",
"tamanho": 4
}
date_range — Faixa de datas
{
"nome": "periodo_viagem",
"tipo": "date_range",
"label": "Período da viagem",
"tamanho": 8,
"dateRangeStartLabel": "Data de ida",
"dateRangeEndLabel": "Data de volta"
}
Valor submetido: { start: "2026-01-10", end: "2026-01-17" }.
Campos de seleção
select — Select simples
{
"nome": "estado_civil",
"tipo": "select",
"label": "Estado civil",
"obrigatorio": true,
"tamanho": 6,
"opcoes": [
{ "valor": "solteiro", "label": "Solteiro(a)" },
{ "valor": "casado", "label": "Casado(a)" },
{ "valor": "divorciado", "label": "Divorciado(a)" },
{ "valor": "viuvo", "label": "Viúvo(a)" }
]
}
Para carregar opções dinamicamente de externalData:
{
"nome": "cidade",
"tipo": "select",
"label": "Cidade",
"tamanho": 6,
"opcoesFromVar": "evento.cidades"
}
autocomplete — Select com busca
{
"nome": "pais",
"tipo": "autocomplete",
"label": "País",
"tamanho": 6,
"opcoes": [
{ "valor": "BR", "label": "Brasil" },
{ "valor": "AR", "label": "Argentina" }
]
}
radio — Opções exclusivas (radio)
{
"nome": "genero",
"tipo": "radio",
"label": "Gênero",
"obrigatorio": true,
"tamanho": 12,
"opcoes": [
{ "valor": "M", "label": "Masculino" },
{ "valor": "F", "label": "Feminino" },
{ "valor": "O", "label": "Outro" },
{ "valor": "NI", "label": "Prefiro não informar" }
]
}
checkbox — Checkbox único (boolean)
{
"nome": "maior_de_idade",
"tipo": "checkbox",
"label": "Sou maior de 18 anos",
"obrigatorio": true,
"tamanho": 12
}
checkbox_group — Múltipla escolha
{
"nome": "interesses",
"tipo": "checkbox_group",
"label": "Áreas de interesse",
"tamanho": 12,
"opcoes": [
{ "valor": "esportes", "label": "Esportes" },
{ "valor": "musica", "label": "Música" },
{ "valor": "arte", "label": "Arte" }
]
}
Valor submetido: ["esportes", "musica"].
Campos especiais
switch — Toggle on/off
{
"nome": "receber_newsletter",
"tipo": "switch",
"label": "Receber novidades por e-mail",
"tamanho": 12,
"defaultValue": true
}
slider — Controle deslizante
{
"nome": "nivel_experiencia",
"tipo": "slider",
"label": "Nível de experiência",
"tamanho": 12,
"minValue": 0,
"maxValue": 10,
"step": 1
}
rating — Avaliação por estrelas
{
"nome": "satisfacao",
"tipo": "rating",
"label": "Avaliação geral",
"tamanho": 6,
"maxRating": 5
}
color — Seletor de cor
{
"nome": "cor_camiseta",
"tipo": "color",
"label": "Cor da camiseta",
"tamanho": 4
}
hidden — Campo oculto
{
"nome": "origem_lead",
"tipo": "hidden",
"label": "Origem",
"defaultValue": "landing-page-2026"
}
Campos de arquivo e documentos
file — Upload de arquivo
{
"nome": "foto_documento",
"tipo": "file",
"label": "Foto do documento",
"obrigatorio": true,
"tamanho": 12,
"validacao": {
"fileTypes": ["image/jpeg", "image/png", "application/pdf"],
"maxFileSize": 5242880
}
}
Requer uploadFile configurado no FormRenderer. O valor submetido é a string retornada pela função (URL ou ID do upload).
terms — Aceite de termos
{
"nome": "aceite_termos",
"tipo": "terms",
"label": "Li e aceito os termos de uso",
"obrigatorio": true,
"tamanho": 12,
"termoTexto": "Ao confirmar, você concorda com nossos {{evento.nomeTermos}}.",
"termoPdfUrl": "https://exemplo.com/termos.pdf"
}
Ou com PDF por upload ID (requer resolveTermsUploadUrl):
{
"termoPdfUploadId": "upload-id-do-pdf-no-seu-backend"
}
Campos estruturados
field_array — Lista dinâmica de itens
Permite ao usuário adicionar/remover grupos de sub-campos:
{
"nome": "contatos_emergencia",
"tipo": "field_array",
"label": "Contatos de emergência",
"tamanho": 12,
"itemLabel": "Contato",
"addLabel": "Adicionar contato",
"minItems": 1,
"maxItems": 3,
"subFields": [
{
"id": "sf-nome",
"nome": "nome",
"label": "Nome",
"tipo": "texto",
"obrigatorio": true,
"tamanho": 6,
"ordem": 1
},
{
"id": "sf-tel",
"nome": "telefone",
"label": "Telefone",
"tipo": "telefone",
"obrigatorio": true,
"tamanho": 6,
"ordem": 2
}
]
}
Valor submetido: [{ nome: "Maria", telefone: "11999..." }, { nome: "José", telefone: "11888..." }].
sub_form — Sub-formulário embutido
Agrupa campos relacionados em um sub-objeto:
{
"nome": "responsavel",
"tipo": "sub_form",
"label": "Responsável",
"tamanho": 12,
"subSchema": {
"titulo": "Dados do responsável",
"fields": [
{
"id": "r-nome",
"nome": "nome",
"label": "Nome",
"tipo": "texto",
"obrigatorio": true,
"tamanho": 6,
"ordem": 1
},
{
"id": "r-cpf",
"nome": "cpf",
"label": "CPF",
"tipo": "cpf",
"obrigatorio": true,
"tamanho": 6,
"ordem": 2
}
]
}
}
Valor submetido: { responsavel: { nome: "...", cpf: "..." } }.
Campos específicos de eventos
participation_type — Tipo de participação
Campo especial para eventos com múltiplas categorias de participação:
{
"nome": "tipo_participacao",
"tipo": "participation_type",
"label": "Tipo de participação",
"obrigatorio": true,
"tamanho": 12
}
Valor submetido: ParticipationValue — objeto com informações da categoria selecionada.
payment_method — Método de pagamento
Campo especial para seleção de forma de pagamento:
{
"nome": "forma_pagamento",
"tipo": "payment_method",
"label": "Forma de pagamento",
"obrigatorio": true,
"tamanho": 12
}
Valor submetido: PaymentMethodValue. Personalize as opções via paymentMethodOptions no FormRenderer.