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

### 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.)
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. Add the required authentication header(s):

   For instance:

   * `Authorization: Bearer <token>`
   * `X-API-Key: <key>`
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="/files/qheoMB6JfCL6kHV4bSzW" 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="/files/ajeWF7PxotIdTfcwImcX" 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: 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/integrations/universal-channel/how-to-set-up-universal-channel-with-any-third-party-service.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.
