# Universal channel

Universal Channel enables you to activate an external channel or system from within a Batch **trigger automation**.\
It does so by calling a third-party API to perform actions such as:

* sending a message,
* triggering a workflow,
* updating or creating data in an external system.

A complete set of use cases and examples can be found in the dedicated  [Universal channel](https://app.gitbook.com/s/bwlQFpRAhaFR79zae6Jf/universal-channel "mention") Integrations section.\
If your use case is not listed, you can rely on our **generic step-by-step guide** [How to set up Universal channel with any third-party service](https://app.gitbook.com/s/bwlQFpRAhaFR79zae6Jf/universal-channel/how-to-set-up-universal-channel-with-any-third-party-service "mention"), which walks you through configuring any Universal Channel call.

***

## **Structure of a Universal channel message**

A Universal channel step consists of:

* **A destination URL**
* **An HTTP method** (Batch supports `POST` requests)
* **Headers** (standard or credential-based)
* **A body** (JSON)

Batch currently supports POST requests with a JSON body and authentication using **Basic** or **Bearer token**.\
If your integration requires a more advanced setup, please contact us.

***

## **Parameter reference**

### **Destination URL**

The endpoint that Batch will call when the Universal Channel step runs. It can be personalized with profile, trigger event or catalogs attributes using our personalization language.

***

### **HTTP method**

Batch uses the **POST** method.

***

### **Headers & Credential headers**

Optional HTTP headers included in the request.\
It can be personalized with profile, trigger event or catalogs attributes using our personalization language.

If a header contains sensitive information (such as an authentication token), store it as a **Credential Header**.\
Credential Headers are securely managed and can be reused across multiple Universal Channel steps.\
See [#universal-channel-settings](https://doc.batch.com/getting-started/features/settings/channels#universal-channel-settings "mention") for more information.

***

### **Body**

The JSON body defines the instruction sent to the external system.

It can include personalization referring to:

* profile attributes
* trigger event attributes
* catalogs attributes

Use **“Format body”** to validate and neatly format your JSON payload.

***

## **Zoom on how Universal channel works**

When an automation reaches a Universal channel step:

1. **Batch composes the request**
   * Personalization attributes are resolved using the triggering profile and event.
   * Headers and body are assembled into the final API call.
2. **Batch sends the request to the external API**\
   The external system determines what action to perform based on the request sent.\
   For example:

   * a `"template_id"` field instructs a partner to send a specific WhatsApp message,
   * a `"status": "completed"` field updates an order,
   * a `"trigger": "start_flow"` field launches a workflow.

   *Universal channel does not impose a structure — the external system defines how the JSON should be interpreted.*
3. **The external system executes the action**\
   Examples:
   * sending a message,
   * updating a record,
   * creating an object,
   * starting an automation.
4. **Batch records the result**\
   Analytics use terminology aligned with communication channels:
   * **Sent** – Batch successfully issued the request
   * **Delivered** – The external system acknowledged the request with a successful response
   * **Bounced** – The external system returned an error or did not respond

These statuses allow you to verify how the external system received your request.&#x20;

***

## **Test API**

The **Test API** feature allows you to validate your Universal Channel configuration before enabling the automation.

1. **Select a profile**\
   Personalization attributes will be resolved using this profile’s attributes.
2. **A real call is performed**\
   Because it uses your actual external endpoint, the external action *will take place* (message sent, update performed, etc.) for the selected profile.
3. **Inspect the response**\
   The interface displays the result returned by the external system, helping you diagnose errors and adjust the configuration.

This step ensures your Universal channel works end-to-end before going live.

***

## Behavior Based on HTTP Status Codes

### Retry

The delivery behavior of Universal Channel messages depends on the HTTP status code returned by the target endpoint:

| HTTP Status Code                        | Behavior                                                                                                                                                                                                         |
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1xx                                     | Delivery failed. No retry.                                                                                                                                                                                       |
| 2xx                                     | Delivery succeeded. No retry needed.                                                                                                                                                                             |
| 3xx                                     | Delivery failed. No retry.                                                                                                                                                                                       |
| 4xx                                     | Delivery failed. No retry, except for 429.                                                                                                                                                                       |
| 429                                     | Retry behavior depends on the presence of the Retry-After header: If Retry-After is present: wait for the specified delay or until the indicated date.If Retry-After is missing: wait 5 seconds before retrying. |
| 5xx                                     | Delivery failed. Retry is attempted.                                                                                                                                                                             |
| Network errors / connection interrupted | Treated as transient errors. Retry is attempted.                                                                                                                                                                 |

Note: After 5 retry attempts, the delivery is considered failed.

### Supported HTTP Status Codes

Our service supports all standard HTTP status codes as defined by the IANA: 🔗 [IANA HTTP Status Code Registry](https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml)

If the response contains a non-standard or unrecognized HTTP status code, it will be reported with a status code value of 0.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.batch.com/getting-started/features/customer-engagement-platform/message/universal-channel.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
