Generate quotes using the template engine
Overview
Smartcat lets you generate quotes in PDF format. You can use the standard template or create your own templates with the Smartcat Template Engine. You can build a single template for all clients or an individual template for each client.
Data model
The following data model is used to generate quotes in PDF format. You can use these objects and their fields to build custom templates with the Smartcat Template Engine.
Company
Information about the company that issued the quote.
| Field name | Data type | Description |
|---|---|---|
| Name | string | Company name as in profile |
| LegalName | string | Legal name |
The standard template uses the company's legal name if available. Otherwise, the name from the company's profile is used:
<<if [Company.LegalName != null]>>
<<[Company.LegalName]>><<else>><<[Company.Name]>><</if>>
Client
Client details taken from the client card.
| Field name | Data type | Description |
|---|---|---|
| Name | string | Name |
| LegalName | string | Legal company name |
| Vat | string | VAT number or other tax ID |
| Kpp | string | KPP (only for Russian legal entities) |
| MainContact | ClientContact | Primary contact's name |
| AdditionalContacts | ClientContact[] | Other contacts' names |
| Country | string | 3-letter country code |
| Address | string | Client's legal address |
| VendorManager | Manager | Your manager who works with a client |
| Industry | string | Client's industry |
| Website | string | Client's website |
| Language | string | Language for communication |
| Comment | string | Comment taken from a client card |
ClientContact
| Field name | Data type | Description |
|---|---|---|
| FullName | string | Contact's full name |
| string | Contact's email address | |
| Phone | string | Contact's phone number |
| Position | string | Contact's position |
| Comment | string | Comment left for a contact in a client card |
Manager
| Field name | Data type | Description |
|---|---|---|
| FullName | string | Your manager's full name |
| string | Your manager's email address | |
| PhoneNumber | string | Your manager's phone number |
Below is an example of how to use the Client object:
<<[Client.Name]>>
VAT: <<[Client.Vat]>>
<<if [Client.MainContact != null]>>Main contact: <<[Client.MainContact.FullName]>><</if>>
<<if [Client.AdditionalContacts.Any()]>>Additional contacts:
<<foreach [a in Client.AdditionalContacts]>>
<<[a.FullName]>> <<link ["mailto:" + a.Email] [a.Email]>>
<<if [a.PhoneNumber != null]>> <<link ["tel:" + a.PhoneNumber] [a.PhoneNumber]>>
<</if>>
<</foreach>>
<</if>>
Project
Project details.
| Field name | Data type | Description |
|---|---|---|
| Name | string | Name |
| Number | string | Project number |
| Filenames | string[] | File names in a project, including extensions |
| SourceLanguage | string | Source language |
| TargetLanguages | string | Target languages |
| WorkflowStages | string | Workflow stages |
| Managers | Manager[] | List of project managers |
Manager
| Field name | Data type | Description |
|---|---|---|
| FullName | string | Project manager's full name |
| string | Email address | |
| PhoneNumber | string | Phone number |
Below is an example of how to use the Project object. This displays the details of the first two managers if they are included in the list of managers:
<<if [Project.Managers.Any()]>>
<<foreach [m in Project.Managers.Take(2)]>><<[m.FullName]>>,
<<[m.Email]>>
<<next>><<if [m.FullName != null]>><<[m.FullName]>>,
<<[m.Email]>><</if>><</foreach>>
<</if>>
Quote
Quote details.
| Field name | Data type | Description |
|---|---|---|
| Number | string | Quote number |
| TotalCost | decimal | Total project cost |
| Currency | string | Alphabetic currency code |
| CurrencySymbol | string | Currency sign |
| DueDate | DateTime | Quote validity |
| ClientContactName | string | Contact person name used in a quote |
| ClientContactEmail | string | Contact email address used in a quote |
| Services | Service[] | List of services |
Service
| Field name | Data type | Description |
|---|---|---|
| Name | string | Service name |
| SourceLanguage | string | Source language |
| TargetLanguage | string | Target language |
| UnitCount | decimal | Number of service units |
| Rate | decimal | Rate per unit |
| TotalCost | decimal | Total service cost |
| UnitType | string | Type of units payable |
| DetalizationRows | DetalizationRow[] | List of elements included in the service breakdown |
DetalizationRow
| Field name | Data type | Description |
|---|---|---|
| Name | string | Unit category name, for example: 102% matches, repetitions |
| UnitCount | decimal | Number of units within a breakdown element |
| Rate | decimal | Discounted rate per payable unit |
| FullRate | decimal | Full rate per payable unit |
| TotalCost | decimal | Total cost of a breakdown element |
| UnitType | string | Type of units payable |
Below is an example of how to use the Quote object. This displays the list of services, specifying the source and target languages:
<<foreach [s in Quote.Services]>><<[s.Name]>>
<<if [s.TargetLanguage != null]>><<[s.SourceLanguage]>> - <<[s.TargetLanguage]>><</if>>
<</foreach>>
FAQs
Can I customize the layout of quotes sent to clients?
Yes, using the Smartcat Template Engine you can build a custom quote template — either one shared template for all clients or individual templates per client.
What information is available for building a quote template?
The Company, Client, Project, and Quote data objects, which include company/client legal details, project languages and files, and quote line items with rates and cost breakdowns.
Can a quote template list every service and its language pair?
Yes — using a foreach loop over Quote.Services, you can iterate through each service and print its source/target language pair and cost.
What if a client has multiple contacts? Can the quote list all of them?
Yes — Client.AdditionalContacts is an array of ClientContact objects, so a template can loop through and print each additional contact's name, email, and phone.
Want to learn more?
See how Smartcat can transform your localization workflow.
Still need help?
Our support team responds within one business day.