This article guides Workfront administrators through setting up the Smartling connector, including creating a Smartling project, configuring Workfront credentials with a dedicated user, creating custom forms for translation requests, connecting Smartling to Workfront, and configuring connector settings.
Please note that this connector is a paid product. For pricing information, please reach out to your Smartling Customer Success Manager.
Prerequisites
Before beginning the configuration, ensure you have:
- Smartling account with project creation permissions (Account Owner or Project Manager role)
- Workfront account with administrator privileges
- Ability to create new users in Workfront (recommended for creating a dedicated user for the connector)
- Basic understanding of Workfront custom forms and projects
Step 1: Create a Smartling Connector project
1.1 Create the project
- Create a new Project in Smartling
- Select the Project type “Connector”
- Select "Workfront" as your connecting platform
- Choose your desired linguistic package or create a new one, and add the source and target languages.
Once the project has been created, ensure that all workflows, linguistic assets, and team members are set up correctly. In particular, we recommend checking that the default workflows for all of your target languages are set up according to your preferences. If desired, these workflows will be used automatically for all translation requests with the connector.
1.2 Download public key
The Smartling integration provides a public key, which is required for establishing secure communication between Smartling and Workfront.
- Navigate to the Settings tab in your new Smartling project
- Click Workfront Settings
- Click Connect to Workfront
- Locate and click "Download public key here" at the top of the dialog
- Save the file as “certificate_pub.crt” to your local machine. You'll need it in Step 2.
Step 2: Configure Workfront credentials
2.1 Create a dedicated integration user
The Smartling connector uses the Workfront API to interact with Workfront projects and documents. You will need to create an OAuth application and API key. The connector will execute all actions on behalf of the Workfront user account used to create the OAuth application. For security and audit purposes, we strongly recommend creating a dedicated user account for the Smartling integration.
Contact your Workfront administrator to create the user account. To configure the credentials for the Smartling integration, the newly created user must have Workfront administrator privileges.
We recommend using "Smartling" as the first name and "Connector" as the last name for this user account.
The dedicated integration user must not be used to make changes in Workfront and cannot be used for any other Workfront processes beyond the operation of the Smartling connector.
All connector actions appear as being performed by this user in Workfront’s audit logs. Therefore, it is recommended to name the user "Smartling Connector" to easily identify connector activity.
If you have any questions or need further assistance, please refer to the Workfront documentation.
2.2 Create OAuth2 application
Please log in to Workfront or "Log In As" the user who will be used for the Smartling connector. Their name will be visible as the documents uploader.
The Smartling integration uses server authentication (JWT flow) to connect to the Workfront API. Please complete the steps described in the Workfront documentation. Below you can find an example of how to fill in the form.
- Name for the new application: Smartling Connector
- Create a Client Secret by clicking the “Add client secret” button. We recommend adding a note to this secret in the format “Project <aabbcc>”
- Copy the “Client Secret”; you will need it later to configure Smartling
- Add a public key (upload the “certificate_pub.crt” file from Step 1.2)
- After adding the key, you may notice that the input boxes are empty. Don't worry, the key was added correctly, and the values will be displayed after you save the OAuth app and refresh the page.
- Click the “Save” button and refresh the page
2.3 Collect required information
After saving, gather the following information from the OAuth2 application page:
- Client ID
- Customer ID
- User ID
- Workfront Domain (e.g., https://organization.my.workfront.com)
Keep these values in a secure location; you'll need them for Step 4.
Step 3: Set up a custom form in Workfront
Custom forms enable users to specify translation requirements directly within Workfront projects or tasks.
Below is an example of a custom form with Smartling fields. You can create a new custom form or extend an existing one.
3.1 Create the custom form
- Navigate to Setup > Custom Forms
- Click "New Custom Form"
- Select "Project" or "Task" (depending on your workflow)
- Name the form: "Smartling Request Translation" (customizable)
3.2 Add form fields
Add the following fields. For each field, the Label is the display text users see on the form (customizable); the Name is the technical identifier read by the connector.
| Field | Type | Default Name | Required |
|---|---|---|---|
| Smartling Project | Single-Select Dropdown | smartlingProjectId |
Yes |
| Target Languages | Multi-Select Dropdown | smartlingTargetLocales |
Yes |
| Job Name | Single Line Text | smartlingJobName |
No |
| Job Authorization | Single-Select Dropdown or any text field | smartlingJobAuthorization |
No |
| Job Description | Paragraph Text or any text field | smartlingJobDescription |
No |
| Locale Workflow Override | Paragraph Text | smartlingLocaleWorkflows |
No |
| Rush Job | Single-Select Dropdown or any text field | smartlingJobRush |
No |
| Notification Team | Multi-Select Dropdown (or any text field) | (any name) | No |
Field configuration notes:
-
Smartling Project: choices are Smartling project names (label) paired with their project UIDs (value)
-
Target Languages: choices are locale display names (label) paired with locale codes (value)
-
Job Name
-
Job Authorization: add choices with values
trueandfalse -
Job Description
-
Locale Workflow Override: one entry per line in
localeCode:workflowUidformat; overrides default locale workflows per request -
Rush Job: add choices with values
trueandfalse -
Notification Team: holds the Workfront team name(s) to notify on job events; the field name is mapped in Step 5.2
Step 4: Connect Smartling to Workfront
4.1 Establish the connection
- Return to your Smartling project
-
Navigate to “Workfront Settings” in the Smartling project and click Connect to Workfront. Enter the credentials collected in Step 2.3:
- Workfront URL
- Client ID
- Client Secret
- Customer ID
- User ID
- Click Test Connection and then save it
- Complete the configuration in the second step of the dialog
4.2 Complete connection setup
After a successful connection, a second dialog appears with core operational settings:
| Setting | Description |
|---|---|
| Job Name Template | Template for Smartling job names. Supports ${object.field} tokens resolved at runtime. See the token reference below. |
| Mode |
Translated documents in Projects: connector monitors Workfront projects. Translated documents in Tasks: connector monitors Workfront tasks. |
| Status key when requesting translation | The Workfront object status that triggers a translation request (e.g., Current). Only objects transitioning to this status via webhook will be picked up. |
Click Save to complete the connection.
Job name template token reference:
Available tokens depend on the asset type being translated.
| Token | Description | Projects mode | Tasks mode |
|---|---|---|---|
${project.id} |
Workfront project ID | ✓ | ✓ |
${project.name} |
Workfront project name | ✓ | ✓ |
${project.referenceNumber} |
Workfront project reference number | ✓ | ✓ |
${project.objCode} |
Object code (PROJ) |
✓ | ✓ |
${task.id} |
Workfront task ID | — | ✓ |
${task.name} |
Workfront task name | — | ✓ |
${task.taskNumber} |
Task number within the project | — | ✓ |
${task.referenceNumber} |
Workfront task reference number | — | ✓ |
${task.objCode} |
Object code (TASK) |
— | ✓ |
${portfolio.id} |
Workfront portfolio ID | ✓ (if linked) | ✓ (if linked) |
${portfolio.name} |
Workfront portfolio name | ✓ (if linked) | ✓ (if linked) |
${portfolio.objCode} |
Object code (PORT) |
✓ (if linked) | ✓ (if linked) |
Example templates:
${project.name}
${project.name} - ${task.name}
WF-${project.referenceNumber}4.3 Configure language mappings
As soon as you connect Smartling to your Workfront environment, you will notice an additional configuration in the Workfront Settings. You must enter Workfront language codes into the left column of the Language Configuration. Do not forget to save your changes.
Important: When you configured the smartlingTargetLocales field in Workfront, you filled out two input boxes for each language. The first was the label (for example, "de-Germany"), followed by the name ("de-DE"). The Smartling Language Configuration form should be filled out with the language name.
The following is an example of how a typical configuration looks.
Step 5: Configure connector settings
After connecting, open Workfront Settings in your Smartling project. Settings are organized into tabs.
5.1 General
Core settings controlling how content flows from Workfront into Smartling.
| Setting | Description |
|---|---|
| Job name template | Template for Smartling job names. Supports ${object.field} tokens (see token reference in Step 4.2). Can be updated here after initial setup. |
| Auto-authorize content | Default authorization behavior when the Job authorization field on the request form is not set up or is not populated. When enabled, newly imported content is automatically authorized for translation. |
5.2 Request form
Maps the Workfront custom form (created in Step 3) to the connector. The connector reads translation parameters from these fields at request time.
| Setting | Description |
|---|---|
| Custom form name | Name of the Workfront custom form attached to translation requests. If this form is not assigned to the project or task, the request will be ignored. |
| Smartling project field | Form field name that holds the Smartling project identifier |
| Target language field | Form field name that holds target locale codes |
| Locale workflow field | Form field name for per-request locale workflow overrides. If not set, falls back to Locale workflows in Content settings (5.7). If that is also empty, project default workflows are used. |
| Job name field | Form field name that holds a per-request job name template. If not set or left empty on the form, falls back to the Job name template in General settings (5.1). |
| Job description field | Form field name that holds the job description |
| Job authorization field | Form field name whose boolean value marks the job as auto-authorized. If not set or left empty on the form, falls back to Auto-authorize content in General settings (5.1). |
| Rush job field | Form field name that flags a request as a Rush Job. A Rush Job targets ~50% faster turnaround and is available for Smartling Language Services-managed workflow steps. If not set or left empty on the form, it is treated as false. |
| Notification team field | Form field name that holds the Workfront team to notify on job events. If not set, notifications will not tag any team. |
| Authorized team | Workfront team name whose submissions will be processed by Smartling. If specified and the submitter does not belong to this team, the Workfront object status will be rolled back. Leave empty to accept submissions from all teams. |
Field names in this tab must match the Name values (not Labels) of the corresponding Workfront custom form fields.
5.3 File filters
Defines which Workfront files Smartling picks up for translation, and where translated files are written back.
At least one file filter must be configured. Without a filter, no documents will be uploaded for translation. Filters are evaluated in order, and the first matching filter wins.
Each filter is a JSON object. The default configuration picks up all files from Source Files and delivers translations to Translated Files:
{
"fileType": null,
"includes": [
"Source Files/*.*"
],
"excludes": [],
"translationPath": "${originalFile.path.replaceAll('^Source Files/', 'Translated Files/')}/${originalFile.baseName}_${locale}.${originalFile.extension}",
"directives": {}
}| Field | Description |
|---|---|
fileType |
Smartling file type to assign to matched files. If null, the connector infers the type from the file extension; if the extension is unrecognized, the file will not be submitted for translation. |
includes |
List of glob patterns matching source files to pick up (e.g., Source Files/*.*) |
excludes |
List of glob patterns for files to skip (e.g., Source Files/*.xlsx) |
translationPath |
Groovy expression defining where translated files are written. Tokens: ${originalFile.path}, ${originalFile.baseName}, ${originalFile.extension}, ${locale}
|
directives |
Map of Smartling API directives applied to files matched by this filter. Supported directives are file-type-specific; refer to the Supported File Types documentation for each type. Only meaningful when fileType is explicitly set. |
Multiple filters can be configured to handle different file types or folders with different translation paths.
PDF files require special handling. See PDF Files. Smartling automatically converts PDFs to Microsoft Word format for translation, so translated files are delivered as .docx. The translationPath must reflect this:
{
"fileType": "PDF",
"includes": [
"Source Files/*.pdf"
],
"excludes": [],
"translationPath": "${originalFile.path.replaceAll('^Source Files/', 'Translated Files/')}/${originalFile.baseName}_${locale}.${originalFile.extension}.docx",
"directives": {}
}Smartling Excel files (xlsx_template) support column-level directives for controlling translation behavior:
{
"fileType": "xlsx_template",
"includes": [
"Source Files/*.xlsx"
],
"excludes": [],
"translationPath": "${originalFile.path.replaceAll('^Source Files/', 'Translated Files/')}/${originalFile.baseName}_${locale}.${originalFile.extension}",
"directives": {
"smartling.character_limit_column": "C",
"smartling.instruction_column": "B",
"smartling.locale_column_header_format": "${locale.id}",
"smartling.no_translate_hidden_elements": "rows,columns,sheets"
}
}5.4 DTP
Folder settings for DTP/Reference Materials workflows.
| Setting | Description |
|---|---|
| Reference materials folder | Name of the Workfront folder whose files are uploaded as attachments to the Smartling translation job for translators to reference (e.g., Related Files). |
| DTP folder | Name of the Workfront folder where job attachments added by translators (post-translation) are synced (e.g., Translated Files). |
Leave both fields empty if your workflow does not use DTP or reference materials.
5.5 Job field mapping
Copies values from Workfront custom fields into Smartling job custom fields at job creation time.
Click + Add mapping to add a row. Each row contains:
| Column | Description |
|---|---|
| Workfront field | Name of the Workfront custom form field to read from |
| Smartling field | Name of the Smartling job custom field to write to |
| Value mode |
Raw Value: copies the stored value as-is.Dropdown Label: uses the display label of a dropdown choice instead of its stored value. |
5.6 Tracking tasks
When enabled, the connector creates a tree of Workfront tasks that mirrors Smartling translation job progress.
Task tree structure (per Workfront object per job):
Tracking Smartling
├── Job Created ← marked complete immediately
└── Language Summation - {locale} ← one per target locale
├── TSP Translation Progress - Translation - {locale}
└── TSP Translation Progress - Upload file to Workfront - {locale}Settings:
| Setting | Description |
|---|---|
| Enabled | Toggle to activate tracking task creation |
| Job form | JSON defining the Workfront custom form template applied to the root translation job task |
| Locale form | JSON defining the Workfront custom form template applied to each locale-specific task |
Form template structure:
{
"name": "Smartling Tracking Form",
"mapping": {
"Smartling Job Name": "${jobName}",
"Smartling Job Cancelled": "${jobCanceled}"
}
}-
name: exact name of the Workfront custom form (category) to attach to the tracking task -
mapping: map of Workfront field name to value template; templates support${placeholder}syntax
Available tokens:
| Token | Value |
|---|---|
${jobName} |
Smartling job name |
${translationJobUid} |
Smartling job UID |
${smartlingProjectId} |
Smartling project ID |
${sourceLocale} |
Source locale code |
${targetLocales} |
All target locales as a comma-separated string |
${targetLocales:array} |
All target locales as a JSON array |
${targetLocale} |
Current locale (locale-form only) |
${jobCanceled} |
true if the job was canceled |
Full example including a rich-text field with a clickable link to the Smartling job:
{
"name": "Smartling Tracking Form",
"mapping": {
"Smartling Job Name": "${jobName}",
"Smartling Job Number": "${translationJobUid}",
"Smartling Job Link": "{\"blocks\":[{\"key\":\"sl001\",\"text\":\"SmartlingJob\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":0,\"length\":13,\"key\":0}],\"data\":{}}],\"entityMap\":{\"0\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"url\":\"https://dashboard.smartling.com/app/projects/${smartlingProjectId}/account-jobs/${smartlingProjectId}:${translationJobUid}\"}}}}",
"Smartling Job Cancelled": "${jobCanceled}",
"Target Languages": ["${targetLocales:array}"]
}
}Rich text fields (e.g., MKT Smartling Links) use Workfront's draft-js JSON format. The URL is constructed using the ${smartlingProjectId} and ${translationJobUid} tokens.
Tracking tasks are created when a Smartling job is created and updated as translation progresses.
5.7 Content settings
| Setting | Description |
|---|---|
| External source locale | Source language locale code (default: en-US). Currently used as the value of the ${sourceLocale} token in tracking task templates. |
| Locale workflows | JSON map of Smartling locale codes to workflow UIDs. Overrides the project-default workflow for each locale. Leave empty {} to use project defaults. |
Locale workflows format:
{
"de-DE": "2b91c391d71a",
"fr-FR": "3c82d402e82b"
}You can find a workflow's UID by navigating to the Settings tab in your project > Workflows > click the ellipsis menu for a workflow and select Edit > the UID is listed under the Name field.
Additional Smartling settings
Talk to your Customer Success Manager or Solution Architect about options regarding auto-authorization, translation retrieval type, file versioning, and capturing custom placeholders. For more details, see the Smartling Hosted Connector Configuration Overview.
Now, you're ready to start Translating with the Adobe Workfront Connector.