List custom fields
The workspace’s custom fields on profiles, with how many profiles have a value. Search matches the label or key. Archived fields only with `archived=true`.
The workspace’s custom fields on profiles, with how many profiles have a value. Search matches the label or key. Archived fields only with archived=true.
apiKey readAuthorizationBearer <token>A workspace API key (pf_…), created under Developers → API keys.
Scope: read
page?integerStarts at 1
1 <= value1pageSize?numberOne of 10, 25, 50, 100
25q?stringSearch
1 <= length <= 200type?stringComma-separated, any of: text, number, boolean, date, list, json
owner?stringworkspace for the workspace’s own fields, or platforms (shopify)
^[a-z]+(,[a-z]+)*$archived?stringfalse"true""false"sort?stringOne of label, key, createdAt; prefix with - for descending
"label""label""-label""key""-key""createdAt""-createdAt"OK
application/json- response
items*array<>total*integerpage*integerpageSize*integercurl -X GET 'https://api.postforge.dev/v1/custom-fields'{ "items": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "key": "string", "label": "string", "description": "string", "type": "text", "platform": "string", "profilesCount": 0, "archivedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "total": 0, "page": 0, "pageSize": 0}List the stores of a profile GET
Every store the person is a customer of or did something at, with their customer record there (null while they aren’t a customer yet) and their activity.
Create a custom field POST
Declares a field with its type. The key is made from the label when it isn’t given, and never changes after (emails and the API use it). A write to a key that doesn’t exist yet (the API, an automation, a store) declares a field too, with the type of its first value. 409 `custom_field_exists` when the key is taken; 422 `too_many_custom_fields` past 1,000.