---
name: quincer
description: Use when you need to control a Quincer chat widget via the Quincer tool — take over live visitor conversations, reply as a human agent, list or update leads, or review agent activity. Useful when Quincer chat pings the team about a hot lead and you want to respond, qualify, or reassign without leaving OpenClaw.
metadata: { "openclaw": { "emoji": "💼", "requires": { "env": ["QUINCER_API_KEY"] }, "primaryEnv": "QUINCER_API_KEY", "homepage": "https://quincer.com/docs/api" } }
---

# Quincer Actions

## Overview

Quincer is an AI sales chat widget. This skill lets OpenClaw drive live conversations on the user's website and read the lead pipeline behind them. The Quincer API is HTTPS + bearer token. The token is `$QUINCER_API_KEY` — inject it as `Authorization: Bearer $QUINCER_API_KEY` on every request. Base URL: `https://chat.quincer.com`.

Every action below is an HTTPS request. Use whatever HTTP tool is available in the current OpenClaw runtime (`http`, `webfetch`, etc.). If the response is 401 or 403, stop and tell the user to reconnect from the Quincer dashboard → Integrations → OpenClaw.

## Inputs to collect

- A Quincer `conversationId` (cuid) when acting on a specific chat. These appear in `conversation.message_received` webhook payloads and in `GET /api/v1/conversations` listings.
- A Quincer `leadId` when updating a lead record.
- A visitor-facing `agentName` when taking over a conversation (defaults to `"OpenClaw"`).

## Actions

### Action groups

| Action group   | Default | Notes                                                 |
| -------------- | ------- | ----------------------------------------------------- |
| conversations  | enabled | Read transcripts, take over, reply, hand back to AI   |
| leads          | enabled | List + update leads, change stage/temperature/tags    |
| activities     | enabled | Read agent task history                               |

### Read a conversation

```json
{
  "action": "getConversation",
  "method": "GET",
  "path": "/api/v1/conversations/{conversationId}"
}
```

### Take over a conversation

Locks the conversation to this skill so the AI stops replying. Emit this before sending any reply.

```json
{
  "action": "takeover",
  "method": "POST",
  "path": "/api/v1/conversations/{conversationId}/takeover",
  "body": { "agentName": "OpenClaw" }
}
```

### Reply as the external agent

Posts a human-agent message. The visitor sees it under `agentName`. Quincer auto-translates to the visitor's language.

```json
{
  "action": "reply",
  "method": "POST",
  "path": "/api/v1/conversations/{conversationId}/reply",
  "body": { "message": "Hi, I can help with that — can I grab your email?", "agentName": "OpenClaw" }
}
```

### Hand back to the AI

Releases the takeover so the Quincer AI resumes handling the conversation.

```json
{
  "action": "handback",
  "method": "POST",
  "path": "/api/v1/conversations/{conversationId}/handback"
}
```

### List leads

Supports filters: `widgetId`, `stage`, `temperature`, `assignedTo`, `updatedSince` (ISO), `limit`, `offset`.

```json
{
  "action": "listLeads",
  "method": "GET",
  "path": "/api/v1/leads?stage=qualified&temperature=hot&limit=25"
}
```

### Read a lead

```json
{
  "action": "getLead",
  "method": "GET",
  "path": "/api/v1/leads/{leadId}"
}
```

### Update a lead

Editable fields: `name`, `email`, `phone`, `company`, `jobTitle`, `website`, `budget`, `authority`, `need`, `timeline`, `stage`, `temperature`, `score`, `tags`, `assignedTo`.

```json
{
  "action": "updateLead",
  "method": "PATCH",
  "path": "/api/v1/leads/{leadId}",
  "body": { "stage": "qualified", "temperature": "hot", "tags": ["openclaw-touched"] }
}
```

### List activities

Read the agent task log. Filters: `widgetId`, `leadId`, `status`, `type`, `updatedSince`.

```json
{
  "action": "listActivities",
  "method": "GET",
  "path": "/api/v1/activities?status=pending&limit=50"
}
```

## Reacting to live messages

Users who want real-time delivery of incoming chat messages should turn on the `conversation.message_received` webhook in Quincer → Settings → Webhooks and point it at an OpenClaw Webhooks endpoint. When `data.status == "human_active"` the conversation is already locked to an external agent — you can `reply` freely. When `data.status == "active"`, issue `takeover` first.

## Setup

1. In Quincer, open **Dashboard → Integrations → OpenClaw** and click **Connect OpenClaw**. This creates a dedicated "OpenClaw" team member in your workspace and issues an API token bound to it. The token is shown once — copy it.
2. In OpenClaw, install this skill (from ClawHub or by dropping `SKILL.md` into `~/.openclaw/workspace/skills/quincer/`).
3. Edit `~/.openclaw/openclaw.json`:

```json5
{
  skills: {
    entries: {
      quincer: {
        enabled: true,
        apiKey: { source: "env", provider: "default", id: "QUINCER_API_KEY" },
        env: { QUINCER_API_KEY: "cw_dev_..." }
      }
    }
  }
}
```

4. Restart the OpenClaw gateway. The `quincer` tool is now available.

## Ideas to try

- Watch hot leads: `listLeads?temperature=hot&updatedSince=...` every few minutes, reach out in the chat before they go cold.
- Auto-qualify: read the conversation transcript, then PATCH the lead to `stage=qualified` when BANT is met.
- Handoff bot: take over whenever a visitor asks for a human, reply from OpenClaw's knowledge base, hand back when resolved.
