Guides
Text tags
Place signature, initials, date, text and checkbox fields by writing tags such as {signature:Client} in your PDF.
Text tags let you place fields without coordinates: write a tag in the document (in Word, Google Docs, your PDF generator…) and Macaaw turns it into a field for the recipient whose role matches. The syntax is compatible with PandaDoc-style tags, so existing templates keep working.
Syntax#
Text
{type:Role} field for the recipient with this role
{type:Role*} the same, required| Tag | Field | Required by default |
|---|---|---|
{signature:Client} | Signature | Yes |
{initials:Client} | Initials | No |
{name:Client} | Full name (filled from the recipient) | No |
{date:Client} | Date signed | No |
{text:Client} | Free text the recipient types | No |
{checkbox:Client} | Checkbox | No |
Add * after the role to make any field required: {text:Client*}. Signatures are always required. Roles match the role of a recipient in the create call, ignoring case.
How tags become fields#
- Macaaw reads the PDF's text layer, so the tag must be real text — not part of an image or a scan.
- The field is placed where the tag starts, at least 120 × 30 pt for a signature, 50 × 24 pt for initials and 100 × 14 pt (name, text) or 80 × 14 pt (date). Leave that much room after the tag. A tag split over several text runs is still found.
- The tag text is covered with a white box in the final PDF, so it does not show on the signed copy. Use white or very light text if you want it invisible in the original too.
- Tags are on by default (
"parse_text_tags": true). Sendfalseto ignore them.
Errors#
A tag for a role that has no recipient is refused at creation; info.roles lists the roles that did not match:
400 Bad Request
{
"type": "request_error",
"code": "VALIDATION",
"detail": "Please check what you entered. (unknown_role)",
"info": {
"reason": "unknown_role",
"roles": [
"Witness"
]
}
}Form fields work the same way: with
"parse_form_fields": true, the PDF's own signature, text and checkbox fields named Role.something (for example Client.signature) become fields for that role; text fields named Role.name…, Role.date… or Role.initials… get that type. Converted form fields are removed from the stored PDF. Fields without a matching role prefix are listed in a 400.