# Templates User Guide Open **Templates** to create or select a reusable definition. 1. Choose the template type and the contexts in which it may be used, such as `campaign.postal`. 2. Declare every required input path and its type. Use the same paths as tokens in the body, for example `{{name}}` or `{{postal.address}}`. 3. Configure page size and, for label sheets, rows, columns, and spacing. 4. Save to create a new immutable revision. Publish the revision before using it for final output. 5. In **Preview**, supply a representative JSON item. Compatibility validation explains missing fields, wrong types, unsupported usages, and output-format mismatches before output is produced. 6. Preview a draft or render final output. Store it in Files when that module is available and you have upload permission; otherwise use the bounded download. Bounded output history is visible only to the actor who rendered it and to a Templates administrator. Calling modules expose their own governed download when additional collaborators need access. Render evidence shows the exact revision and abbreviated template, input, and output hashes. A consumer such as Campaign can submit many frozen recipients; the UI sample intentionally validates one representative item. Rendering is also limited to 15 seconds elapsed time, 10 CPU seconds, 512 MiB process memory, 32 MiB serialized input and 8 MiB serialized result transport; the final output remains limited to 5 MiB and 5,000 items. Deeply nested data or more than 1,000,000 transported value nodes is rejected. A limit error creates no partial output or render evidence: reduce the selected input or template complexity and retry. If processing capacity is busy, retry later. Unavailable worker controls or a worker failure require operator investigation. Existing successful output with the same idempotency key is reused without rendering again, provided its input and authorization still match.