> ## Documentation Index
> Fetch the complete documentation index at: https://developers.phrase.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Understand what a Phrase TMS plugin is, what you will build, and where to start.

<Info>This guide is for <strong>Phrase TMS plugins</strong>. It does not cover Phrase Strings, Language AI, or other Phrase products.</Info>

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.

<Tip>New to this flow? Start with <a href="/en/guides/build-a-tms-plugin/quick-start">Quick Start</a>, then return here for the reference sections.</Tip>

## 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

<CardGroup cols={3}>
  <Card title="Quick Start" icon="rocket" href="/en/guides/build-a-tms-plugin/quick-start">
    Build a working baseline plugin flow in four steps.
  </Card>

  <Card title="Full Workflow" icon="workflow" href="/en/guides/build-a-tms-plugin/full-integration-workflow">
    Add production behavior, monitoring, and hardening.
  </Card>

  <Card title="Error Handling & Limits" icon="shield-alert" href="/en/guides/build-a-tms-plugin/error-handling-and-limits">
    Handle failures, retries, limits, and operational safeguards.
  </Card>
</CardGroup>

## Supported file types

Common file types used in plugin integrations:

| File type       | Typical use                           |
| --------------- | ------------------------------------- |
| XLIFF 1.2 / 2.0 | Standard localization exchange format |
| JSON            | Structured application or CMS content |
| XML             | Structured content and metadata       |
| Markdown        | Documentation and content workflows   |
| Plain text      | Simple non-structured content         |

For import-specific parsing behavior, see [file import settings](https://support.phrase.com/hc/en-us/sections/5709618056604-File-Import-Settings).

## Key concepts

| Term                | Definition                                                                                |
| ------------------- | ----------------------------------------------------------------------------------------- |
| Project template    | Reusable configuration used to create projects with standard settings and workflow steps. |
| Project             | Container for related translation jobs.                                                   |
| Job                 | A translation unit for one file and one target language.                                  |
| Workflow            | Ordered translation/review steps that jobs move through.                                  |
| `asyncRequest`      | Identifier for asynchronous API operations that complete later.                           |
| Locale              | Source or target language/region identifier used in localization.                         |
| Machine translation | Automated translation used in workflow steps, often combined with human review.           |
| Markup language     | Structured formats (for example HTML/XML) where text and tags must be handled safely.     |
| Segmentation        | Splitting content into translatable segments used for progress and QA operations.         |
| Translation memory  | Reusable translation database used to improve consistency and speed.                      |

## Core objects and data models (minimum)

Use these core object shapes in your plugin data layer.

| Object           | Purpose                                | Key fields to persist                                      |
| ---------------- | -------------------------------------- | ---------------------------------------------------------- |
| Project Template | Defines default project configuration  | `uid`, `templateName`, `sourceLang`, `targetLangs[]`       |
| Project          | Container for jobs                     | `uid`, `name`, `status`, `sourceLang`, `targetLangs[]`     |
| Job              | Translation unit for a target language | `uid`, `status`, `targetLang`, `workflowLevel`, `filename` |
| Async Request    | Tracks asynchronous work               | `id`, `action`, `dateCreated`                              |
| Async Response   | Completion payload for async work      | `errorCode`, `errorDesc`, `warnings[]`                     |

Representative JSON shapes:

```json theme={null}
{
  "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

<CardGroup cols={3}>
  <Card title="Start Quick Start" icon="play" href="/en/guides/build-a-tms-plugin/quick-start">
    Build the minimum end-to-end flow first.
  </Card>

  <Card title="Go to Full Workflow" icon="list-checks" href="/en/guides/build-a-tms-plugin/full-integration-workflow">
    Expand to a production-ready integration.
  </Card>

  <Card title="Add Live Preview" icon="monitor" href="/en/guides/build-a-tms-plugin/live-preview">
    Add editor preview capabilities for translators.
  </Card>
</CardGroup>
