Click "New Document" in the top left to create a contract, then drag components from the sidebar to begin composing.
Paste your serialized contract JSON manifest below to restore the document state.
Use your mouse or touchscreen to draw your signature in the field below.
Save common info to auto-populate contract fields.
You're about to send this contract for signing. Once sent, it is locked and can no longer be edited. The following people will be able to access it:
Send the link below to your signees. They must sign in with an authorized account (listed in the actors) to view and sign this contract.
You've been sent a contract to review and sign. Sign in with Google to continue — if you don't have an account yet, signing in creates one automatically. You must use the email address the contract was sent to.
Copy this format reference and give it to any AI assistant to generate contracts you can paste into Import Manifest.
# SignSwifty Manifest Format Reference
Use this reference to generate a valid SignSwifty manifest JSON.
The output should be a single JSON object that can be pasted into
SignSwifty's "Import Manifest" feature.
## Top-Level Structure
```json
{
"name": "Contract Title Here",
"actors": [
{ "email": "signer1@example.com", "role": "Signer" },
{ "email": "signer2@example.com", "role": "Signer" },
{ "email": "viewer@example.com", "role": "Viewer" }
],
"blocks": [ ... ]
}
```
### Fields:
- **name** (string, required): The document title.
- **actors** (array, required): People involved. Each has:
- **email** (string): Their email address.
- **role** (string): Either "Signer" or "Viewer".
- **blocks** (array, required): The ordered content blocks.
---
## Block Types
There are 3 block types: `paragraph`, `field`, and `signature`.
### 1. Paragraph Block (static text content)
```json
{
"type": "paragraph",
"content": "Your contract text here.\nUse \\n for line breaks."
}
```
### 2. Field Block (fillable input fields)
```json
{
"type": "field",
"label": "Section Title",
"responsibleParty": "signer1@example.com",
"fields": [
{
"label": "FULL NAME",
"inputType": "text",
"required": true,
"value": ""
},
{
"label": "EMAIL ADDRESS",
"inputType": "email",
"required": true,
"value": ""
}
]
}
```
#### Available inputType values:
- `"text"` — General text input
- `"email"` — Email address
- `"phone"` — Phone number
- `"date"` — Date picker
- `"address"` — Physical address
- `"signature"` — Inline signature within a field block
Each sub-field has:
- **label** (string): Display name (uppercase recommended).
- **inputType** (string): One of the types above.
- **required** (boolean): Whether the field must be filled.
- **value** (string): Pre-filled value or empty string.
- **maxChars** (number, optional): Character limit for text fields.
### 3. Signature Block (standalone signature)
```json
{
"type": "signature",
"label": "Signer Name's Signature",
"responsibleParty": "signer1@example.com",
"required": true,
"value": null
}
```
---
## Rules
- `responsibleParty` must match an actor's email address.
- Paragraph blocks do NOT have a `responsibleParty`.
- Field and signature blocks MUST have a `responsibleParty`.
- Do NOT include `id` or `status` — they are auto-generated.
- Block order in the array = display order in the document.
- Use `\n` inside paragraph content for line breaks.
- Use `•` for bullet points in paragraph text.
---
## Full Example
```json
{
"name": "Freelance Service Agreement",
"actors": [
{ "email": "client@company.com", "role": "Signer" },
{ "email": "freelancer@email.com", "role": "Signer" }
],
"blocks": [
{
"type": "paragraph",
"content": "FREELANCE SERVICE AGREEMENT\n\nThis Agreement is entered into between the Client and the Freelancer, effective as of the date of last signature below."
},
{
"type": "paragraph",
"content": "1. SCOPE OF WORK\n\nThe Freelancer agrees to provide the services described in the attached Statement of Work.\n\n2. COMPENSATION\n\nThe Client agrees to pay the Freelancer the agreed-upon rate within 30 days of invoice receipt.\n\n3. CONFIDENTIALITY\n\nBoth parties agree to maintain the confidentiality of proprietary information shared during the engagement."
},
{
"type": "field",
"label": "Client Information",
"responsibleParty": "client@company.com",
"fields": [
{ "label": "FULL NAME", "inputType": "text", "required": true, "value": "" },
{ "label": "COMPANY", "inputType": "text", "required": true, "value": "" },
{ "label": "EMAIL", "inputType": "email", "required": true, "value": "" },
{ "label": "PHONE", "inputType": "phone", "required": false, "value": "" }
]
},
{
"type": "field",
"label": "Freelancer Information",
"responsibleParty": "freelancer@email.com",
"fields": [
{ "label": "FULL NAME", "inputType": "text", "required": true, "value": "" },
{ "label": "EMAIL", "inputType": "email", "required": true, "value": "" },
{ "label": "ADDRESS", "inputType": "address", "required": true, "value": "" }
]
},
{
"type": "signature",
"label": "Client Signature",
"responsibleParty": "client@company.com",
"required": true,
"value": null
},
{
"type": "signature",
"label": "Freelancer Signature",
"responsibleParty": "freelancer@email.com",
"required": true,
"value": null
}
]
}
```
Before you get started, please review and accept our Terms of Service and Privacy Policy. These outline how SignSwifty handles your data and the rules for using the platform.