/plugin marketplace add anvilco/anvil-plugins
/plugin install boldsign-anvil-migration@anvil-plugins| BoldSign | Anvil | What it is |
|---|---|---|
| Document (signature request) | Etch packet | The signing transaction. createEtchPacket returns an etchPacketEid. |
| Template (templateId) | Cast (castEid) | A reusable PDF with positioned form fields. |
| Role (roleIndex) | Signer id | A named signing slot; in Anvil an arbitrary signer id you map to fields. |
| signerType (Signer / InPersonSigner) | signerType ('email' / 'embedded') | Whether the signer signs by email or in your app. |
| Form field (fieldType + bounds) | Field | A signable box positioned by bounds and page number. |
| Form field id / name | Field alias (aliasId) | Your data key for a field. |
| existingFormFields | Fill data (data.payloads) | Prefilled field values. |
| signerOrder | routingOrder | Signing order; equal values sign in parallel. |
| getEmbeddedSignLink | generateEtchSignURL | The per-signer embedded signing URL. |
| Completed event | etchPacketComplete | All signers done; documents downloadable. |
| Sandbox mode | isTest | Watermarked, non-billed test documents. |
| X-API-KEY | ANVIL_API_KEY | Auth. One key per org, no account discovery. OAuth or child orgs act for a client. |
// Fields on a template are attached to ROLES (by roleIndex), not to people.
const body = {
title: 'NDA for Acme Corp',
message: 'Hi, please review and sign the attached NDA.',
enableSigningOrder: true,
roles: [
{
roleIndex: 1,
signerName: 'Jane Smith',
signerEmail: 'jane@example.com',
signerType: 'Signer',
signerOrder: 1,
existingFormFields: [{ id: 'CompanyName', value: 'Acme Corp' }],
},
],
cc: [{ emailAddress: 'records@acme.com' }],
}
const res = await fetch(
'https://api.boldsign.com/v1/template/send?templateId=tmpl_abc123',
{
method: 'POST',
headers: { 'X-API-KEY': process.env.BOLDSIGN_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify(body),
}
)
const { documentId } = await res.json()const {
data,
errors,
} = await anvilClient.createEtchPacket({
variables: {
files: [ ... ],
data: { ... },
signers: [ ... ],
},
})