---
title: Candidate Dynamic Custom Fields
slug: candidate-dynamic-custom-fields
createdAt: 2025-10-07T17:01:40.555Z
---

When sending a candidate to your integration, **Custom Fields** may not always be enough. You might need to request additional data that depends on previously submitted information. This can be achieved with a **two-step flow:** first, set up the [Candidate Custom Fields](docId\:W1f-_ZFkNzOKuML-fZE-Y). Once that primary form is submitted, Jobylon ATS will forward it to you as per the usual flow. You can then process this data and build a **secondary form** that requests additional fields based on the information submitted in the first form.

Please note that Dynamic Custom Fields are **not automatically available**. To start using them, you must first contact your Jobylon contact.

![](https://api.archbee.com/api/optimize/Bcs_q55fdIV24__dfDcYJ/3uuTHKieCPZrLZgxdwVLx_.blob)

# Workflow

### Static Form

When using **Dynamic Custom Fields**, once the user submits the first form, Jobylon ATS will immediately send a Candidate Webhook to the partner, as described in [Webhooks](docId:5Pnq0B83GzRhxrdqhK_Wl). This webhook will include, among other fields, the following:

| Name          | Content    | Description                                                                                  |
| ------------- | ---------- | -------------------------------------------------------------------------------------------- |
| event\_type   | candidate  | Webhook type identifier                                                                      |
| action        | new/update | Webhook action                                                                               |
| data          | object     | Object containing the user answers to the first (static) form                                |
| dynamic\_data | null       | Object containing the user answers to the second (dynamic) form. `null` in the first webhook |

Jobylon expects an immediate response to this webhook. The response must return a **200** status code and a JSON including a URL where Jobylon can access the dynamic fields.

Response example:

:::BlockQuote
\{
&#x20;   "dynamic\_config\_url": "https\://www\.example.com/dynamic-form-fields"
}
:::

The ATS will attempt to access the returned URL **up to 5 times**, with a **3-second interval** between each attempt. Once the form is available, Jobylon ATS will show it to the user.&#x20;
If the form is still unavailable after the fifth attempt, an error message will be displayed to the user and the flow is interrupted.


### Dynamic Form

Jobylon expects the dynamic form to be present in the returned URL, in JSON format. All the fields must be within the `fields` object and follow the exact same structure as shown in [Api Reference/OpenAPI](docId\:H5IszA0jmnESIexDe3I5f) for Candidate Config. For example:

:::BlockQuote
\{
&#x20;   "fields":
&#x20;   \[
&#x20;       \{
&#x20;           "name": "string",
&#x20;           "label": "string",
&#x20;           "required": true,
&#x20;           "type\_field": "number",
&#x20;           "metadata":
&#x20;           \{
&#x20;               "min\_value": 0,
&#x20;               "max\_value": 0,
&#x20;               "default\_value": 0
&#x20;           }
&#x20;       }
&#x20;   ]
}
:::

Once the user saves the secondary (dynamic) form, Jobylon ATS sends a second webhook to the partner with the following fields:

| Name          | Content         | Description                                                                                 |
| ------------- | --------------- | ------------------------------------------------------------------------------------------- |
| event\_type   | candidate       | Webhook type identifier                                                                     |
| action        | dynamic\_update | Webhook action                                                                              |
| data          | null            | Object containing the user answers to the first (static) form. `null` in the second webhook |
| dynamic\_data | object          | Object containing the user answers to the second (dynamic) form.                            |

This is a separate mechanism from [Candidate Updates](docId\:ODArySIKCgVXoXXkG3k14). Dynamic Custom Fields let the partner request a second form right after the first send; Candidate Updates let a Jobylon user later edit and resubmit a candidate already sent.
