How Document Generation Works
When you click Generate Document, ScopeStack compiles your project data and merges it into your document template. The result is a finished Word, PowerPoint, or Excel file ready to send to a client.
Generation is fast. As of November 2025, data compilation is over 90% faster than before, and content merging completes in under a second for most projects.
Tag Templates Are the Standard Format
Document generation in ScopeStack is built around Tag Templates — industry-standard templates that use tag syntax to insert project data. If you are setting up templates for the first time, start with Tag Templates.
Legacy Mail Merge templates continue to work but are no longer the recommended format. See V1 Mail Merge Templates (Legacy Reference) for details.
Single Document Generation
For a single document, click Generate Document and select your template. The document downloads directly when generation is complete.
If the document does not download automatically, refresh the page — it may already be ready.
Batch Document Generation
ScopeStack lets you generate multiple documents at once from a single project. This is useful when a project requires several deliverables — for example, a Statement of Work, a pricing summary, and an executive overview — that all need to go out together.
From the document generation dialog, select more than one template. ScopeStack will process all of them in a single request.
On this screen: The document generation dialog with more than one template selected. Each selected template is listed with its name and an editable filename field so the output file name can be customized before generation. Below the template list, delivery method options are visible: Download, Email, Save To Cloud Storage, and Electronic Signature (when an e-signature integration is configured). A Generate button initiates the request.
Receiving your documents: When you request multiple documents, ScopeStack packages them into a single zip file for download. You do not need to wait for each document separately — the zip is ready when all documents have finished generating. Single-document requests continue to work exactly as before and download directly.
Customizing file names: During the generation request, you can edit the file name for each document before generating. Draft versions often have timestamps in their names — you can remove those before generating the final version so the file name is clean when it arrives in the client’s inbox.
Bulk email and Electronic Signature delivery: Instead of downloading the zip and attaching files manually, you can send all generated documents directly from ScopeStack — either as a single outbound email or via Electronic Signature (DocuSign). Both options appear in the generation dialog when multiple templates are selected.
Per-document error reporting: If one or more documents fail to generate, the others are not affected. ScopeStack shows a status message for each document in the request, with individual download links for the ones that succeeded. A single failed document does not block access to the rest. You can re-request only the document that failed without regenerating the entire batch.
On this screen: The document generation results view after a batch request completes. Each template from the request is listed with a status indicator. Successful documents show a download link next to their name. A failed document shows an error status message in place of a download link, while the other documents remain available for individual download.
PDF Output
ScopeStack can convert generated Word documents to PDF as part of the generation process. When you request a document, you can choose to receive the output as a PDF instead of the default Word (.docx) format.
The conversion happens server-side after the document template is merged with your project data. The resulting PDF preserves the layout and formatting of the Word template.
Watermarked PDFs for unapproved projects: When the Watermarked Documents setting is enabled, documents generated from projects that have not yet been approved are automatically output as PDFs with a “draft” watermark on every page. This prevents unapproved documents from being shared as final versions. Once the project is approved, documents generate without the watermark.
To enable or disable watermarked documents, go to My Account > Advanced > Account-wide Preferences and Plan Settings and toggle the Watermarked Documents setting. You need the Account Settings permission at the Manage level to change this. See Account Settings for all available options in the Advanced section.
PDF output works with both single and batch document generation. In a batch request, you can choose PDF output for all documents in the batch.
What Causes Delays?
Generation is fast under normal conditions, but delays can occur:
- High usage: If many users are generating documents simultaneously, a short queue may form.
- Browser issues: The document may have finished generating but your browser did not receive the completion signal. Refreshing the page will often reveal the document is already available.
- Rare edge cases: In unusual circumstances a request may appear stuck, though this is uncommon.
What to Do If Generation Is Slow
- Wait 5 minutes, then refresh the page without force-regenerating.
- If the document still has not appeared, reach out via chat. We can confirm whether the request is still in the queue or already complete.
- Clicking Generate again adds a new request to the queue — it does not cancel the original.
Troubleshooting
Tags not replaced in the output
When tags appear in the finished document as literal text rather than being replaced with data, there are three common causes:
-
Wrong field path. Tag Templates (V2) require the
project.prefix for project-level fields. A tag that worked in a V1 Mail Merge template may silently fail in a V2 template if it omits this prefix. Open the Merge Data view for the project (gear icon > View Merge Data > V2) and confirm the exact path to the field you are referencing. -
Unsupported expression. The V2 template engine uses an Angular expression parser that does not support standard JavaScript methods. Tags containing arrow functions, string instance methods like
.includes()or.replace(), or array methods like.filter()and.map()will fail silently — the tag is left unreplaced without any error message. Replace these with supported pipe filters. See Template Expression Reference for the full list of supported filters. -
Wrong template version. V1 Mail Merge syntax uses
<<= field >>angle-bracket tags inserted via Word’s Mail Merge field feature. V2 Tag Template syntax uses{field}single-brace tags typed directly into the document. Using V1 syntax in a V2 template — or V2 syntax in a V1 template — produces unreplaced tags. Check which data format is selected for your template in the template management page.
Document is corrupt or Word will not open the file
Invisible Unicode characters in source content can corrupt Word and PowerPoint output. The most common offenders are soft hyphens (U+00AD) and zero-width spaces (U+200B), which are introduced by pasting text from Word, Google Docs, or CMS editors. These characters are invisible in the ScopeStack editor but survive into the generated file, where they can break the XML structure that Office applications require.
To clean source content, paste it through a plain text editor (such as TextEdit in plain text mode, Notepad, or a terminal) before entering it into ScopeStack. The plain text round-trip strips invisible formatting characters. If a specific service description or language field is consistently causing corrupt output, that field is the likely source.
Revenue shows $0
When a service shows hours and subservice entries but the pricing total is zero, the cause is almost always a parent service with a quantity of zero. In ScopeStack’s pricing model, revenue on a service rolls up through the parent quantity: if the parent quantity is 0, the calculated revenue is 0 regardless of how many hours or subservices are configured beneath it. Open the service in the project, locate the quantity field on the parent service row, and set it to 1 (or the appropriate value). The pricing total will update immediately.