# Build your First Pipeline

A **Pipeline** in Condense is the visual and functional representation of data flow between deployed connectors, transforms, and utilities inside a workspace. It is automatically materialized when a connector or transform is deployed. No manual creation needed.

{% hint style="info" %}
**Before you begin**, make sure you have:

* A workspace created and configured
* At least one environment linked to the workspace
* Workspace Admin or Maintainer role
  {% endhint %}

## What You'll Build

```
[ Input Connector ]  →  [ Kafka Topic ]  →  [ Transform ]  →  [ Output Connector ]
   (Data Source)            (Stream)          (Process)          (Destination)
```

By the end of this guide, you will have a live pipeline ingesting data from a source, processing it through a transform, and delivering it to a destination, all inside your Condense workspace.

***

## Step 1 - Deploy an Input Connector

An **Input Connector** receives data from an external system and injects it into your pipeline.

1. Navigate to your **Workspace** → click **Connectors** in the left sidebar
2. Click **+ Add Connector**
3. Select **Input** as the connector role
4. Choose your connector type (e.g. Kafka, HTTP, Teltonika, Pub/Sub)
5. Fill in the required configuration fields:
   * **Title** - a unique name for this connector
   * **Output Topic** - the Kafka topic this connector will publish data to
   * **Environment Variables** - credentials, endpoints, or protocol settings<br>
6. Click **Deploy**<br>

   <div data-gb-custom-block data-tag="hint" data-style="success" class="hint hint-success"><p>Once deployed, your Input Connector will appear as a block on the Pipeline canvas and begin publishing data to the configured output topic.</p></div>

***

## Step 2 - Add a Transform

A **Transform** processes messages as they flow between your Input and Output connectors.

#### Option A - Prebuilt Transform

1. On the **Pipeline canvas**, click **+ Add Transform**
2. Select **Prebuilt**
3. Choose a transform type:
   * **Geofence** - location-based event triggering
   * **Alert Utility** - trigger alerts when a condition is met
   * **Split Utility** - route messages based on rules
4. Configure the required parameters:
   * **Input Topic** - must match the Output Topic from your Input Connector
   * **Output Topic** - the topic the transform will publish results to
5. Click **Deploy**

#### Option B - Custom Transform

1. Go to **Applications** → create or select an existing application
2. Build, test, and publish the application
3. Back on the Pipeline canvas, click **+ Add Transform** → **Custom**
4. Select your published application and version
5. Configure input/output topics and environment variables
6. Click **Deploy**

***

## Step 3 - Deploy an Output Connector

An **Output Connector** takes the processed data and delivers it to an external destination.

1. Navigate to **Connectors** → click **+ Add Connector**
2. Select **Output** as the connector role
3. Choose your connector type (e.g. PostgreSQL, Big Query, S3, Kafka)
4. Fill in the required configuration fields:
   * **Title** - a unique name for this connector
   * **Input Topic** - must match the Output Topic from your Transform
   * **Environment Variables** - destination credentials and settings
5. Click **Deploy**

   <div data-gb-custom-block data-tag="hint" data-style="success" class="hint hint-success"><p>Condense automatically draws a connecting line between blocks that share matching topics. Your pipeline is now live.</p></div>

***

## Step 4 - View Your Pipeline

Click **Pipeline** in the left sidebar. You will see all deployed blocks connected by lines:

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FFXdRmLlbVOIi01MBO9Z9%252Fimage.png%3Falt%3Dmedia%26token%3Da34c67b8-847c-4c06-ad37-9da5cc5f65c2&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=9bc098d7&#x26;sv=2" alt="Pipeline Canvas Showing Connected Blocks"></div>

Clicking any block opens its **Component Detail Panel** showing the connector name, category, type, status, and Kafka topic information:

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252Fr9UecWjLEuGH0UP4zqLv%252Fimage.png%3Falt%3Dmedia%26token%3Dfbc7862e-7a17-4186-8b55-2edbc9d329cc&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=f9f5657&#x26;sv=2" alt="Node Details Panel"></div>

{% hint style="info" %}
Pipelines are automatically materialized. They appear automatically as soon as connectors and transforms are deployed. You do not manually create a pipeline.
{% endhint %}

***

## Step 5 - Monitor Your Pipeline

#### Real-Time Metrics

Each block displays live CPU and memory utilization:

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FQp8wuZOvEnHSpZhwjr2w%252Fimage.png%3Falt%3Dmedia%26token%3Da3255060-fc68-4ecf-92be-72784b95f6bf&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=2c701f87&#x26;sv=2" alt="Real-Time Resource Utilization Metrics"></div>

Colour-coded status indicators let you instantly identify Running, Stopped, or Error states:

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FtzQPdQe4Ewy6WuOOc20U%252Fimage.png%3Falt%3Dmedia%26token%3Da4fd837f-4b79-47c5-b4d5-5fbdbbf35640&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=3257c45c&#x26;sv=2" alt="Colour-Coded Pipeline Status Indicators"></div>

#### Logs and Debugging

Access detailed real-time logs for each block with customizable streaming intervals (5 seconds by default):

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FqftlDVlvswS9JJguZ5Hs%252Fimage.png%3Falt%3Dmedia%26token%3Ddcaf415d-29c2-4b10-a69f-8b31fd817f84&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=1289680e&#x26;sv=2" alt="Logs and Debugging Panel"></div>

### Editing Your Pipeline

If you need to fix a misconfiguration after deployment, use **Edit Configurations**:

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FqvpSspmI0uQswtrcO8hz%252Fimage.png%3Falt%3Dmedia%26token%3D9f0378c4-0e15-44d1-9921-cb715670f0fc&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=e8b9fd48&#x26;sv=2" alt="Edit Configurations Panel"></div>

1. Click the block you want to edit on the Pipeline canvas
2. Click **Edit Configuration**
3. Update the required fields
4. Click **Save Changes**<br>

   <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>Fields with a <strong>lock icon</strong> cannot be edited after deployment. To change locked fields, delete and redeploy the component.</p></div>

### Roles and Permissions

| Operation                           |                                                                                                                          Admin                                                                                                                         |                                                                                                                       Maintainer                                                                                                                       |                                                                                                                        Developer                                                                                                                       |                                                                                                                         Viewer                                                                                                                         |
| ----------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| Deploy pre-built connectors         | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> |
| Deploy custom connectors/transforms | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> |
| Configure deployed components       | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> |
| Delete deployed components          | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> |
| View pipelines and connections      | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> |
| View component logs/configuration   | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> |

***

## Best Practices

<img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fbltm6MWTveArZyk3rEbZ%2Fimage.png?alt=media&#x26;token=40bd729b-0986-48b5-91aa-327634dc30d6" alt="" data-size="line">  Use **clear topic naming** to make the pipeline canvas self-explanatory

<img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fbltm6MWTveArZyk3rEbZ%2Fimage.png?alt=media&#x26;token=40bd729b-0986-48b5-91aa-327634dc30d6" alt="" data-size="line">  **Group related connectors and transforms** logically to simplify understanding

<img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fbltm6MWTveArZyk3rEbZ%2Fimage.png?alt=media&#x26;token=40bd729b-0986-48b5-91aa-327634dc30d6" alt="" data-size="line">  **Avoid unused topic links** to reduce visual clutter

<img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fbltm6MWTveArZyk3rEbZ%2Fimage.png?alt=media&#x26;token=40bd729b-0986-48b5-91aa-327634dc30d6" alt="" data-size="line">  **Regularly check component logs** to catch issues early

<img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fbltm6MWTveArZyk3rEbZ%2Fimage.png?alt=media&#x26;token=40bd729b-0986-48b5-91aa-327634dc30d6" alt="" data-size="line">  Document the pipeline purpose in the workspace description

***

## Common Pitfalls

* **Misaligned Topic Names** - Double-check that Output Topic of one block exactly matches the Input Topic of the next block
* **Unused Components Left Running** - Remove or disable unused connectors to prevent unnecessary resource usage
* **Overcrowded Canvas** - Use multiple workspaces when a single pipeline becomes too dense
