When the GitHub Connector delivers translations back to your repository, it creates branches, commits, and pull requests. By default, Smartling uses standard naming conventions for these items. Custom Delivery templates let you customize these names and messages so you can match your organization's naming conventions and automation requirements.
Delivery message templates can be created in your account level settings under Integrations & Developer Tools > GitHub Custom Delivery Templates. You can then apply these templates to particular configuration sets across any GitHub Connector project in your account.
Accessing Custom Delivery Templates
To access the GitHub Custom Delivery Templates page:
- Click Account Settings > Integrations & Developer Tools.
- Select GitHub Custom Delivery Templates from the left sidebar.
The template list displays all existing templates with their name, template ID, last modified date, the number of configuration sets using each template, and an actions menu.
Creating a new template
- From the GitHub Custom Delivery Templates page, click Create New Template.
- Enter a Template Name to identify this template.
- Customize delivery messages for each connector mode and delivery type (see below).
- Click Save Template.
Delivery types
Within each connector mode, there are multiple delivery types that represent different delivery scenarios. Select a connector mode (PR Mode, Single Branch, or On Demand) and then select a delivery type from the left sidebar to customize its messages. The delivery types vary by mode.
Pull Request (PR) mode
PR Mode has the most delivery types, covering initial sync deliveries, PR-triggered deliveries, and export deliveries:
Initial Sync (first deliveries after enabling a configuration set)
- Initial Sync — Translations Delivered: First delivery after enabling the connector, when new strings were translated and Early Delivery is off.
-
Initial Sync — Source Files Synced: First sync found no new translatable strings — updates translation files to match non-translatable source file changes.
- Examples of these changes include: removing strings from a file, re-ordering strings within a file, adding/modifying non-translation elements such as comments.
- Initial Sync — Early Delivery: First delivery after enabling the connector, when Early Delivery is on and all strings are pre-published. A final delivery follows when translation is complete.
- Initial Sync — Final Delivery: Final translation delivery for the initial sync, replacing the earlier pre-published Early Delivery.
PR (deliveries triggered by feature pull requests)
- PR — Translations Delivered: Translations for a feature PR are complete and ready to deliver. Early Delivery is not enabled.
-
PR — Source Files Synced: A feature PR commit contained no new translatable strings — updates translation files to match non-translatable source file changes.
- Examples of these changes include: removing strings from a file, re-ordering strings within a file, adding/modifying non-translation elements such as comments.
- PR — Early Delivery: Pre-published translations for a feature PR are ready. Unlocks the feature PR sooner; a final delivery follows when translation is complete.
- PR — Final Delivery (PR Open): Final translations for a feature PR that is still open, replacing the Early Delivery which was already sent.
- PR — Final Delivery (PR Merged): Final translations delivered after the feature PR was already merged — Smartling delivers to the monitored branch instead.
Export (deliveries triggered by a manual export or scheduled task)
- Export — Manual: Syncs all source files and immediately pushes current translations to GitHub. Can target the monitored branch or any other branch in the repository.
- Export — Scheduled: Same as a manual export, run automatically on a schedule via Scheduled Tasks.
- Export — Instrumented Files: Exports source files with Smartling instrumentation markup for high-precision in-context translation matching.
Single Branch mode
Single Branch mode monitors the watched branch for commits rather than pull requests. The Commit delivery types handle follow-up deliveries triggered by new commits to the watched branch:
Initial Sync
- Initial Sync — Translations Delivered: First delivery after enabling the connector, when new strings were translated and Early Delivery is off.
-
Initial Sync — Source Files Synced: First sync found no new translatable strings — updates translation files to match non-translatable source file changes.
- Examples of these changes include: removing strings from a file, re-ordering strings within a file, adding/modifying non-translation elements such as comments.
- Initial Sync — Early Delivery: First delivery after enabling the connector, when Early Delivery is on and all strings are pre-published. A final delivery follows when translation is complete.
- Initial Sync — Final Delivery: Final translation delivery for the initial sync, replacing the earlier pre-published Early Delivery.
Commit (deliveries triggered by commits to the monitored branch)
- Commit — Translations Delivered: Translations for a commit to the monitored branch are complete and ready to deliver. Early Delivery is not enabled.
-
Commit — Source Files Synced: A commit to the monitored branch contained no new translatable strings — updates translation files to match non-translatable source file changes.
- Examples of these changes include: removing strings from a file, re-ordering strings within a file, adding/modifying non-translation elements such as comments.
- Commit — Early Delivery: Pre-published translations for a monitored branch commit are ready. A final delivery follows when translation is complete.
- Commit — Final Delivery: Final translations for a monitored branch commit, replacing the earlier Early Delivery.
Export (deliveries triggered by a manual export or scheduled task)
- Export — Manual: Syncs all source files and immediately pushes current translations to GitHub. Can target the monitored branch or any other branch in the repository.
- Export — Scheduled: Same as a manual export, run automatically on a schedule via Scheduled Tasks.
- Export — Instrumented Files: Exports source files with Smartling instrumentation markup for high-precision in-context translation matching.
On Demand mode
On Demand mode only includes export delivery types, since translations are delivered only when explicitly triggered:
- Export — Manual: Syncs all source files and immediately pushes current translations to GitHub. Can target the monitored branch or any other branch in the repository.
- Export — Scheduled: Same as a manual export, run automatically on a schedule via Scheduled Tasks.
- Export — Instrumented Files: Exports source files with Smartling instrumentation markup for high-precision in-context translation matching.
Customizable fields
All connector modes and delivery types include the same four customizable fields: Branch Name, Commit Message Prefix, PR Title, and PR Description. However, the available template variables and default values differ by mode (see notes below).
Branch Name
The name of the branch Smartling creates when delivering translations. The branch name must include at least one high-entropy token (such as {{jobUid}} or {{timestamp}}) to ensure uniqueness.
Default example (PR Mode / Single Branch): smartling-translation-completed-{{jobUid}}-from-{{baseBranch}}
Default example (On Demand): smartling-translations-{{timestamp}}
Available variables (PR Mode): {{jobUid}}, {{configSetUid}}, {{projectId}}, {{baseBranch}}, {{timestamp}}, {{pullRequestNumber}}
Available variables (Single Branch): {{jobUid}}, {{configSetUid}}, {{projectId}}, {{baseBranch}}, {{timestamp}}, {{commit}}
Available variables (On Demand): {{configSetUid}}, {{projectId}}, {{baseBranch}}, {{timestamp}}
Commit Message Prefix
A short prefix prepended to Smartling's standard commit message. Use this to add context or text that your CI/CD pipeline can recognize.
PR Title
The title of the pull request Smartling creates. Customize this to match your team's PR naming conventions or to include information your review process requires.
Default example (PR Mode): Smartling translations are completed for PR# {{pullRequestNumber}} from {{baseBranch}}
Default example (Single Branch): Smartling translations are completed for commit {{commit}} from {{baseBranch}}
Default example (On Demand): Smartling on-demand translation delivery from {{baseBranch}}
Available variables (PR Mode): {{jobUid}}, {{jobName}}, {{jobUrl}}, {{configSetUid}}, {{configSetName}}, {{configSetUrl}}, {{organization}}, {{repository}}, {{repositoryUrl}}, {{projectId}}, {{timestamp}}, {{baseBranch}}, {{headBranch}}, {{pullRequestNumber}}, {{pullRequestName}}
Available variables (Single Branch): {{jobUid}}, {{jobName}}, {{jobUrl}}, {{configSetUid}}, {{configSetName}}, {{configSetUrl}}, {{organization}}, {{repository}}, {{repositoryUrl}}, {{projectId}}, {{timestamp}}, {{baseBranch}}, {{commit}}
Available variables (On Demand): {{configSetUid}}, {{configSetName}}, {{configSetUrl}}, {{organization}}, {{repository}}, {{repositoryUrl}}, {{projectId}}, {{timestamp}}, {{baseBranch}}
PR Description
The body content of the pull request. This field supports rich text formatting, including headings, bold, italic, underline, strikethrough, lists, block quotes, links, images, code blocks, and tables. Use this to provide reviewers with context about the translation delivery.
Available variables (PR Mode): {{jobUid}}, {{jobName}}, {{jobUrl}}, {{configSetUid}}, {{configSetName}}, {{configSetUrl}}, {{organization}}, {{repository}}, {{repositoryUrl}}, {{projectId}}, {{timestamp}}, {{baseBranch}}, {{headBranch}}, {{pullRequestNumber}}, {{pullRequestName}}
Available variables (Single Branch): {{jobUid}}, {{jobName}}, {{jobUrl}}, {{configSetUid}}, {{configSetName}}, {{configSetUrl}}, {{organization}}, {{repository}}, {{repositoryUrl}}, {{projectId}}, {{timestamp}}, {{baseBranch}}, {{commit}}
Available variables (On Demand): {{configSetUid}}, {{configSetName}}, {{configSetUrl}}, {{organization}}, {{repository}}, {{repositoryUrl}}, {{projectId}}, {{timestamp}}, {{baseBranch}}
Note: Smartling always appends standard content to the end of every PR description. This content cannot be removed.
- PR Mode: "Please review this translation pull request. The relevant Smartling translation job is available here - {{jobUrl}}"
- Single Branch: "Please review this translation pull request. The relevant Smartling translation job is available here - {{jobUrl}} Here is a link to the source commit which triggered translation - {{repositoryUrl}}/commit/{{commit}}"
- On Demand: "Please review this manually triggered translation push from the configuration set '{{configSetName}}' in your Smartling project {{configSetUrl}}"
Template variables reference
Insert template variables into your branch names, PR titles, and PR descriptions to dynamically include relevant information. Click a variable chip below a field to insert it.
| Variable | Description | Available In | Modes |
{{jobUid}} |
The unique identifier of the translation job | Branch Name, PR Title, PR Description | PR Mode, Single Branch |
{{jobName}} |
The display name of the translation job | PR Title, PR Description | PR Mode, Single Branch |
{{jobUrl}} |
A link to the translation job in Smartling | PR Title, PR Description | PR Mode, Single Branch |
{{configSetUid}} |
The unique identifier of the configuration set | Branch Name, PR Title, PR Description | All modes |
{{configSetName}} |
The display name of the configuration set | PR Title, PR Description | All modes |
{{configSetUrl}} |
A link to the configuration set in Smartling | PR Title, PR Description | All modes |
{{organization}} |
The GitHub organization name | PR Title, PR Description | All modes |
{{repository}} |
The GitHub repository name | PR Title, PR Description | All modes |
{{repositoryUrl}} |
A link to the GitHub repository | PR Title, PR Description | All modes |
{{projectId}} |
The Smartling project ID | Branch Name, PR Title, PR Description | All modes |
{{timestamp}} |
A timestamp for the delivery | Branch Name, PR Title, PR Description | All modes |
{{baseBranch}} |
The name of the monitored content branch | Branch Name, PR Title, PR Description | All modes |
{{headBranch}} |
The name of the feature branch (head branch of the pull request) | PR Title, PR Description | PR Mode |
{{pullRequestNumber}} |
The number of the pull request that triggered translation | Branch Name, PR Title, PR Description | PR Mode |
{{pullRequestName}} |
The title of the pull request that triggered translation | PR Title, PR Description | PR Mode |
{{commit}} |
The commit SHA that triggered translation | Branch Name, PR Title, PR Description | Single Branch |
Note: Job-related variables ({{jobUid}}, {{jobName}}, {{jobUrl}}) are not available in On Demand mode because On Demand deliveries are not tied to a specific translation job. PR-specific variables ({{headBranch}}, {{pullRequestNumber}}, {{pullRequestName}}) are only available in PR Mode. The {{commit}} variable is only available in Single Branch mode.
Managing templates
Each template in the list has an actions menu (...) with the following options:
- Preview: View the template's settings in read-only mode.
- Edit: Open the template editor to modify delivery messages.
- Rename: Change the template name.
- Duplicate: Create a copy of the template.
- Push to config sets: Apply the template to one or more configuration sets.
- Delete: Remove the template.
The Config Set Using column shows how many configuration sets are currently using each template.
Applying a template to configuration sets
There are two ways to apply a template to a configuration set:
From the templates list (push to config sets):
- Click the actions menu (...) next to the template you want to apply.
- Select Push to config sets.
- Select the configuration sets you want to update. Each configuration set is listed with its name and connector mode (e.g., Pull Request, Single Branch).
- Click Push.
All delivery message fields will be overwritten with values from the template. This cannot be undone.
From a configuration set (import from template):
You can also apply a template from within a configuration set's Delivery Custom Messages settings by clicking Import from Template. For details, see Customize GitHub Connector Configuration Sets.
Editing a template
- Click the actions menu (...) next to the template and select Edit.
- Make your changes and click Save Template.
Editing a template does not automatically update configuration sets that previously imported it. To push updated values, use Push to config sets.
You will see an outdated label next to a configuration set if the template has been edited since it was last pushed to the configuration set.
Deleting a template
- Click the actions menu (...) next to the template and select Delete.