Skip to main content
Custom fields allow you to collect additional information from buyers when they purchase your products. You can collect text, long text, checkboxes, file uploads, and terms acceptance.

List Custom Fields

Retrieve all custom fields for a product.
GET /v2/products/:product_id/custom_fields

Path Parameters

product_id
string
required
The unique identifier of the product

Response

success
boolean
Whether the request was successful
custom_fields
array
Array of custom field objects
curl https://api.gumroad.com/v2/products/product_id/custom_fields \
  -H "Authorization: Bearer <access_token>"

Create Custom Field

Add a new custom field to a product.
POST /v2/products/:product_id/custom_fields

Path Parameters

product_id
string
required
The unique identifier of the product

Body Parameters

name
string
required
The name or label for the custom field. For terms type fields, this should be a valid URL to your terms and conditions.
type
string
default:"text"
The type of custom field. Options:
  • text - Single line text input
  • long_text - Multi-line text area
  • checkbox - Checkbox input
  • terms - Terms acceptance (name must be a valid URL)
  • file - File upload
required
boolean
default:"false"
Whether the field is required. Pass "true" or "false" as a string.
The name parameter can also be passed as url or label for backwards compatibility.

Response

success
boolean
Whether the request was successful
custom_field
object
The created custom field object
curl -X POST https://api.gumroad.com/v2/products/product_id/custom_fields \
  -H "Authorization: Bearer <access_token>" \
  -d "name=Company Name" \
  -d "type=text" \
  -d "required=true"

Update Custom Field

Update the required status of a custom field.
PUT /v2/products/:product_id/custom_fields/:id

Path Parameters

product_id
string
required
The unique identifier of the product
id
string
required
The name of the custom field to update (not the ID)

Body Parameters

required
boolean
Whether the field is required. Pass "true" or "false" as a string.

Response

success
boolean
Whether the request was successful
custom_field
object
The updated custom field object
curl -X PUT https://api.gumroad.com/v2/products/product_id/custom_fields/Company%20Name \
  -H "Authorization: Bearer <access_token>" \
  -d "required=false"

Delete Custom Field

Remove a custom field from a product.
DELETE /v2/products/:product_id/custom_fields/:id

Path Parameters

product_id
string
required
The unique identifier of the product
id
string
required
The name of the custom field to delete (not the ID)

Response

success
boolean
Whether the request was successful
curl -X DELETE https://api.gumroad.com/v2/products/product_id/custom_fields/Company%20Name \
  -H "Authorization: Bearer <access_token>"

Error Codes

400
Bad Request - Missing required parameters or invalid custom field name
401
Unauthorized - Invalid or missing access token
403
Forbidden - Insufficient permissions (requires edit_products scope)
404
Not Found - Product or custom field not found

Build docs developers (and LLMs) love