# Signable concepts

Send documents for signature using envelopes. Envelopes contain your documents and the parties who need to sign them.

## The signing workflow

Create an envelope, add documents, assign who needs to sign, and send. Signable handles notifications, collects signatures, and tracks completion.


```mermaid
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#E3F4FC', 'primaryBorderColor': '#0077B6', 'primaryTextColor': '#333333'}}}%%

graph LR
    A[Create Envelope] --> B[Add Documents]
    B --> C[Assign Parties]
    C --> D[Send]
    D --> E[Parties Sign]
    E --> F[Complete]
```

## Envelopes

An envelope is a set that holds your documents and parties. It tracks the entire signing process from draft to completion.


```mermaid
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#E3F4FC', 'primaryBorderColor': '#0077B6', 'primaryTextColor': '#333333'}}}%%
graph TD
    A[Envelope] --> B[Documents]
    A --> C[Parties]
    
    B --> D[Contract.pdf]
    B --> E[NDA.pdf]
    
    C --> F[Signer: John]
    C --> G[Signer: Jane]
    C --> H[Copy Only: Legal]
```

You can include multiple documents in one envelope. All parties in the envelope receive access to all documents.

[Send an envelope using the API](https://developers.signable.app/openapi/envelopes)

## Documents and templates

Documents are files you upload each time (PDF, Word, Excel).

Templates are reusable documents with predefined fields and party roles. You create them once in the web app and reuse them with the API.

Use templates when you send the same document repeatedly with different signers. Templates remember field positions and party roles, saving you setup time.

[Get a template using the API](https://developers.signable.app/openapi/templates)

## Parties and roles

Parties are people who interact with your envelopes:

- Signers must sign documents
- Copy-only parties receive completed documents


Party roles connect templates to envelopes. You define roles in templates (such as "Employee" or "Manager"), then assign specific people to those roles when you send envelopes.

Contacts store party information for reuse. Signable creates them automatically when you send envelopes, or you can create them with the API.


```mermaid
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#E3F4FC', 'primaryBorderColor': '#0077B6', 'primaryTextColor': '#333333'}}}%%
graph LR
    A[Template<br/>Party Roles] --> B[Envelope 1<br/>John and Jane]
    A --> C[Envelope 2<br/>Tom and Jane]
    A --> D[Envelope 3<br/>Sarah and Mike]
```

[Create a contact using the API](https://developers.signable.app/openapi/contacts)

## Fields

Fields are inputs where parties enter information. Field types include text, dates, signatures, file uploads, dropdowns, and checkboxes.

You can place fields manually or use tags in your document. Tags are special markers like `{signature:signer1:Please+Sign}` and `{date:signer1:Date+Today}`. Signable detects tags and creates fields automatically.

Prefillable fields let you populate data before sending. Prefill information you already know and leave other fields for parties to complete.

[Learn more about tags](https://help.signable.app/article/160-what-are-signable-tags)

## Webhooks

Webhooks notify your application when events occur. Events include envelope sent, document signed, and envelope completed.


```mermaid
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#E3F4FC', 'primaryBorderColor': '#0077B6', 'primaryTextColor': '#333333'}}}%%
sequenceDiagram
    participant S as Signable
    participant Y as Your System
    
    S->>S: Party signs
    S->>Y: POST webhook
    Y->>Y: Process event
    Y->>S: 200 OK
```

You configure a webhook URL and Signable sends POST requests when events happen. Use webhooks to automate workflows and integrate with your systems.

[Learn more about webhooks](https://developers.signable.app/openapi/webhooks.md)

## Widgets

Widgets are templates you share using the URL or embed in webpages. Anyone can access the URL and sign. Each signature creates a new envelope.

Use widgets for public forms or documents that many people sign independently.


```
https://sign.signable.app/widget/abc123?envelope_meta={data}
```

You can pass custom data using the `envelope_meta` parameter. Signable returns this data in webhooks.

## Partners and sub-accounts

Partners manage multiple Signable accounts. You create sub-accounts for customers using the API. Each sub-account has its own API key and operates independently.


```mermaid
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#E3F4FC', 'primaryBorderColor': '#0077B6', 'primaryTextColor': '#333333'}}}%%
graph TD
    A[Partner Account] --> B[Sub-Account 1]
    A --> C[Sub-Account 2]
    A --> D[Sub-Account 3]
    
    B --> E[Independent API Key]
    C --> F[Independent API Key]
    D --> G[Independent API Key]
```

[Manage partner integration using the API](https://developers.signable.app/openapi/partners)

## Complete workflow


```mermaid
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#E3F4FC', 'primaryBorderColor': '#0077B6', 'primaryTextColor': '#333333'}}}%%
graph TD
    A[Upload a Document or Create Template<br/><br/>Define roles and fields] --> B[API: Create envelope<br/>Reference template]
    B --> C[API: Assign parties<br/>Prefill fields]
    C --> D[API: Send Envelope]
    
    D --> E[Party 1 signs]
    E --> F[Webhook notification]
    
    E --> G[Party 2 signs]
    G --> H[Webhook notification]

    G --> I[Envelope complete]
    I --> J[Webhook notification]
    I --> K[Email copy-only parties]
    
    E ~~~ N[* Parties can sign sequentially or simultaneously]

    style D fill:#4CAF50,stroke:#333,stroke-width:2px
    style I fill:#2196F3,stroke:#333,stroke-width:2px
    style N fill:#F5F5F5,stroke:#999999,stroke-width:1px
```

## Related documentation

- [Authentication](/authentication)
- [Testing](/testing)