Skip to content

Custom affiliate fields

Add up to 20 fields to the affiliate signup form. Values are stored on each affiliate row (under affiliates.custom_fields JSON) and visible to your team in the affiliate detail page. The schema is defined per-merchant at Settings → Custom fields.

Field schema

[
  {
    "key": "social_handle",        // lowercase + underscores
    "label": "Primary social handle",
    "type": "text",                // text|textarea|url|email|number|select
    "required": false,
    "max_length": 80
  },
  {
    "key": "country",
    "label": "Country",
    "type": "select",
    "required": true,
    "options": ["US", "CA", "UK", "AU"]
  }
]

Field types

  • text — single-line input. Honors max_length.
  • textarea — multi-line. Defaults to 2000 chars.
  • url — validated as a URL on submission.
  • email — validated as an email.
  • number — stored as a JSON number; validated isFinite.
  • select — dropdown. Requires options: a string array. Empty values rejected.

Querying custom-field values

Values are GIN-indexed for fast filtering. Via the REST API:

GET /api/v1/affiliates?custom_field=country:US
GET /api/v1/affiliates?custom_field=tier:gold,country:CA
Note:Renaming or deleting a field doesn't touch existing affiliate rows — old values remain in the JSON until the affiliate updates their profile. Add new fields freely; only delete fields you're sure no team workflow depends on.