# What are ConnectiveOne Integrations

Integrations allow connecting ConnectiveOne with your external systems (CRM, ERP, marketing platforms, custom applications) for data exchange and process automation.

---

## Why Are Integrations Needed?

Integrations help:

- **Automate processes** — launch bot scenarios from your systems
- **Synchronize data** — exchange information between ConnectiveOne and other systems
- **Receive events** — track changes in the operator panel and dialogues
- **Extend functionality** — connect additional channels and services

---

## Integration Types

ConnectiveOne supports several integration types, each solving its own tasks.

### Custom Channel

**What it is:** Integration of external systems through HTTP POST requests. Custom Channel allows connecting any system that can send and receive HTTP requests.

**When to use:**
- You need to connect an existing bot from another system to ConnectiveOne
- You need to integrate correspondence from CRM to ConnectiveOne
- You need to quickly connect a new channel (messenger) for which there is no official integration yet
- You need full bidirectional integration (sending and receiving messages)

**How it works:**
- Your system sends POST requests to ConnectiveOne's `input_url`
- ConnectiveOne sends messages and events to your `custom_channel_url`
- All messages and events are processed through ConnectiveOne scenarios

**More details:** → [Integration via Custom Channel](/en/integrations/how-to/custom-channel/integrate-via-custom-channel.md)

---

### API (Enterprise API, Public API)

**What it is:** REST API for receiving and changing ConnectiveOne data. Allows reading and changing information about dialogues, operators, users, tickets, and other objects.

**When to use:**
- You need to get data about dialogues, operators, users from ConnectiveOne
- You need to change dialogue parameters (status, topic, comment) from an external system
- You need to synchronize data between ConnectiveOne and your system
- You need to integrate ConnectiveOne with your CRM/ERP system

**How it works:**
- You send HTTP requests (GET, POST) to ConnectiveOne endpoints
- You use an API key or JWT token for authorization
- You receive data in JSON format

**More details:**
- → [Using API](/en/integrations/how-to/use-api.md)
- → [API reference](/en/integrations/reference/api-reference.md)

---

### call_node (Call Node API)

**What it is:** API for launching bot scenarios from external systems. Allows calling any entry point (Entry Point) in scenarios and passing parameters.

**When to use:**
- You need to send a message to a client about order/delivery status
- You need to launch a satisfaction survey after service provision
- You need to send a payment reminder
- You need to launch an integration process (for example, directory synchronization)

**How it works:**
- You send a POST request to the `/kw/api/call_node/` endpoint or use Entry Point URL
- You specify `bot_id`, `connector_alias` (entry point), `chat_id`, `channel`
- You can pass additional parameters in `data`, which will be available in the scenario
- ConnectiveOne launches the scenario for the specified user

**More details:** → [Launch scenario via API call_node](/en/integrations/how-to/launch-scenario-via-call-node.md)

---

### Operator Panel Webhooks

**What it is:** Mechanism for receiving events from the operator panel to your external service. Webhook sends events (chat creation, operator connection, chat closure) to the specified URL.

**When to use:**
- You need to track events in the operator panel (chat creation, operator connection)
- You need to synchronize dialogue statuses with your CRM system
- You need to log operator panel events to an external system
- You need to integrate with an analytics system

**How it works:**
- You specify `event_webhook_url` in the `operator_panel__connect_to_operator_with_msg` action
- ConnectiveOne sends POST requests with events to your URL
- Your service processes events and performs necessary actions

**Differences from Custom Channel:**
- Operator panel webhook only sends events from the operator panel
- Does not require separate channel configuration
- Configured directly in the action

**More details:** → [Configure operator panel webhook](/en/integrations/how-to/webhook/configure-operator-panel-webhook.md)

---

### Deeplink

**What it is:** Direct links for launching bot scenarios with parameters. Deeplink allows creating a unique link for each user or scenario.

**When to use:**
- You need to launch a scenario from an advertising campaign with unique parameters
- You need to pass client ID or order ID through a link
- You need to create personalized links for different user groups
- You need to track traffic source (UTM tags)

**How it works:**
- You create a link with parameters (for example, `https://t.me/mybot?start=customer_12345`)
- User clicks the link
- Parameter is passed to the scenario through `{{messenger_input_param}}`
- Scenario processes the parameter and performs corresponding actions

**Supported messengers:**
- Telegram
- Viber
- Facebook Messenger

**More details:** → [Launch scenario via deeplink](/en/integrations/explanation/deeplink-launch.md)

---

### send_request (Data Exchange)

**What it is:** Action for sending HTTP requests from ConnectiveOne to external services and receiving responses. Allows exchanging data between ConnectiveOne and external systems directly in scenarios.

**When to use:**
- You need to get data from an external API (exchange rates, weather, order information)
- You need to send data to an external service (webhook, CRM, marketing platforms)
- You need to synchronize data between ConnectiveOne and your system
- You need to integrate scenarios with third parties

**How it works:**
- You configure the `send_request` action in the scenario with URL, method, data, and headers
- ConnectiveOne sends an HTTP request to the specified URL
- Response is processed through `response_mapping` or saved in state
- Data becomes available in the scenario through placeholders

**Differences from send_me:**
- `send_request` does not automatically add `chat_id` and `channel`
- `send_me` automatically adds `chat_id` and `channel` (ideal for webhook integrations)

**More details:**
- → [Get data via send_request](/en/integrations/how-to/data-transfer/get-data-via-send-request.md)
- → [Send data via send_request](/en/integrations/how-to/data-transfer/send-data-via-send-request.md)

---

<a id="data-exchange-with-widget"></a>

### Widget Data Exchange

**What it is:** Mechanism for passing parameters from a website to a scenario and controlling the widget through JavaScript API. Allows integrating the ConnectiveOne widget with your website for passing context and controlling behavior.

**When to use:**
- You need to pass parameters from the website to the scenario (UTM tags, user ID, product data)
- You need to control the widget programmatically (open/close chat, change title)
- You need to pass events from the website to the scenario (button click, page navigation)
- You need to integrate the widget with SPA applications

**How it works:**
- You pass parameters through `params_from_site` when initializing the widget
- Parameters are automatically added to each message and become available in the scenario through `{{param_name}}`
- You use JavaScript API (`kw_event`) to control the widget from the website
- Events from the website can be passed to the scenario through `emitevent`

**Main capabilities:**
- Passing parameters through `params_from_site`
- Controlling widget through `kw_event('openchat')`, `kw_event('command')`, `kw_event('emitevent')`
- Reinitialization for SPA through `kw_event('kwreinitwidget')`
- Changing parameters during operation through `kw_event('kwsetparamsfromsite')`

**More details:**
- → [What is widget](/en/channels/explanation/what-is-widget.md)
- → [Widget JavaScript API](/en/channels/explanation/widget-javascript-api.md)
- → [Pass parameters from website](/en/channels/how-to/pass-parameters-from-widget.md)
- → [Manage widget from website](/en/channels/how-to/manage-widget-from-site.md)

---

## How to Choose Integration Type?

### Need to connect an external system for message exchange?
→ **Custom Channel**

### Need to get or change data from ConnectiveOne?
→ **API (Enterprise API, Public API)**

### Need to launch a bot scenario from your system?
→ **call_node**

### Need to receive events from the operator panel?
→ **Operator Panel Webhooks**

### Need to create a link for launching a scenario with parameters?
→ **Deeplink**

### Need to exchange data between ConnectiveOne and external systems in scenarios?
→ **send_request**

### Need to pass parameters from website to scenario or control widget?
→ **Widget Data Exchange**

---

## Combining Integration Types

You can combine different integration types for complex scenarios:

**Example:** CRM Integration
1. Use **API** to get dialogue data
2. Use **call_node** to send messages to clients about order status
3. Use **Webhooks** to synchronize dialogue statuses
4. Use **Deeplink** to create personalized links from advertising
5. Use **send_request** to get order data from CRM in the scenario
6. Use **Widget Data Exchange** to pass context from the website to the scenario

---

## Related Articles

### How-to Instructions
- [Using API](/en/integrations/how-to/use-api.md)
- [Integration via Custom Channel](/en/integrations/how-to/custom-channel/integrate-via-custom-channel.md)
- [Configure operator panel webhook](/en/integrations/how-to/webhook/configure-operator-panel-webhook.md)
- [Launch scenario via API call_node](/en/integrations/how-to/launch-scenario-via-call-node.md)
- [Get data via send_request](/en/integrations/how-to/data-transfer/get-data-via-send-request.md)
- [Send data via send_request](/en/integrations/how-to/data-transfer/send-data-via-send-request.md)
- [Pass parameters from website to scenario](/en/channels/how-to/pass-parameters-from-widget.md)
- [Manage widget from website](/en/channels/how-to/manage-widget-from-site.md)

### Explanation Articles
- [Launch scenario via deeplink](/en/integrations/explanation/deeplink-launch.md)
- [UTM tags transfer](/en/integrations/explanation/utm-tags-transfer.md)

### References
- [API reference](/en/integrations/reference/api-reference.md)
