## TL;DR
ENVELOPE_IS_INCOMPLETE means the envelope built from the template is missing something required: usually an unmapped role, a missing document, or tabs without recipients. Inspect the template's required roles and tabs, map every role to a recipient in the API call, and re-create.

## The symptom
```text
DocuSign 'ENVELOPE_IS_INCOMPLETE' when creating an envelope from a template
```

## Steps
### 1. Inspect the template requirements
Get the template details: list its roles, documents, and tabs. Note which roles and tabs are required.
Expected: The template's required-role and required-tab list.

### 2. Map every role to a recipient
In the create call, provide a templateRole for each required role with name and email. Unmapped required roles are the most common cause.
Expected: All required roles mapped to recipients.

### 3. Check documents and tabs
Ensure the template's documents are included and that tabs are assigned to mapped recipients. Orphaned tabs also trigger the error.
Expected: Documents present; tabs assigned.

### 4. Re-create the envelope
Send the create call again with the complete role mapping.
Expected: Envelope created without ENVELOPE_IS_INCOMPLETE.

## When to use
- ENVELOPE_IS_INCOMPLETE on template-based creation
- A template worked in the UI but fails via API
- Roles or tabs were recently added to the template

## When not to use
- The error is on a non-template envelope (different cause)
- Authentication fails first (fix auth, not roles)
- The template itself is broken in the UI (fix the template)

## Why it happens
Templates define placeholders (roles) that must be filled at creation time. The UI prompts for them; the API does not. If the call omits a required role, document, or tab assignment, the envelope is structurally incomplete and the API rejects it rather than guessing.

## Edge cases
- Optional vs required roles: only required ones block creation, but map all of them anyway.
- Composite templates: each template's roles must be mapped; check all of them.
- Tabs with conditional logic: ensure the conditions can resolve with the mapped recipients.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_Si-9AHQj9etJR5XuNWnEtw
