V2 Merge Data Field Reference
This reference documents every field available in V2 merge data for tag templates. It is organized by top-level namespace. Use the field paths here directly in template tags.
For tag syntax (loops, conditionals, rich text), see How Tag Templates Work and the Template Expression Reference.
Top-Level Structure
V2 merge data is organized into four namespaces plus several top-level collections.
| Namespace / Collection | What it contains |
|---|---|
project | Project metadata, contacts, narratives, attachments, custom fields |
project_pricing | Financial totals, professional services, managed services, products, governance |
project_payments | Payment terms, pricing model, payment schedule |
locations | Service locations with phases and services nested inside |
language_fields | Aggregated language content (deliverables, assumptions, etc.) by type |
currency | Currency settings for the project |
survey_responses | Questionnaire response values, keyed by response slug |
Important: project_pricing and project_payments are top-level namespaces. They are not children of project. Using {project.project_pricing} will not work.
project fields
Core metadata
| Field | Example tag | Notes |
|---|---|---|
project_name | {project.project_name} | The project’s name |
client_name | {project.client_name} | Client company name |
account_name | {project.account_name} | Your organization’s name |
created_on | {project.created_on} | Date the project was created |
printed_on | {project.printed_on} | Current date (when document is generated) |
submitted_at | {project.submitted_at} | Date and time the project was submitted for approval |
approved_at | {project.approved_at} | Date and time the project was approved |
msa_date | {project.msa_date} | MSA date, if set on the project |
project_version | {project.project_version} | Latest version name string |
Date fields like created_on and printed_on support the .to_short_date filter when Include Formatting is enabled:
{project.printed_on.to_short_date}Current version object
The current_version object exposes details about the most recently created named version.
| Field | Example tag |
|---|---|
| Name | {project.current_version.name} |
| Comment | {project.current_version.comment} |
| Created by | {project.current_version.created_by} |
| Created date | {project.current_version.created} |
Narrative fields
Narrative fields are arrays of strings (one entry per paragraph). Loop over them to render each paragraph, or use the formatted_ version for a single rich text block.
| Narrative | Array tag | Formatted tag |
|---|---|---|
| Executive summary | {#project.executive_summary}{.}{/project.executive_summary} | {~~project.formatted_executive_summary} |
| Solution summary | {#project.solution_summary}{.}{/project.solution_summary} | {~~project.formatted_solution_summary} |
| Our responsibilities | {#project.our_responsibilities}{.}{/project.our_responsibilities} | {~~project.formatted_our_responsibilities} |
| Customer responsibilities | {#project.customer_responsibilities}{.}{/project.customer_responsibilities} | {~~project.formatted_customer_responsibilities} |
| Out of scope | {#project.out_of_scope}{.}{/project.out_of_scope} | {~~project.formatted_out_of_scope} |
Use the array approach when you need to apply per-paragraph styling or numbering. Use formatted_ when you want a single formatted block without per-item control.
Contacts
All contact objects expose name, email, title, and phone.
Primary contact
The project’s primary customer contact. Wrap in a conditional block in case none is set.
{#project.primary_contact}
{name}
{title}
{email}
{phone}
{/project.primary_contact}Primary contacts also include user_defined_fields if your account has custom contact variables defined.
Presales engineer and sales executive
{#project.presales_engineer}
{name} — {email}
{/project.presales_engineer}
{#project.sales_executive}
{name} — {email}
{/project.sales_executive}All contacts (loop)
project.contacts is an array of all active contacts on the project. Each contact includes name, email, title, phone, and contact_type (a slug such as primary_customer_contact).
{#project.contacts}
{name} ({contact_type})
{/project.contacts}Teammates
Project collaborators (internal team members). Each teammate exposes the same name, email, title, phone fields.
{#project.teammates}
{name} — {email}
{/project.teammates}Client object
project.client is an object with all non-sensitive client attributes. Commonly used fields:
| Field | Example tag |
|---|---|
| Name | {project.client.name} |
| Logo URL | {project.client.logo_url} |
| Custom client variables | merged directly onto the client object |
Business unit
project.business_unit is an object with the project’s business unit, if assigned.
| Field | Example tag |
|---|---|
| Name | {project.business_unit.name} |
| Logo URL | {project.business_unit.logo_url} |
| Slug | {project.business_unit.unit_slug} |
Rate table
| Field | Example tag |
|---|---|
| Name | {project.rate_table.name} |
| Accounting code | {project.rate_table.accounting_code} |
| Slug | {project.rate_table.slug} |
Tags
project.tags is an array of tag strings applied to the project.
{#project.tags}{.}{/project.tags}Terms and conditions
An array of active terms and conditions attached to the project. Each item has name, slug, content (plain text), and formatted_content (HTML).
{#project.terms_and_conditions.length>0}
{#project.terms_and_conditions}
{~~formatted_content}
{/project.terms_and_conditions}
{/project.terms_and_conditions.length>0}Note: terms and conditions must be accessed with the project. prefix. {#terms_and_conditions} without a prefix will not render.
Text blocks
Text blocks are pre-written content configured in ScopeStack settings. Access them under project.text_blocks using the block’s slug. Always use {~~} rich text syntax.
{~~project.text_blocks.signatures}
{~~project.text_blocks.project_acceptance}
{~~project.text_blocks.change_management}User-defined fields (custom project variables)
Custom variables defined in your account settings are available under project.user_defined_fields. Each field is accessed by its variable name and exposes a value property.
{project.user_defined_fields.project_number.value}
{project.user_defined_fields.duration_weeks.value}
{project.user_defined_fields.sow_id.value}Use conditionals to show content based on a custom variable’s value:
{#project.user_defined_fields.msa_on_file.value=="yes"}
MSA is on file.
{/project.user_defined_fields.msa_on_file.value=="yes"}Attachments and logos
| Field | Example tag | Notes |
|---|---|---|
| Account logo | {%project.account_logo_url} | Use {%} image syntax |
| Client logo | {%project.client.logo_url} | Use {%} image syntax |
| Attachments | see below | Array of attachment objects |
project.attachments is an array. Each attachment has a slug (derived from its type name) and a url.
{#project.attachments}
{url}
{/project.attachments}project_pricing fields
Top-level totals
These are the rollup financial figures for the entire project.
| Field | Example tag | Notes |
|---|---|---|
total_contract_revenue | {project_pricing.total_contract_revenue.to_currency} | PS revenue + MRR over contract length |
total_contract_value | {project_pricing.total_contract_value.to_currency} | Contract revenue (alias) |
total_service_revenue | {project_pricing.total_service_revenue.to_currency} | PS + MS + third party revenue |
total_contract_cost | {project_pricing.total_contract_cost.to_currency} | Total cost |
total_contract_profit | {project_pricing.total_contract_profit.to_currency} | Revenue minus cost |
total_contract_margin | {project_pricing.total_contract_margin} | Margin as a percentage string |
total_customer_payment | {project_pricing.total_customer_payment.to_currency} | Contract revenue minus payment credits |
total_location_service_revenue | {project_pricing.total_location_service_revenue.to_currency} | Sum of service revenue across all locations |
Currency fields require .to_currency when Include Formatting is enabled.
professional_services
The professional_services object contains phases, locations, and lines of business for PS work, plus summary figures.
| Field | Example tag | Notes |
|---|---|---|
revenue | {project_pricing.professional_services.revenue.to_currency} | Total PS revenue |
net_revenue | {project_pricing.professional_services.net_revenue.to_currency} | PS revenue after adjustments |
adjustment | {project_pricing.professional_services.adjustment.to_currency} | Price adjustment amount |
discounted? | {#project_pricing.professional_services.discounted?} | Exists in merge data but crashes the template parser if used in a tag. Use a numeric comparison on adjustment instead. |
any? | {#project_pricing.professional_services.any?} | Exists in merge data but crashes the template parser if used in a tag. Use a .length > 0 check on phases or services instead. |
Phases
project_pricing.professional_services.phases is an array. Each phase contains a list of services and rollup financials.
| Field | Notes |
|---|---|
name | Phase display name |
slug | Phase identifier slug (e.g., no_phase, onsite_implement_language) |
services | Array of service objects for this phase |
locations | Array of location objects for this phase |
total_revenue | Phase total revenue |
total_cost | Phase total cost |
service_revenue | Phase service revenue |
service_cost | Phase service cost |
pm_revenue | Phase PM revenue |
language_fields | Array of language field objects aggregated for this phase |
{#project_pricing.professional_services.phases}
{^slug=="no_phase"}Phase: {name}{/slug=="no_phase"}
{#services}
{name}
{~~formatted_service_description}
{/services}
{/project_pricing.professional_services.phases}Common phase slugs: no_phase, inhouse_prep_language, onsite_implement_language, remote_implement_language, post_support_langauge (note: the last slug has a typo in the platform — “langauge” — and must be used exactly as written).
Lines of business
project_pricing.professional_services.lines_of_business is an array of LOB objects. Each LOB has name, code, slug, services (array), and service_categories (array of service category objects).
Each service category under a LOB also has name, code, slug, and services.
Locations (within professional_services)
project_pricing.professional_services.locations is an array of location objects. Each location has name, address, services, and rollup financial fields (total_revenue, service_revenue, etc.).
managed_services
| Field | Example tag | Notes |
|---|---|---|
mrr | {project_pricing.managed_services.mrr.to_currency} | Monthly recurring revenue |
mrr_adjustment | {project_pricing.managed_services.mrr_adjustment.to_currency} | MRR price adjustment |
billing_frequency | {project_pricing.managed_services.billing_frequency} | e.g., “Monthly”, “Quarterly” |
billing_interval | {project_pricing.managed_services.billing_interval} | e.g., “month”, “quarter” |
billing_revenue | {project_pricing.managed_services.billing_revenue.to_currency} | MRR times billing months |
billing_discount | {project_pricing.managed_services.billing_discount.to_currency} | MRR adjustment times billing months |
billing_net_revenue | {project_pricing.managed_services.billing_net_revenue.to_currency} | Net MRR times billing months |
contract_start_date | {project_pricing.managed_services.contract_start_date.to_short_date} | Service start date |
contract_end_date | {project_pricing.managed_services.contract_end_date.to_short_date} | Calculated contract end date |
contract_length | {project_pricing.managed_services.contract_length} | Number of months |
discounted? | {#project_pricing.managed_services.discounted?} | Exists in merge data but crashes the template parser if used in a tag. Use a numeric comparison on mrr_adjustment instead. |
any? | {#project_pricing.managed_services.any?} | Exists in merge data but crashes the template parser if used in a tag. Use a .length > 0 check on services instead. |
services | see service fields | Array of managed service objects |
locations | array | MS locations, same structure as PS locations |
lines_of_business | array | Same LOB structure as PS |
resources
project_pricing.resources is an array of resource summary rows. One row per resource, plus a TOTAL row at the end.
| Field | Notes |
|---|---|
resource_name | Resource display name (or TOTAL for the summary row) |
resource_slug | URL-safe slug (e.g., senior_engineer). The total row uses project_total. |
external_name | Resource external name |
description | Resource description |
accounting_code | Resource accounting code |
line_of_business | Name of the LOB the resource is assigned to |
quantity | Total hours for this resource |
hourly_rate | Resource hourly rate |
hourly_cost | Resource hourly cost |
discounted_rate | Same as hourly_rate |
service_revenue | Revenue from services (excluding governance) |
pm_revenue | Revenue from governance/PM |
total_revenue | Service revenue plus PM revenue |
total | Total revenue (alias for total_revenue) |
To loop over resources and exclude the total row:
{#project_pricing.resources}
{^resource_slug=="project_total"}
{resource_name} | {quantity} hrs | {hourly_rate.to_currency}/hr | {total.to_currency}
{/resource_slug=="project_total"}
{/project_pricing.resources}To show only the total row:
{#project_pricing.resources}
{#resource_slug=="project_total"}
Total: {total.to_currency}
{/resource_slug=="project_total"}
{/project_pricing.resources}product
The project_pricing.product object contains hardware and product line items.
| Field | Notes |
|---|---|
items | Array of product line items (see fields below) |
revenue | Total product revenue |
cost | Total product cost |
categories | Array of unique category slugs present in the product list |
subcategories | Array of unique subcategory slugs present in the product list |
Each item in project_pricing.product.items:
| Field | Notes |
|---|---|
name | Product name |
description | Product description |
sku | SKU |
quantity | Quantity |
unit_of_measure | Unit of measure |
category | Category name |
category_slug | Category name as a slug |
subcategory | Subcategory name |
subcategory_slug | Subcategory name as a slug |
manufacturer_part_number | Manufacturer part number |
custom | Whether this is a custom product |
list_price | List price per unit |
unit_price | Selling price per unit |
unit_cost | Cost per unit |
vendor_discount | Vendor discount percentage |
markup | Markup percentage |
revenue | Extended selling price (quantity times unit_price) |
cost | Extended cost |
location_name | Name of the service location this product is assigned to |
location_address | Address of the service location |
user_defined_fields | Custom product variables, if defined |
project_governance
project_pricing.project_governance contains governance items (project management, overhead, etc.).
| Field | Notes |
|---|---|
items | Array of governance line items (see fields below) |
revenue | Total governance revenue |
cost | Total governance cost |
Each item in project_pricing.project_governance.items:
| Field | Notes |
|---|---|
description | Governance description |
external_name | External-facing name |
hourly_rate | Hourly billing rate |
hourly_cost | Hourly cost |
hours | Total hours |
resource | Resource name |
resource_slug | Resource name as a slug |
revenue | Revenue for this governance item |
cost | Cost for this governance item |
calculation_type | How the item is calculated (e.g., fixed_hours, percent_of_total) |
rate | Rate value — either a percentage string or a number, depending on calculation_type |
assign_effort_to_service | Boolean — whether effort counts toward service hours |
travel_and_expense
project_pricing.travel_and_expense contains expense line items.
| Field | Notes |
|---|---|
included? | Boolean — whether expenses are included in the contract price |
items | Array of expense items (see fields below) |
revenue | Total expense revenue |
cost | Total expense cost |
travel_hours | Total travel hours across all resource-rate expenses |
Each item in project_pricing.travel_and_expense.items:
| Field | Notes |
|---|---|
name | Expense name |
description | Expense description |
quantity | Quantity |
rate | Unit rate |
revenue | Extended revenue |
cost | Extended cost |
travel_hours | Travel hours (only present for resource-rate expenses) |
payment_credits
project_pricing.payment_credits contains applied payment credits.
| Field | Notes |
|---|---|
items | Array of credit items |
total | Total credit amount |
Each item:
| Field | Notes |
|---|---|
criteria | Array of strings describing the credit criteria |
formatted_criteria | HTML-formatted criteria (use {~~}) |
amount | Credit amount |
payment_source | Source of the credit |
description | Credit description |
third_party_services
project_pricing.third_party_services contains subcontractor quotes.
| Field | Notes |
|---|---|
revenue | Total third party revenue |
cost | Total third party cost |
profit | Total third party profit |
items | Array of quote objects (see fields below) |
Each item in items:
| Field | Notes |
|---|---|
description | Quote description |
total_hours | Total quoted hours |
cost | Quote cost |
revenue | Quote price |
hourly_revenue | Revenue per hour |
hourly_cost | Cost per hour |
profit | Quote profit |
line_of_business | LOB name |
service_category | Service category name |
service_type | Service type slug |
pricing_level | Either service or quote |
subcontractor | Vendor object with name and address fields |
services | Array of third party service line items |
Service fields
Service objects appear inside phase loops ({#services}), location phase loops, LOB loops, and managed services. A service can be either a professional service or a managed service.
The following fields are available on every service object.
Identification
| Field | Notes |
|---|---|
name | Service name |
uuid | Service UUID |
service_type | professional or managed (StringInquirer — supports service_type=="professional") |
task_source | Source of the service (e.g., standard, custom) |
sku | SKU, if set |
lob | Line of business name |
service_category | Service category name |
do_not_print | Boolean — if true, the service is marked to exclude from documents |
Hours and quantity
| Field | Notes |
|---|---|
quantity | Quantity (number of units) |
total_hours | Total hours for this service (quantity times hours per unit) |
extended_hours | Extended hours (accounts for overrides) |
override_hours | Override hours value, if set |
actual_hours | Actual hours logged, if tracked |
multiple? | Boolean — true when quantity is greater than 1 |
Pricing
| Field | Notes |
|---|---|
total_revenue | Total revenue including PM allocation |
total_cost | Total cost |
service_revenue | Service revenue (excluding PM) |
service_cost | Service cost |
pm_revenue | PM revenue allocated to this service |
unit_revenue | Revenue per unit (total_revenue divided by quantity) |
pricing_model | String: time_and_materials or fixed_fee |
pricing_strategy | Pricing strategy integer code |
target_margin | Target margin, if set |
advanced_pricing | Boolean — true if custom price or custom hours are set |
Resource
| Field | Notes |
|---|---|
resource_name | Resource name (or subcontractor name for third party services) |
resource_external_name | Resource external name |
resource_accounting_code | Resource accounting code |
third_party? | Boolean — true for subcontractor services |
Description
| Field | Notes |
|---|---|
service_description | Array of strings (paragraphs). Always iterate: {#service_description}{.}{/service_description} |
formatted_service_description | HTML-formatted description. Use {~~formatted_service_description}. At subservice level, use the array form instead to avoid duplication. |
Uniqueness and deduplication
| Field | Notes |
|---|---|
unique | Boolean — true for the first occurrence of this service name in the project |
unique? | Exists in merge data but crashes the template parser if used in a tag. Use unique (without ?) instead. |
unique_count | Number of times this service name appears in the project (set only when unique is true) |
Use unique to de-duplicate services when you want to show each service name only once:
{#services}
{#unique}
{name} (appears {unique_count} times)
{/unique}
{/services}Language fields on a service
Each service has a language_fields object keyed by language field slug. Access per-service language content directly without an outer loop:
{#services}
{name}
{#language_fields.deliverable.sentences}
{.}
{/language_fields.deliverable.sentences}
{#language_fields.customer.sentences}
{.}
{/language_fields.customer.sentences}
{/services}User-defined fields on a service
If your account has custom service variables defined, they appear under user_defined_fields on each service object, using the same structure as project-level variables.
Subservices
Each service has a subservices array. Subservices share most fields with services but have a reduced set.
| Field | Notes |
|---|---|
name | Subservice name |
quantity | Quantity |
service_description | Array of strings. Always use {#service_description}{.}{/service_description} at subservice level. Do not use {~~formatted_service_description} on subservices — it causes content duplication. |
total_revenue | Revenue |
total_cost | Cost |
service_revenue | Service revenue |
service_cost | Service cost |
resource_name | Resource name |
language_fields | Language fields object keyed by slug |
{#services}
{name}
{#service_description}{.}{/service_description}
{#subservices}
({quantity}) {name}
{#service_description}{.}{/service_description}
{/subservices}
{/services}locations fields
locations is a top-level array of service location objects. Use this for location-first document layouts. Each location includes all its phases and services pre-organized.
Location object fields
| Field | Notes |
|---|---|
name | Location name |
street | Street address line 1 |
street2 | Street address line 2 |
city | City |
state | State |
postal_code | Postal code |
country | Country name (full English name, not code) |
address | Full formatted address string (combines street, city, state, postal code, country) |
remote | Boolean — true for remote locations |
service_revenue | Total service revenue for this location |
phases | Array of phase objects containing services at this location |
lines_of_business | Array of LOB objects for this location |
products | Array of product items assigned to this location |
user_defined_fields | Custom location variables, if defined |
Phases within a location
Each phase object inside locations[].phases has:
| Field | Notes |
|---|---|
name | Phase name |
slug | Phase slug |
services | Services at this location in this phase |
user_defined_fields | Custom location variables for this phase-location combination |
Location-first template pattern
{#locations}
{name}
{address}
{#phases}
{^slug=="no_phase"}
Phase: {name}
{/slug=="no_phase"}
{#services}
{name}
{~~formatted_service_description}
{#subservices}
({quantity}) {name}
{#service_description}{.}{/service_description}
{/subservices}
{/services}
{/phases}
{/locations}language_fields
Language fields aggregate supplementary content (deliverables, assumptions, customer responsibilities, out-of-scope items) across all services. They exist at three scopes: top-level (entire project), per-phase, and per-service.
Top-level language_fields
language_fields is a top-level array. Each entry represents one language field type.
| Field | Notes |
|---|---|
name | Display name of the language field |
slug | Identifier slug |
introduction | Array of preamble strings |
formatted_introduction | HTML-formatted preamble. Use {~~formatted_introduction}. |
conclusion | Array of postamble strings |
formatted_conclusion | HTML-formatted postamble. Use {~~formatted_conclusion}. |
sentences | Array of all content sentences aggregated from services |
formatted_sentences | HTML-formatted sentences. Use {~~formatted_sentences}. |
phases | Array of phase objects, each with name, slug, sentences, and formatted_sentences |
managed_services | Object with sentences and formatted_sentences for MS-only content |
Standard language field slugs
| Slug | Section |
|---|---|
deliverable | Deliverables |
customer | Customer Responsibilities |
assumptions | Key Assumptions |
out | Out of Scope |
Note: the slugs are abbreviated. Use "out", not "out_of_scope". Use "customer", not "customer_responsibilities".
Top-level language field loop
{#language_fields}
{#slug=="deliverable"}
Deliverables
{~~formatted_introduction}
{#phases}
{#sentences}{.}{/sentences}
{/phases}
{~~formatted_conclusion}
{/slug=="deliverable"}
{#slug=="customer"}
Customer Responsibilities
{~~formatted_introduction}
{#sentences}{.}{/sentences}
{/slug=="customer"}
{/language_fields}Phase-scoped language content
To show language content grouped by phase, use the phases array within each language field:
{#language_fields}
{#slug=="deliverable"}
{#phases}
{name}
{#sentences}{.}{/sentences}
{/phases}
{/slug=="deliverable"}
{/language_fields}project_payments fields
Payment terms and schedule data live under project_payments.
Pricing model and payment terms
| Field | Notes |
|---|---|
pricing_model | String: fixed_fee, time_and_materials, mixed, or other. mixed is the default when no payment term is set. |
payment_terms.name | Payment terms name |
payment_terms.include_expenses | Boolean — whether expenses are included in pricing |
payment_terms.include_hardware | Boolean — whether hardware is included in pricing |
payment_terms.slug | Payment terms slug |
Currency objects
| Field | Notes |
|---|---|
default_currency.name | Default currency name |
default_currency.conversion_rate | Conversion rate |
project_currency.name | Project currency name |
project_currency.converted? | Boolean — true when project currency matches default |
Payment schedule
project_payments.schedule is an array of payment schedule items.
| Field | Notes |
|---|---|
description | Payment description or milestone |
amount_due | Amount due for this payment |
payment_date | Scheduled payment date (if set) |
{#project_payments.schedule.length>0}
Payment Schedule:
{#project_payments.schedule}
{description}: {amount_due.to_currency}
{#payment_date}{payment_date.to_short_date}{/payment_date}
{/project_payments.schedule}
{/project_payments.schedule.length>0}project_payments.arr_schedule follows the same structure but groups payments annually.
Conditional blocks by pricing model
{#project_payments.pricing_model=="fixed_fee"}
This is a fixed fee engagement.
{/project_payments.pricing_model=="fixed_fee"}
{#project_payments.pricing_model=="time_and_materials"}
This engagement is billed on a time and materials basis.
{/project_payments.pricing_model=="time_and_materials"}
{^project_payments.payment_terms.include_expenses}
Expenses are billed separately and are not included in this estimate.
{/project_payments.payment_terms.include_expenses}currency fields
currency is a top-level object with the project’s currency settings.
| Field | Notes |
|---|---|
name | Currency name (e.g., “US Dollar”) |
symbol | Currency symbol (e.g., ”$“) |
iso_code | ISO currency code (e.g., “USD”) |
conversion_rate | Exchange rate from default currency |
unit | Currency symbol for manual formatting (e.g., ”$”). Use as {currency.unit}{value*1|toFixed:2} when formatting is disabled. |
separator | Decimal separator character (e.g., ”.”) |
delimiter | Thousands grouping character (e.g., ”,“) |
precision | Number of decimal places for currency display |
survey_responses
survey_responses is a flat object keyed by response slug. Each value is the response text or a selected option value. Date-type responses are formatted according to account settings.
{survey_responses.implementation_scope}
{survey_responses.customer_size}Formatted fields summary
Every field that has a formatted_ counterpart is listed below. These fields contain HTML and must be rendered with {~~}.
| Raw field | Formatted field |
|---|---|
project.executive_summary (array) | project.formatted_executive_summary |
project.solution_summary (array) | project.formatted_solution_summary |
project.our_responsibilities (array) | project.formatted_our_responsibilities |
project.customer_responsibilities (array) | project.formatted_customer_responsibilities |
project.out_of_scope (array) | project.formatted_out_of_scope |
service_description (array) | formatted_service_description (service level only) |
language_fields[].introduction (array) | language_fields[].formatted_introduction |
language_fields[].conclusion (array) | language_fields[].formatted_conclusion |
language_fields[].sentences (array) | language_fields[].formatted_sentences |
project.terms_and_conditions[].content | project.terms_and_conditions[].formatted_content |
project_pricing.payment_credits.items[].criteria (array) | project_pricing.payment_credits.items[].formatted_criteria |
project.text_blocks.* | (text blocks are always HTML — always use {~~}) |
User-defined fields summary
Custom variables can be defined at multiple levels in ScopeStack. Each level’s variables appear under a user_defined_fields object on the corresponding item.
| Context | Access path |
|---|---|
| Project | {project.user_defined_fields.<name>.value} |
| Contact (primary) | {#project.primary_contact}...{user_defined_fields.<name>.value}...{/project.primary_contact} |
| Service | {#services}...{user_defined_fields.<name>.value}...{/services} |
| Product | {#project_pricing.product.items}...{user_defined_fields.<name>.value}...{/...} |
| Service location | {#locations}...{user_defined_fields.<name>.value}...{/locations} |
| Teammate | {#project.teammates}...{user_defined_fields.<name>.value}...{/project.teammates} |
The variable name in the path is the internal variable name set in your account’s project variables configuration, not the display label.