Skip to main content
This guide is for Phrase TMS plugins. It does not cover Phrase Strings, Language AI, or other Phrase products.
A TMS plugin is software that lives in a third-party system and connects that system to Phrase TMS. It sends source content for localization, monitors translation progress, and retrieves completed translations back into the source system.
New to this flow? Start with Quick Start, then return here for the reference sections.

What you’ll build

A production plugin usually follows this lifecycle:
  1. Select source content in the third-party system.
  2. Authenticate with Phrase Platform and call TMS APIs.
  3. Create a project from a project template.
  4. Create one or more jobs by uploading source content.
  5. Monitor job progress (webhooks, async status, or job-part polling).
  6. Export translated files when jobs are complete.
  7. Set job status (for example DELIVERED) after successful import.

Choose your path

Quick Start

Build a working baseline plugin flow in four steps.

Full Workflow

Add production behavior, monitoring, and hardening.

Error Handling & Limits

Handle failures, retries, limits, and operational safeguards.

Supported file types

Common file types used in plugin integrations:
File typeTypical use
XLIFF 1.2 / 2.0Standard localization exchange format
JSONStructured application or CMS content
XMLStructured content and metadata
MarkdownDocumentation and content workflows
Plain textSimple non-structured content
For import-specific parsing behavior, see file import settings.

Key concepts

TermDefinition
Project templateReusable configuration used to create projects with standard settings and workflow steps.
ProjectContainer for related translation jobs.
JobA translation unit for one file and one target language.
WorkflowOrdered translation/review steps that jobs move through.
asyncRequestIdentifier for asynchronous API operations that complete later.
LocaleSource or target language/region identifier used in localization.
Machine translationAutomated translation used in workflow steps, often combined with human review.
Markup languageStructured formats (for example HTML/XML) where text and tags must be handled safely.
SegmentationSplitting content into translatable segments used for progress and QA operations.
Translation memoryReusable translation database used to improve consistency and speed.

Core objects and data models (minimum)

Use these core object shapes in your plugin data layer.
ObjectPurposeKey fields to persist
Project TemplateDefines default project configurationuid, templateName, sourceLang, targetLangs[]
ProjectContainer for jobsuid, name, status, sourceLang, targetLangs[]
JobTranslation unit for a target languageuid, status, targetLang, workflowLevel, filename
Async RequestTracks asynchronous workid, action, dateCreated
Async ResponseCompletion payload for async workerrorCode, errorDesc, warnings[]
Representative JSON shapes:
{
  "projectTemplate": {
    "uid": "pt-uid-1",
    "templateName": "Website Default",
    "sourceLang": "en",
    "targetLangs": ["de", "fr"]
  },
  "project": {
    "uid": "proj-uid-1",
    "name": "Website Translation",
    "status": "NEW"
  },
  "job": {
    "uid": "job-uid-1",
    "status": "NEW",
    "targetLang": "de",
    "workflowLevel": 1
  },
  "asyncRequest": {
    "id": "async-req-1",
    "action": "PRE_ANALYSE"
  },
  "asyncResponse": {
    "errorCode": null,
    "errorDesc": null
  }
}

Next steps

Start Quick Start

Build the minimum end-to-end flow first.

Go to Full Workflow

Expand to a production-ready integration.

Add Live Preview

Add editor preview capabilities for translators.