---
name: "ticket_merge"
area: "helpdesk"
title: "Merge tickets"
price: "$0.01"
method: "POST"
url: "https://api.conecto.chat/v1/tools/ticket_merge"
mcp_server: "https://api.conecto.chat/mcp/helpdesk"
auth: "Authorization: Bearer <conecto_sk_ key>"
docs_url: "https://conecto.chat/tools/helpdesk/ticket_merge"
---

# Merge tickets (`ticket_merge`)

Merges a duplicate ticket into another: its messages, notes, email threads, tags and fields move over.

Merge a duplicate ticket (number) into another (into): its messages, notes, email threads, tags and fields move over, so mail in the duplicate's thread lands on `into` from now on, and `into` reopens if the duplicate was still open. The duplicate is resolved and points at `into`. Replies on `into` go to its own requester only.

Price: $0.01 a call. A call that fails costs nothing.

## Use it when

The same customer opened two tickets about one problem.

## Say this to your agent

> Paul emailed again about the same scratch and it opened ticket 91. Fold it into 87.

## Inputs

| Name | Type | Required | Description | Allowed values | Default |
|---|---|---|---|---|---|
| `number` | integer | yes | The ticket number, e.g. 42 for ticket #42. At least 1. |  |  |
| `into` | integer | yes | The ticket number, e.g. 42 for ticket #42. At least 1. |  |  |

## Example

Written for Halverson Cycle & Repair, a bike shop with a repair workshop in Portland, Oregon.

MCP: call `ticket_merge` on the MCP server `https://api.conecto.chat/mcp/helpdesk` with these arguments:

```json
{
  "number": 91,
  "into": 87
}
```

REST:

```bash
curl https://api.conecto.chat/v1/tools/ticket_merge \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"number": 91, "into": 87}'
```

## Response

```json
{
  "call_id": "5f0c8a2e-3b7d-4c1e-9a64-2d8e1f7b0c93",
  "tool": "ticket_merge",
  "status": "succeeded",
  "replayed": false,
  "cost_usd": "$0.01",
  "balance_usd": "$19.75",
  "result": {
    "ticket": {
      "number": 1,
      "subject": "Scratch on the Tabor's top tube",
      "status": "open",
      "priority": "high",
      "category": "Damaged delivery",
      "tags": [
        "damage"
      ],
      "requester_email": "paul.hoffmann@example.com",
      "requester_name": "Paul Hoffmann",
      "contact_id": null,
      "company_id": null,
      "source": "api",
      "channel": "api",
      "assigned_to": null,
      "waiting_on": "us",
      "sla": null,
      "merged_into": null,
      "created_at": "2026-10-14T08:00:00+00:00",
      "last_activity_at": "2026-10-14T08:00:00+00:00",
      "first_reply_at": null,
      "resolved_at": null,
      "body": "Called on Wednesday: the Tabor gravel bike delivered on Monday has a 3 cm scratch on the top tube. He would like it touched up or the frame swapped.",
      "fields": {
        "order_id": "2231"
      },
      "inbox": null,
      "email_message_id": null,
      "rating": null,
      "rating_requested_at": null,
      "comments": [
        {
          "kind": "requester",
          "body": "(Merged from ticket #2, from paul.hoffmann@example.com: Any news about the scratch on my bike?)\n\nAny news about the scratch on my bike?",
          "email_status": null,
          "at": "2026-10-14T08:00:00+00:00"
        },
        {
          "kind": "system",
          "body": "Ticket #2 was merged into this one.",
          "email_status": null,
          "at": "2026-10-14T08:00:00+00:00"
        }
      ]
    },
    "merged": 2
  }
}
```

`result`: The ticket that stays, in full, merged: the duplicate's number, and a note when the duplicate came from another requester.

## Errors

| Code | Status | When | Fix |
|---|---|---|---|
| `not_found` | 404 | No ticket of the business has that number. | Find it with ticket_list and use its number. |
| `invalid_input` | 400 | number and into are the same ticket. | Send two different tickets. |
| `conflict` | 409 | One of the tickets was merged already. | Merge into the ticket the message names. |

The refusals every tool can give (401 key, 402 balance, 429 limits) are on the errors page: https://conecto.chat/docs/errors.md

## Related

- [ticket_list](https://conecto.chat/tools/helpdesk/ticket_list.md): Tickets, newest activity first, filtered by status, priority, requester, tag, field or contact, or as a work queue. Free up to 1,000,000 reads a month.
- [ticket_get](https://conecto.chat/tools/helpdesk/ticket_get.md): One ticket with its request, every reply, customer message and note, its fields, SLA state and rating. Free up to 1,000,000 reads a month.
- [ticket_create](https://conecto.chat/tools/helpdesk/ticket_create.md): Opens a support ticket for a customer request; the customer is emailed only if you ask. $0.01 a call.
- [ticket_reply](https://conecto.chat/tools/helpdesk/ticket_reply.md): Emails the requester a reply in the ticket's thread, with files if needed, or adds a private note, and can set the status. $0.05 a call.
- [ticket_update](https://conecto.chat/tools/helpdesk/ticket_update.md): Changes a ticket's status, priority, category, subject, tags, fields, assignee, or the CRM records it is about. $0.01 a call.
- [ticket_connect_inbox](https://conecto.chat/tools/helpdesk/ticket_connect_inbox.md): Makes an inbox a support inbox: every new email to it opens a ticket, and replies stay in its thread. $0.001 a call.
- [ticket_save_template](https://conecto.chat/tools/helpdesk/ticket_save_template.md): Saves a canned reply under a name, with the status and tags it applies whenever it is sent. $0.001 a call.
- [ticket_list_templates](https://conecto.chat/tools/helpdesk/ticket_list_templates.md): Every saved reply with its text, status and tags. Free up to 1,000,000 reads a month.
- [ticket_delete_template](https://conecto.chat/tools/helpdesk/ticket_delete_template.md): Deletes a saved reply by name. $0.001 a call.
- [ticket_get_settings](https://conecto.chat/tools/helpdesk/ticket_get_settings.md): The help desk's SLA targets, auto-close, satisfaction survey setting and support inboxes. Free up to 1,000,000 reads a month.
- [ticket_update_settings](https://conecto.chat/tools/helpdesk/ticket_update_settings.md): Sets the SLA targets per priority, auto-close and the satisfaction survey. $0.001 a call.
- [ticket_report](https://conecto.chat/tools/helpdesk/ticket_report.md): How support went over the last days: volumes, backlog, response and resolution times, SLA results, ratings, and tickets by channel, priority and tag. Free up to 1,000,000 reads a month.
