Collecting accurate input from multiple signers becomes challenging when the same terms must be agreed upon by more than one party. In API-driven eSignature workflows, this often leads to duplicated fields, manual reconciliation, or custom validation logic, adding complexity and increasing the risk of errors.
Collaborative fields in BoldSign, available through the API, solve this. They make it easier to collect agreed-upon values for budgets, addresses, comments, or project details in multiparty signing workflows.
What are collaborative fields in BoldSign and how do they work via API
Collaborative fields in BoldSign allow multiple signers to edit the same form field during a signing workflow. Instead of each signer only completing their assigned fields, collaborative fields let authorized participants change shared information before a document is fully executed.
When used through the API, collaborative fields are configured within the field definition using the collaborationSettings object. These settings control:
- Who can edit a field.
- Whether previous signers must re-sign if the field changes.
- Whether signers must approve updates.
- How changes appear in audit logs.
What are the benefits of collaborative fields
The key advantages of using collaborative fields in document workflows.
- Improved accuracy: When multiple signers can contribute to a single field, it reduces the need for back-and-forth communication and manual data merging.
- Enhanced transparency: Everyone involved can see what others have contributed, fostering better collaboration and accountability.
- Faster completion times: By enabling real-time contributions, collaborative fields minimize delays, reduce back‑and‑forth messaging, and help documents get completed more quickly.
- Better collaboration experience: Collaborators feel more connected and aligned because activities happen within a shared, interactive environment rather than isolated inputs.
Which field types support collaboration
BoldSign enables real‑time collaboration across the following field types, allowing multiple signers to contribute with ease:
- Text box
- Radio button
- Checkbox
- Editable date
- Dropdown
How do you configure collaborationSettings via API
To enable collaboration, include a collaborationSettings object inside the field payload when making an API call.
Example:
"FormFields": [
{
"FieldType": "TextBox",
"PageNumber": 1,
"Bounds": {
"X": 50,
"Y": 100,
"Width": 400,
"Height": 25
},
"CollaborationSettings": {
"IsRequired": true,
"RequireSignerApproval": true,
"RequireInitial": true,
"AllowedSigners": ["string"]
}
}
]
Properties
In the collaborativeSettings, set these properties:
-
"isRequired"(Boolean): This property is used to specify whether collaborative fields are mandatory for signers collaborating on the document. -
"requireSignerApproval"(Boolean): This property is used to specify whether signers need to verify and approve the document after collaborators have made changes to the collaborative fields. -
"requireInitial"(Boolean): This property is used to specify whether the collaborators must fill in their initials when editing collaborative fields. -
"allowedSigners"Array: This property is used to specify the list of role indexes or signer IDs (role index for the create and send template APIs, signer ID for document sending) who are allowed to collaborate on editing this field.
Which API endpoints support collaborative fields
| API endpoint | Guidelines for use |
|---|---|
| POST /v1/document/send | Assign a unique signer ID (e.g., 3ba7b810-9dad-11d1-50b4-00c04fd430c9) to the allowedSigners property. |
| POST /v1/template/send | Use the template role index (e.g., “1”, “2”) as the unique identifier for signers in the allowedSigners property. |
| POST /v1/template/create | Use the template role index (e.g., “1”, “2”) as the unique identifier for signers in the allowedSigners property. |
| POST /v1/template/mergeAndSend | Use the template role index (e.g., “1”, “2”) as the unique identifier for signers in the allowedSigners property. |
| POST /v1/document/createEmbeddedRequestUrl | Assign a unique signer ID (e.g., 3ba7b810-9dad-11d1-50b4-00c04fd430c9) to the allowedSigners property. |
| POST /v1/template/createEmbeddedRequestUrl | Use the template role index (e.g., “1”, “2”) as the unique identifier for signers in the allowedSigners property. |
| POST /v1/template/mergeCreateEmbeddedRequestUrl | Use the template role index (e.g., “1”, “2”) as the unique identifier for signers in the allowedSigners property. |
| POST /v1/template/createEmbeddedTemplateUrl | Use the template role index (e.g., “1”, “2”) as the unique identifier for signers in the allowedSigners property. |
| PUT /v1/template/edit | Use the template role index (e.g., “1”, “2”) as the unique identifier for signers in the allowedSigners property. |
How do you control who can edit a collaborative field
Control is handled through the field’s allowedSigners property. Each value should be a recipient’s unique ID or role index defined in your signer list.
Example:
“AllowedSigners": ["signer ID" OR " role index 1,2..."]
This ensures only the selected signers can modify the shared field. You can restrict collaboration to a pair of signers or open it to all signers.
Following are example code snippets of how to set up collaborative fields in an eSignature request via API.
cURL
curl -X 'POST' \
'https://api.boldsign.com/v1/document/send' \
-H 'accept: application/json' \
-H 'X-API-KEY: {your API key}' \
-H 'Content-Type: application/json' \
-d '{
"DisableExpiryAlert": false,
"ReminderSettings": {
"ReminderDays": 5,
"ReminderCount": 3,
"EnableAutoReminder": true
},
"Message": "",
"Signers": [
{
"Name": "David",
"Id": "4ba7b810-3dad-11d1-80b4-00c04fd430c8",
"EmailAddress": "david@cubeflakes.com",
"SignerType": "Signer",
"FormFields": [
{
"FieldType": "Signature",
"PageNumber": 1,
"Bounds": { "X": 50, "Y": 50, "Width": 200, "Height": 25 }
},
{
"FieldType": "DateSigned",
"PageNumber": 1,
"Bounds": { "X": 50, "Y": 150, "Width": 200, "Height": 25 },
"IsRequired": true
},
{
"FieldType": "TextBox",
"PageNumber": 1,
"Bounds": { "X": 50, "Y": 100, "Width": 400, "Height": 25 },
"CollaborationSettings": {
"IsRequired": true,
"RequireSignerApproval": true,
"RequireInitial": true,
"AllowedSigners": ["550e8400-e29b-41d4-a716-446655440000"]
}
}
]
},
{
"Name": "Alice",
"Id": "550e8400-e29b-41d4-a716-446655440000",
"EmailAddress": " alice@cubeflakes.com",
"SignerType": "Signer",
"FormFields": [
{
"FieldType": "Signature",
"PageNumber": 1,
"Bounds": { "X": 50, "Y": 200, "Width": 200, "Height": 25 }
},
{
"FieldType": "DateSigned",
"PageNumber": 1,
"Bounds": { "X": 50, "Y": 250, "Width": 200, "Height": 25 },
"IsRequired": true
}
]
}
],
"ExpiryDays": 30,
"Files": [
"data:application/pdf;base64,JVBERi0xLjcKJcfs..."
],
"Title": "Sampledocument",
"ExpiryDateType": "Days",
"ExpiryValue": 60,
"DisableEmails": false,
}
C#
var apiClient = new ApiClient("https://api.boldsign.com", "Your API Key");
var documentClient = new DocumentClient(apiClient);
// ----- David's fields -----
var davidSignatureField = new FormField(
type: FieldType.Signature,
pageNumber: 1,
bounds: new Rectangle(x: 166, y: 645, width: 200, height: 25)
);
var davidDateField = new FormField(
id: "date",
type: FieldType.DateSigned,
pageNumber: 1,
bounds: new Rectangle(x: 134, y: 713, width: 200, height: 25),
isRequired: true
);
// Text box with collaboration settings limited to Alice (by signer ID)
var davidTextBoxField = new FormField(
id: "david_textbox",
type: FieldType.TextBox,
pageNumber: 1,
bounds: new Rectangle(x: 202, y: 446, width: 400, height: 25)
);
davidTextBoxField.CollaborationSettings = new CollaborationSettings
{
IsRequired = true,
RequireSignerApproval = true,
RequireInitial = true,
AllowedSigners = new List
{
"550e8400-e29b-41d4-a716-446655440000", //Alice ID
}
};
// ----- Alice's fields -----
var aliceSignatureField = new FormField(
id: "signature",
type: FieldType.Signature,
pageNumber: 1,
bounds: new Rectangle(x: 553, y: 644, width: 200, height: 25)
);
var aliceDateField = new FormField(
id: "date",
type: FieldType.DateSigned,
pageNumber: 1,
bounds: new Rectangle(x: 527, y: 713, width: 200, height: 25),
isRequired: true
);
// ----- Signers (with explicit IDs so fields can target them) -----
var documentSignerDavid = new DocumentSigner(
signerName: "David",
signerEmail: " david@cubeflakes.com ",
signerType: SignerType.Signer,
formFields: new List { davidSignatureField, davidDateField, davidTextBoxField }
);
documentSignerDavid.Id="6ba7b810-9dad-11d1-80b4-00c04fd430c8";
var documentSignerAlice = new DocumentSigner(
signerName: "Alice",
signerEmail: " alice@cubeflakes.com ",
signerType: SignerType.Signer,
formFields: new List { aliceSignatureField, aliceDateField }
);
documentSignerAlice.Id = "550e8400-e29b-41d4-a716-446655440000"; // Ensure this ID is correct based on your BoldSign account
// ----- Document details -----
var documentDetails = new SendForSign
{
Title = "Agreement",
Signers = new List< >
{
// You can control signing order by list order if needed
documentSignerDavid,
documentSignerAlice
},
Files = new List
{
new DocumentFilePath
{
ContentType = "application/pdf",
FilePath = "You file path.pdf",
}
},
// Optional: set additional options like Message, EnableSigningOrder, Reminders, etc.
// EnableSigningOrder = true,
};
// Send
var documentCreated = documentClient.SendDocument(documentDetails);
Console.WriteLine($"Document ID: {documentCreated.DocumentId}");
Python
import boldsign
configuration = boldsign.Configuration(api_key="YOUR API KEY ")
with boldsign.ApiClient(configuration) as api_client:
document_api = boldsign.DocumentApi(api_client)
# David's fields
signature_field = boldsign.FormField(
fieldType="Signature",
pageNumber=1,
bounds=boldsign.Rectangle(x=166.6, y=645.1, width=200, height=25)
)
date_field = boldsign.FormField(
fieldType="DateSigned",
pageNumber=1,
bounds=boldsign.Rectangle(x=134.7, y=713.4, width=200, height=25),
isRequired=True,
)
textbox_field = boldsign.FormField(
fieldType="TextBox",
pageNumber=1,
bounds=boldsign.Rectangle(x=202, y=446.4, width=400, height=25),
collaborationSettings=boldsign.CollaborationSettings(
isRequired=True,
requireSignerApproval=True,
requireInitial=True,
allowedSigners=[
"450e8400-e29b-41d4-a416-446655440000" # Alice's ID
]
)
)
document_signer_david = boldsign.DocumentSigner(
id="4ba7b810-3dad-11d1-80b4-00c04fd430c8",
name="David",
emailAddress="david@cubeflakes.com",
signerType="Signer",
formFields=[signature_field, date_field,textbox_field]
)
# Alice's fields
signature_field_alice = boldsign.FormField(
fieldType="Signature",
pageNumber=1,
bounds=boldsign.Rectangle(x=553.2, y=644, width=200, height=25)
)
date_field_alice = boldsign.FormField(
fieldType="DateSigned",
pageNumber=1,
bounds=boldsign.Rectangle(x=527.5, y=713.4, width=200, height=25),
isRequired=True,
)
document_signer_alice = boldsign.DocumentSigner(
id="450e8400-e29b-41d4-a416-446655440000",
name="Alice",
emailAddress="alice@cubeflakes.com",
signerType="Signer",
formFields=[signature_field_alice, date_field_alice]
)
send_for_sign = boldsign.SendForSign(
title="Non Disclosure Agreement",
files=["Your File Path.pdf"], # Replace with actual file path
signers=[document_signer_david, document_signer_alice]
)
document_created = document_api.send_document(send_for_sign)
print("Document sent successfully:", document_created)
PHP
<?php
require_once "vendor/autoload.php";
use BoldSign\Configuration;
use BoldSign\Api\DocumentApi;
use BoldSign\Model\{
FormField,
Rectangle,
DocumentSigner,
SendForSign,
FileInfo,
EditableDateFieldSettings,
CollaborationSettings
};
$config = new Configuration();
$config->setApiKey(' Your API Key ');
$document_api = new DocumentApi($config);
// David's fields
$signature_field_david = new FormField();
$signature_field_david->setFieldType('Signature');
$signature_field_david->setPageNumber(1);
$signature_field_david->setBounds(new Rectangle(['x' => 50, 'y' => 50, 'width' => 200, 'height' => 25]));
$date_field_david = new FormField();
$date_field_david->setFieldType('DateSigned');
$date_field_david->setPageNumber(1);
$date_field_david->setBounds(new Rectangle(['x' => 50, 'y' => 150, 'width' => 200, 'height' => 25]));
$textbox_field_david = new FormField();
$textbox_field_david->setFieldType('TextBox');
$textbox_field_david->setPageNumber(1);
$textbox_field_david->setBounds(new Rectangle(['x' => 50, 'y' => 100, 'width' => 400, 'height' => 25]));
$textbox_field_david->setCollaborationSettings(new CollaborationSettings([
'is_required' => true,
'require_signer_approval' => true,
'require_initial' => true,
'allowed_signers' => ['550e8400-e29b-41d4-a716-446655440000'] // Alice's ID
]));
$document_signer_david = new DocumentSigner();
$document_signer_david->setName("David");
$document_signer_david->setId("6ba7b810-9dad-11d1-80b4-00c04fd430c8");
$document_signer_david->setEmailAddress("david@cubeflakes.com");
$document_signer_david->setSignerType("Signer");
$document_signer_david->setFormFields([$signature_field_david, $date_field_david, $textbox_field_david]);
// Alice's fields
$signature_field_alice = new FormField();
$signature_field_alice->setFieldType('Signature');
$signature_field_alice->setPageNumber(1);
$signature_field_alice->setBounds(new Rectangle(['x' => 50, 'y' => 200, 'width' => 200, 'height' => 25]));
$date_field_alice = new FormField();
$date_field_alice->setFieldType('DateSigned');
$date_field_alice->setPageNumber(1);
$date_field_alice->setBounds(new Rectangle(['x' => 50, 'y' => 250, 'width' => 200, 'height' => 25]));
$date_field_alice->setIsRequired(true);
$document_signer_alice = new DocumentSigner();
$document_signer_alice->setName("Alice");
$document_signer_alice->setId("550e8400-e29b-41d4-a716-446655440000");
$document_signer_alice->setEmailAddress("alice@cubeflakes.com ");
$document_signer_alice->setSignerType("Signer");
$document_signer_alice->setFormFields([$signature_field_alice, $date_field_alice]);
// Prepare document
$send_for_sign = new SendForSign();
$files = new FileInfo();
$files = 'Your File path .pdf';
$send_for_sign->setFiles([$files]);
$send_for_sign->setSigners([$document_signer_david, $document_signer_alice]);
$send_for_sign->setTitle('Document SDK API');
$document_created = $document_api->sendDocument($send_for_sign);
print_r($document_createdid);
Java
ApiClient client = Configuration.getDefaultApiClient();
client.setApiKey("Your API Key ");
DocumentApi documentApi = new DocumentApi(client);
// ── David's fields
FormField signatureFieldDavid = new FormField();
signatureFieldDavid.setFieldType(FormField.FieldTypeEnum.SIGNATURE);
signatureFieldDavid.setPageNumber(1);
Rectangle boundsDavidSig = new Rectangle().x(166.6f).y(645.1f).width(200f).height(25f);
signatureFieldDavid.setBounds(boundsDavidSig);
FormField dateFieldDavid = new FormField();
dateFieldDavid.setFieldType(FormField.FieldTypeEnum.DATE_SIGNED);
dateFieldDavid.setPageNumber(1);
Rectangle boundsDavidDate = new Rectangle().x(134.7f).y(713.4f).width(200f).height(25f);
dateFieldDavid.setBounds(boundsDavidDate);
dateFieldDavid.setIsRequired(true);
FormField textBoxField = new FormField();
textBoxField.setFieldType(FormField.FieldTypeEnum.TEXT_BOX);
textBoxField.setPageNumber(1);
Rectangle boundsText = new Rectangle().x(202f).y(446.4f).width(400f).height(25f);
textBoxField.setBounds(boundsText);
textBoxField.setIsRequired(true);
textBoxField = new FormField();
textBoxField.setFieldType(FormField.FieldTypeEnum.TEXT_BOX);
textBoxField.setPageNumber(1);
textBoxField.setIsRequired(true);
textBoxField.setBounds(new Rectangle().x(202f).y(446.4f).width(400f).height(25f));
CollaborationSettings collabSettings = new CollaborationSettings();
// Make it required for collaborators (not just the assignee).
collabSettings.setIsRequired(true);
// If someone edits after another signer has signed, trigger reapproval.
collabSettings.setRequireSignerApproval(true);
// Require collaborators to initial when they change the value.
collabSettings.setRequireInitial(true);
// Add *other* signer IDs who can collaborate (assignee is auto-included).
collabSettings.setAllowedSigners(Arrays.asList(
"550e8400-e29b-41d4-a716-446655440000" // Alice's signer ID
));
// Attach the collaboration settings to the field.
textBoxField.setCollaborationSettings(collabSettings);
// Alice's signer ID
DocumentSigner signerDavid = new DocumentSigner();
signerDavid.setId("6ba7b810-9dad-11d1-80b4-00c04fd430c8");
signerDavid.setName("David");
signerDavid.setEmailAddress("david@cubeflakes.com ");
signerDavid.setSignerType(DocumentSigner.SignerTypeEnum.SIGNER);
signerDavid.setFormFields(Arrays.asList(signatureFieldDavid, dateFieldDavid, textBoxField));
// ── Alice's fields
FormField signatureFieldAlice = new FormField();
signatureFieldAlice.setFieldType(FormField.FieldTypeEnum.SIGNATURE);
signatureFieldAlice.setPageNumber(1);
Rectangle boundsAliceSig = new Rectangle().x(553.2f).y(644f).width(200f).height(25f);
signatureFieldAlice.setBounds(boundsAliceSig);
FormField dateFieldAlice = new FormField();
dateFieldAlice.setFieldType(FormField.FieldTypeEnum.DATE_SIGNED);
dateFieldAlice.setPageNumber(1);
Rectangle boundsAliceDate = new Rectangle().x(527.5f).y(713.4f).width(200f).height(25f);
dateFieldAlice.setBounds(boundsAliceDate);
dateFieldAlice.setIsRequired(true);
DocumentSigner signerAlice = new DocumentSigner();
signerAlice.setId("550e8400-e29b-41d4-a716-446655440000");
signerAlice.setName("Alice");
signerAlice.setEmailAddress("alice@cubeflakes.com ");
signerAlice.setSignerType(DocumentSigner.SignerTypeEnum.SIGNER);
signerAlice.setFormFields(Arrays.asList(signatureFieldAlice, dateFieldAlice));
// ── Prepare and send the document.
SendForSign sendForSign = new SendForSign();
File file = new File("Your file path.pdf");// Replace with actual path, e.g. "C:\\docs\\nda.pdf"
sendForSign.setFiles(Arrays.asList(file));
sendForSign.setSigners(Arrays.asList(signerDavid, signerAlice));
sendForSign.setTitle("Non Disclosure Agreement");
DocumentCreated documentCreated = documentApi.sendDocument(sendForSign);
// Optional: Print success info.
System.out.println("Document sent successfully: " + documentCreated);
}
}
Node js
import { DocumentApi, DocumentSigner, FormField, Rectangle, SendForSign, CollaborationSettings } from "boldsign";
import * as fs from "fs";
async function sendDocument() {
const documentApi = new DocumentApi();
documentApi.setApiKey("YOUR API KEY");
// Signature field (David)
const davidSignatureBounds = new Rectangle();
davidSignatureBounds.x = 166.6;
davidSignatureBounds.y = 645.1;
davidSignatureBounds.width = 200;
davidSignatureBounds.height = 25;
const davidSignatureField = new FormField();
davidSignatureField.fieldType = FormField.FieldTypeEnum.Signature;
davidSignatureField.pageNumber = 1;
davidSignatureField.bounds = davidSignatureBounds;
// Date signed field (David)
const davidDateBounds = new Rectangle();
davidDateBounds.x = 134.7;
davidDateBounds.y = 713.4;
davidDateBounds.width = 200;
davidDateBounds.height = 25;
const davidDateField = new FormField();
davidDateField.fieldType = FormField.FieldTypeEnum.DateSigned;
davidDateField.pageNumber = 1;
davidDateField.bounds = davidDateBounds;
davidDateField.isRequired = true;
// TextBox field (David) - editable with collaboration settings
const davidTextboxBounds = new Rectangle();
davidTextboxBounds.x = 202;
davidTextboxBounds.y = 446.4;
davidTextboxBounds.width = 400;
davidTextboxBounds.height = 25;
const davidTextboxField = new FormField();
davidTextboxField.fieldType = FormField.FieldTypeEnum.TextBox;
davidTextboxField.pageNumber = 1;
davidTextboxField.bounds = davidTextboxBounds;
davidTextboxField.isEditable = true;
// Collaboration settings for David's text box.
const collab = new CollaborationSettings();
collab.isRequired = true;
collab.requireSignerApproval = true;
collab.requireInitial = true;
collab.allowedSigners = ["450e8400-e29b-41d4-a416-446655440000"]; // Alice Id
davidTextboxField.collaborationSettings = collab;
// David signer
const documentSignerDavid = new DocumentSigner();
documentSignerDavid.id ="4ba7b810-3dad-11d1-80b4-00c04fd430c8";;
documentSignerDavid.name = "David";
documentSignerDavid.emailAddress = "david@cubeflakes.com";
documentSignerDavid.signerType = DocumentSigner.SignerTypeEnum.Signer;
documentSignerDavid.formFields = [
davidSignatureField,
davidDateField,
davidTextboxField,
];
// Signature field (Alice)
const aliceSignatureBounds = new Rectangle();
aliceSignatureBounds.x = 553.2;
aliceSignatureBounds.y = 644;
aliceSignatureBounds.width = 200;
aliceSignatureBounds.height = 25;
const aliceSignatureField = new FormField();
aliceSignatureField.fieldType = FormField.FieldTypeEnum.Signature;
aliceSignatureField.pageNumber = 1;
aliceSignatureField.bounds = aliceSignatureBounds;
// Date signed field (Alice)
const aliceDateBounds = new Rectangle();
aliceDateBounds.x = 527.5;
aliceDateBounds.y = 713.4;
aliceDateBounds.width = 200;
aliceDateBounds.height = 25;
const aliceDateField = new FormField();
aliceDateField.fieldType = FormField.FieldTypeEnum.DateSigned;
aliceDateField.pageNumber = 1;
aliceDateField.bounds = aliceDateBounds;
aliceDateField.isRequired = true;
// Alice signer
const documentSignerAlice = new DocumentSigner();
documentSignerAlice.id ="450e8400-e29b-41d4-a416-446655440000";
documentSignerAlice.name = "Alice";
documentSignerAlice.emailAddress = "alice@cubeflakes.com";
documentSignerAlice.signerType = DocumentSigner.SignerTypeEnum.Signer;
documentSignerAlice.formFields = [
aliceSignatureField,
aliceDateField,
];
const files = fs.createReadStream("./Your File Path.pdf");
const sendForSign = new SendForSign();
sendForSign.title = "Agreement";
sendForSign.signers = [documentSignerDavid, documentSignerAlice];
sendForSign.files = [files];
try {
const documentCreated = await documentApi.sendDocument(sendForSign);
console.log("Document sent successfully:", documentCreated);
} catch (error) {
console.error("Error sending document:", error);
}
}
sendDocument();
In the previous code examples, the TextBox is set as a collaborative field for both signers. When they open the document and click on the field, a tooltip appears indicating that they are assigned as collaborators for that field.
Any changes made to the field are visible to both parties while re-signing the document.
What happens when a collaborative field changes after a signer has signed
What happens next depends on the CollaborationSettings you configure. For example, when both RequireSignerApproval and RequireInitial are enabled, the workflow behaves as follows:
- The signer must re‑approve (re‑sign) the document. Any modification to a collaborative field after a signer has completed their step triggers a new approval cycle.
- The signer must add their initials to validate the modification.
- The document returns to an “In Progress” state.
- All changes are recorded in the audit trail and document history.
- Notifications are sent to affected signers. Signers who previously signed are notified that changes were made and their re‑approval is required.
How are collaborative field changes tracked
BoldSign maintains a complete history of all collaborative activities through audit trails and document histories.
Audit trails
The audit trail provides a summary of key events. It captures:
- Field changes: Which field was modified, who made the change, and the exact time stamp.
- Re-approval events: When the require-approval option triggers a re-sign, it logs who initiated the process and which recipients were asked to re-sign.
Document history
The document history offers a detailed breakdown of every change, including:
- Which field was modified, who changed it, and when.
- The original and changed values of the field.
- Full details of the re-signing process, including who was asked to re-sign and when the request was sent.
What notifications do signers receive when collaborative fields are updated
General notifications
When approvals are required, any signer who has already completed the document will receive an email notification prompting them to re-sign after a collaborator makes a change.
Signing order notifications
If a signing order is enabled, the re-signing process follows the original sequence. After a change triggers re-approval, the re-sign request is sent to the first signer. Subsequent signers are notified that re-signing is pending, but they cannot access the document until the previous signer completes their re-signing.
What constraints and limitations apply to collaborative fields
Collaborative fields cannot be used under the following conditions:
Recipient
- The document must have more than one recipient. Collaborative fields are not supported for single-signer or self-signed documents.
- Collaborators cannot be in-person signers, group signers, or reviewers.
Feature
- Collaborative settings are not compatible with:
- Documents using print-and-sign.
- Fields with data sync tags.
- Fields with conditional logic.
- Formula fields (collaborative fields cannot be part of a formula).
When should you use collaborative fields in multisigner API workflows
Here’s when to use collaborative fields effectively.
Use them when:
- Multiple parties contribute to the same section.
- Information evolves during negotiations.
- One signer fills the details, another validates them.
- Data depends on inputs from multiple departments.
Examples:
- Contract scope descriptions.
- Pricing or quote details.
- Loan or application data.
- Joint agreement clauses.
Conclusion
The collaborative field feature is a powerful tool for teams that rely on shared input and collective decision-making. By enabling multiple signers to contribute to a single field, BoldSign helps ensure that documents are not only signed but also accurate.
Ready to simplify your eSignature workflows? Try collaborative fields in BoldSign. Sign up for a free sandbox account and explore our developer documentation to learn more about our APIs.
We’d love to hear your thoughts—share your comments below! If you need any assistance, visit our support portal to connect with our team.
Related blogs
- Move Users to Another Team with the BoldSign ChangeTeam API
- Quartz.NET in Production: Advanced Job Scheduling for High-Traffic .NET APIs
- How to Download an Audit Trail PDF Using the BoldSign API
Note: This blog was originally published at boldsign.com







Top comments (0)