Content Editor
In ScopeStack, there are two primary workflows for adding services to projects:
- Standard content that is defined in settings.
- Custom content that is created on a per-project basis.
Standard Content
Defining in Settings
Standard content lets you pre-define all aspects of a service so it’s fast and convenient to build and scope your projects.
Adding to a Project
When you add standard content to a project, it’s effectively copied into the project. Later changes made to the service in settings won’t affect copies already in a project. After it’s been added, you can update parameters like Service Descriptions and Language Field information on a per-project basis.
- Changes made to language in a project are localized to that project.
- If you duplicate a project, the service in the source project is used as the basis for duplication, including any language updates made there.
- If you change standard content in Settings, those changes won’t update existing projects’ versions of that content. When the content is added to a new project after the update, the changes will be reflected in that new project.
Custom Content
Building in a Project
Custom content can be defined on a per-project basis. All attributes are editable within the project and can be changed at any time.
If you duplicate a project that contains custom services, the custom services carry over into the duplicated project.
Text Editor
Rich text fields throughout ScopeStack — including Service Descriptions, Language fields, Executive Summary, and Terms & Conditions — use a streamlined text editor with a single unified toolbar.
On this screen: A rich text editor shows a single unified toolbar at the top containing formatting buttons: Bold, Italic, and other inline style controls, Bulleted List and Numbered List buttons, and Indent and Outdent buttons for nesting list items. The text editing area appears below the toolbar. Common keyboard shortcuts (such as Cmd+B for bold) work within the editor.
Formatting options include:
- Bold, italic, and other inline styles
- Bulleted and numbered lists
- Indent and outdent for nested (multi-level) lists
- Common keyboard shortcuts (for example, Ctrl+B or Cmd+B for bold)
For fields that accept raw HTML, an HTML textarea is available below the visual editor. The textarea is resizable so you can work comfortably with longer markup.
On this screen: Below the visual rich text editor, a raw HTML textarea is visible for fields that accept HTML input. A resize handle in the bottom-right corner of the textarea allows the user to drag it taller or shorter to accommodate longer markup comfortably.
Merge fields in service content
Service Descriptions support dynamic merge fields. You can insert project-specific data by wrapping the field name in double curly braces inside the editor:
Install {{quantity}} routers at {{service_location_name}}.The fields are resolved at document generation time and pull live values from the project. Use them in the Service Description field; other language fields do not reliably substitute them.
Nine fields are supported. Rather than repeat the list here, see Merge Fields Within Service and Subservice Content for the full table and three behaviors worth knowing before you rely on them: a misspelled field renders as nothing rather than an error, quantity has no pluralization, and service_location_remote? prints the literal word “true” or “false”.
Working with tables
You can add a table to a Service Description or Language field two ways, and both carry through to the generated document:
- Insert a table with the table button in the toolbar, then fill in the cells.
- Paste a table from Microsoft Word. Pasted tables come through automatically, including ones with merged cells (merged cells are split into a plain grid). The first row of a pasted table becomes the header row, so if your Word table starts with a label or title row, that row renders as the header.
Tables render both in the editor and in the generated SOW or PDF. To remove a table, select it and press Delete.
Editor behavior
- Clear Formatting affects only the text you have selected. Highlight the text you want to strip first. With nothing selected, it clears the whole field.
- Bullets and headings apply to a whole paragraph, not just the highlighted line. The editor treats a single Enter as a line break and a double Enter as a new paragraph, so lines that share a paragraph take the formatting together. To format sections on their own, put a blank line (press Enter twice) between them first, then apply bullets or a heading to each section.
- Nested (multi-level) lists use the Indent and Outdent buttons, not Tab. To push a list item to a sub-level, put your cursor on the line and click the Indent button in the toolbar; Outdent moves it back up. The Tab key does not indent here — it moves to the next field. If you prefer to write in Markdown, indent the sub-items three spaces under their parent instead — two spaces will not nest a numbered list. Keep a given list to one type — all bullets or all numbers — rather than mixing the two across levels. Nested lists carry through to the generated SOW or PDF as a real multi-level list.
Formatting that breaks document generation
Some markdown never comes through as intended. Depending on which template format your account generates with, it either fails the document outright, is silently dropped, or prints as literal characters. Avoid all of the following in a Service Description or Language field:
| Don’t use | Typed as |
|---|---|
| Horizontal rule / divider | ---, ***, or ___ on its own line |
| Blockquote | a line beginning with > |
| Strikethrough | ~~text~~ |
| Task list | - [ ] item |
| Code block | text fenced with ```, or any line indented four or more spaces |
| Image | a markdown image |
| Angle-bracket text that reads as an HTML tag | <hostname>, <server>, <your-domain>, or literal HTML such as <b>bold</b> |
The last two are the easy ones to hit by accident, because neither looks like formatting. A line indented four spaces becomes a code block even if you only meant to indent it, and text such as reboot <server> nightly is read as an HTML tag.
Use a heading or a blank line for visual separation, and plain text in place of strikethrough and task lists. For a placeholder, drop the brackets and write reboot SERVER nightly.
If your account still generates with legacy V1 Mail Merge templates, everything in the table above fails the document outright, with one exception: a horizontal rule is silently dropped rather than failing, and a --- typed directly beneath a line of text turns that line into a Heading 2. See V1 Mail Merge Templates for the details.
If a document fails to generate right after you edit service language, check the descriptions you just changed for anything in the list above.