> For the complete documentation index, see [llms.txt](https://doc.batch.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.batch.com/integrations/universal-channel/how-to-set-up-universal-channel-with-any-third-party-service.md).

# How to set up Universal channel with any third-party service

This guide explains how to set up the universal channel with any third-party service, when no specific step-by-step guide is available in Batch’s documentation.

{% hint style="info" %}
[Universal Channel](https://doc.batch.com/getting-started/features/customer-engagement-platform/message/universal-channel) is a paid offering. Contact your CSM or Account Manager to learn more.
{% endhint %}

### P**rerequisites**

To work with the universal channel, the service you want to trigger must expose an **HTTP API endpoint** that accepts:

* a **POST** request
* with a **JSON** body

for the use case you want to set up (sending a message, creating a ticket, updating data, etc.).

You should retrieve:

* the endpoint URL
* authentication requirements
* the expected JSON structure
* required fields that should be provided for each call

Each Batch profile triggers its own API call when it reaches a universal step.

{% stepper %}
{% step %}

## **Retrieve the API information of your third-party service**

The first step is to collect the information you will need to configure the request in Batch.

Depending on the service, you might be triggering a message (e.g. WhatsApp, RCS), creating a ticket, logging an event, updating a contact, or anything else the service supports.

#### **What you need to collect**

1. **API endpoint (URL)**\
   Example: `https://api.service.com/v1/messages/send`
2. **Authentication method**\
   Examples:
   * API key
   * bearer token
   * custom header (`X-API-Key`, `X-Auth-Token`, etc.)
   * OAuth 2.0
3. **HTTP method**\
   Must be **POST**
4. **JSON body format**\
   The fields expected by the service\
   Examples:
   * WhatsApp provider → `phone`, `template_id`, `parameters`
   * RCS provider → `msisdn`, `message`, `brand_id`
   * CRM → `user_id`, `event`
   * ticketing tool → `title`, `description`
     {% endstep %}

{% step %}

## **Add credential headers in Batch**

Batch needs authentication information to call your service.

1. Go to **Settings → Channels → Universal**
2. Click **New credential headers**
3. Choose a display name (e.g. “RCS provider”, “CRM API”, “Messaging API”)
4. Choose the **Method** your service expects, then fill in the fields it asks for.
   * **API Key**&#x20;
     * `Authorization: Bearer <token>`&#x20;
     * `X-API-Key: <key>`
   * **OAuth 2.0:** fill in the **Token URL**, the **Client ID** and the **Client secret** provided by your service.&#x20;
5. Save

You can reuse the same credential header for multiple Universal steps if authentication is the same.
{% endstep %}

{% step %}

## **Add and configure the universal step in your automation**

#### **3.1 Add the universal step**

1. Open your Batch automation
2. Click **+**
3. Select **Universal**

<figure><img src="https://2998247023-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbwlQFpRAhaFR79zae6Jf%2Fuploads%2FxObMCTr1fbP1eRYixRs8%2Funiversal%20channel%205.png?alt=media&#x26;token=87743033-d6d4-4e95-bcdd-571907dbb37b" alt="" width="314"><figcaption></figcaption></figure>

***

#### **3.2 Configure the request**

Use the information collected in Step 1.

**1. destination URL**

Paste the service’s API endpoint URL.

**2. headers**

Select the credential header you created in Step 2.\
Add any additional headers required (e.g. `Content-Type: application/json`).

**3. JSON body**

Start from your service’s sample JSON, then replace static values with Batch attributes.

#### **Examples**

**RCS provider**

```json
{
  "phone_number": "{{b.phone_number}}",
  "message": "Hello {{b.first_name}}, your order is ready.",
  "brand_id": "your_brand_id"
}
```

**Ticketing system**

```json
{
  "title": "New request from Batch",
  "user_id": "{{b.custom_id}}",
  "description": "Triggered from automation"
}
```

<figure><img src="https://2998247023-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbwlQFpRAhaFR79zae6Jf%2Fuploads%2F20nQuL6W2j59JuV6Wv7p%2Fimage.png?alt=media&#x26;token=0c45083d-7508-47cf-86b0-d8f0ec2efd20" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

## Test the connection

Once your universal step is configured, you can run a quick test to verify that Batch can reach your third-party service.

* Click **Test API** in the universal step.
* If your JSON body contains personalization (e.g. `{{b.phone_number}}`), select a test profile.
* Batch will send the request exactly as it would in a live automation.
* The interface will show whether the request was delivered successfully or if something needs to be fixed (URL, authentication, JSON format).

> Batch only confirms delivery of the request, not what happens inside the service.
> {% endstep %}

{% step %}

## **Activate your automation**

When the test works, you can activate your automation.

* Review your workflow to ensure the universal step is placed correctly.
* Switch the automation to **Live** and save.
* Once live, each profile reaching the step will trigger the POST request and your service will perform the associated action.
* You can add more universal steps if you need to trigger different endpoints, reusing the same credentials when applicable.
  {% endstep %}
  {% endstepper %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://doc.batch.com/integrations/universal-channel/how-to-set-up-universal-channel-with-any-third-party-service.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
