# Transcoder

<!-- meta: type=google-transcoder; location=Cloud › Google; category=Step (action); platforms=Joomla and WordPress (where applicable) -->

## Overview

Transcoder is a **Step (action)** in **Cloud › Google**. Submits a transcoding job to Google Cloud Transcoder.

When the flow reaches this step, JOrchestrator executes **Transcoder** against your linked site or an external integration, using the field values you set on **General** and **Design**. Downstream steps can read the output payload fields defined for this node.

## Why use this node

Transcoder is a **action step** in the **Cloud › Google** group. Action steps run in the middle or end of a flow. They perform work on your CMS, call external services, or transform data for the next step.

Typical reasons teams add **Transcoder** to a flow:

- Automate "Transcoder" as part of a larger Joomla or WordPress workflow
- Replace manual google work with a repeatable, logged flow step
- Chain with triggers, logic, and messaging nodes on the same canvas

## Example workflows

Common patterns on the canvas:

1. **Trigger or Webhook** → upstream steps → **Transcoder** → **Send Email** or CMS update
2. **Scheduled trigger** → **Transcoder** → **Debug** (while testing) → production action

## How to set it up

Input and output gs:// URIs and preset template (default preset/web-hd). Optionally wait for completion.

## Good to know

Credentials from Node Configuration → Google; output bucket must allow the transcoder service account.

## Properties panel

The designer shows these tabs for this node:

| Tab | Purpose |
|-----|---------|
| **Info** | Plain-language description and output payload fields for downstream steps |
| **General** | Canvas label and read-only node ID |
| **AI** | Optional assistant to help draft settings from plain language |
| **Design** | Node-specific configuration fields |

### System (automatic — not edited by the user)

These fields are managed by the designer or runtime — you do not type into them directly:

| Property key | Label | Type | Required | Visible when | Notes |
|--------------|-------|------|----------|--------------|-------|
| `_nodeId` | Node ID | `node-id` | No | — | — |
| `_payloadFields` | Available Fields | `payload-panel` | No | — | — |

### User-configured — General tab

| Property key | Label | Type | Required | Visible when | Notes |
|--------------|-------|------|----------|--------------|-------|
| `label` | Label | `text` | No | — | Node label |

### User-configured — Design tab

| Property key | Label | Type | Required | Visible when | Notes |
|--------------|-------|------|----------|--------------|-------|
| `inputGcsUri` | Input GCS URI | `payload-text` | **Yes** | — | gs://my-bucket/source/video.mp4 Source file in Cloud Storage (must be readable by the Transcoder service account). |
| `outputGcsUri` | Output GCS URI | `payload-text` | **Yes** | — | gs://my-bucket/transcoded/ Folder prefix where Transcoder writes outputs (trailing slash recommended). |
| `templateId` | Preset template | `select` (`preset/web-hd` \| `preset/web-sd` \| `preset/720p-h264-aac` \| `preset/1080p-h264-aac`; default: `preset/web-hd`) | No | — | Google preset template for the transcoding job. |
| `location` | Transcoder location | `select` (`us-central1` \| `us-east1` \| `us-east4` \| `us-west1` \| `europe-west1` \| `europe-west4` \| `asia-east1` \| `asia-southeast1`; default: `us-central1`) | No | — | Region where the Transcoder API job runs (must match bucket region when possible). |
| `projectId` | Project ID (optional) | `payload-text` | No | — | my-gcp-project Leave blank to use the project ID from Joomla Node Configuration → Google. |
| `waitForComplete` | Wait for job to complete | `checkbox` | No | — | — |
| `pollIntervalSeconds` | Poll interval (seconds) | `select` (`10` \| `15` \| `20` \| `30` \| `60`; default: `15`) | No | `waitForComplete === true` | — |
| `maxPollMinutes` | Max wait (minutes) | `select` (`15` \| `30` \| `60` \| `120` \| `240`; default: `60`) | No | `waitForComplete === true` | — |

### CMS site configuration (not on this node's properties panel)

Credentials, API keys, mailers, SMTP, and integration defaults are configured in the CMS plugin under **Node Configuration**, not per step on this node. Link the flow to a domain before testing CMS-backed fields.

## Output payload fields

After this step runs, later nodes can reference these fields using placeholders such as
`{{transcoder.success}}`.

| Field key | Type | Description |
|-----------|------|-------------|
| `success` | boolean | Whether the operation completed successfully. |
| `jobId` | string | Cloud transcoding or conversion job ID. |
| `jobName` | string | Text value from this node's output. |
| `state` | string | Published state (0 = unpublished, 1 = published). |
| `inputGcsUri` | string | GCS URI of the input file. |
| `outputGcsUri` | string | GCS URI prefix for outputs. |
| `templateId` | string | Transcoder template preset ID. |
| `projectId` | string | Google Cloud project ID. |
| `location` | string | Google Cloud region for the job. |
| `message` | string | Human-readable status, error, or result summary. |

## Validation rules

- **Input GCS URI** (`inputGcsUri`) must be filled before the flow can be saved.
- **Output GCS URI** (`outputGcsUri`) must be filled before the flow can be saved.

## Related nodes

Other steps in the same area of the palette:

- **List GCS files** (`google-list-gcs`) — Cloud › Google
- **Read Google Sheet** (`google-sheets-read`) — Cloud › Google
- **Retrieve from GCS** (`google-retrieve-gcs`) — Cloud › Google
- **Upload to GCS** (`google-upload-gcs`) — Cloud › Google
- **Write Google Sheet** (`google-sheets-write`) — Cloud › Google
