---
url: https://docs.oakmega.com/en/recipe/complaint-escalation.md
description: >-
  How to make sure complaints on LINE don't slip past your regular agents: a
  chatbot's "Trigger Keyword (Contains)" catches words like complaint, refund,
  return and allergy, replies with an apology, applies the "Complaint: needs
  supervisor" tag and transfers the member to Service Center, and an
  organization's assigned tag routes the conversation straight to a support
  supervisor. Also covers what happens when the conversation is already in
  service or the member matches several organizations, and how supervisors find
  complaints that were missed.
---

This recipe helps support supervisors catch complaints on LINE the moment they arrive. When a member mentions a complaint, a refund, a return or an allergy, they immediately get a reply with an apology and a response time. At the same time the conversation is tagged and sent straight to a support supervisor, so it doesn't sit in the queue with routine questions.

## Who this is for

* **Support supervisors**: complaints get mixed in with routine questions. By the time an agent spots one and passes it up, half a day has gone by and the customer is even angrier.
* **The brand's CRM manager**: you want to know how many complaints come in each month and whether they've been resolved.

When you're done you'll have a chatbot that catches complaint keywords, a pair of "needs supervisor" and "resolved" tags, an organization that only takes complaints, and a way for supervisors to find complaints that slipped through.

The examples use a fictional skincare brand, Sunleaf. The tags, the organization and the chatbot were all actually created in the OakMega manual demo workspace. The Service Center conversation is a demo recreated from the real message format.

## Features you'll use

| Feature | Its job in this scenario | Minimum plan | Needs activation? |
|---|---|---|---|
| [LINE chatbot](https://docs.oakmega.com/en/guide/chatbot/line-chatbot.md) | Catches complaint keywords: replies with an apology, applies a tag and transfers to Service Center | All plans | No |
| [Tag Management](https://docs.oakmega.com/en/guide/members/tag-management.md) | "Complaint: needs supervisor" decides who gets the conversation; "Complaint: resolved" records that it's closed | All plans (Free: up to 10 tags) | No |
| [Organizations and assignment rules](https://docs.oakmega.com/en/guide/service-center/assignment-rules.md) | The "Complaints team" uses its assigned tag to take only complaints | All plans | Agent seats are activated separately |
| [Automatically close resolved conversations](https://docs.oakmega.com/en/guide/service-center/auto-close.md) | Closes the conversation once resolved and moves it back to the default organization | All plans | Agent seats are activated separately |

## Flow

![Complaint routing flow, in four columns. Member complains: the message contains complaint, refund, return, allergy…, in a LINE one-to-one chat → Chatbot catches it: replies with an apology and response time, tags "Complaint: needs supervisor", auto transfer to the Service Center → Routed to the Complaints team: organization tag = Complaint: needs supervisor, a supervisor with auto distribution on takes it, status becomes Open → Supervisor resolves it: replies and checks the order in the Service Center, switches to "Complaint: resolved", auto-closes after resolved, back to the default organization](https://docs.oakmega.com/en/recipe/images/complaint-escalation-01-flow.png)

1. A member's message on LINE contains a keyword such as complaint, refund, return or allergy.
2. The chatbot replies with an apology and a response time, applies "Complaint: needs supervisor" and transfers the conversation to Service Center.
3. The "Complaints team" has "Complaint: needs supervisor" as its assigned tag, so the conversation goes to this team and a supervisor in it picks it up.
4. When the supervisor has dealt with it in Service Center, they switch the tag to "Complaint: resolved" and mark the conversation Resolved, and the service closes automatically.

## How to set it up

| Step | Where | Settings in this scenario |
|---|---|---|
| 1. Create tags | Member & Tag › Tag Management | Folder "Complaints": Complaint: needs supervisor, Complaint: resolved |
| 2. Create the Complaints team | Service Center › Service Center Setting › Organization | Add the supervisors and turn on auto distribution; assigned tag "Complaint: needs supervisor"; close automatically 24 hours after resolved, then change to the default organization |
| 3. Create the chatbot | LINE › Chatbot | "Trigger Keyword (Contains)": Complaints, complaint, refund, return, allergy, compensation; Trigger Add Tag; Service center transfer |
| 4. Supervisors check once a day | Service Center | Filter by the Complaints team; use the advanced filter to find complaints that landed in other organizations |

### 1. Create the complaint tags

Under **Member & Tag › Tag Management**, add a folder named "Complaints" with two **Strength Tag** tags:

| Tag | What it's for |
|---|---|
| Complaint: needs supervisor | Applied automatically by the chatbot; it's how the Complaints team picks up the conversation |
| Complaint: resolved | Applied by hand when the supervisor closes the case, removing "needs supervisor" at the same time |

See [Create and manage tags](https://docs.oakmega.com/en/guide/members/tag-management.md).

### 2. Create an organization that only takes complaints

Under **Service Center › Service Center Setting**, open the **Organization** tab and click **Create Organization**:

1. Set **Organization Name** to "Complaints team", use **Add Agent** to add your support supervisors, and turn on **Auto Distribute to Agent**.
2. In **Distribute Condition**, turn on **Accept System Automatic Distribution**. Under **Assigned Tag**, choose **Restrict Tag** and select "Complaint: needs supervisor".
3. In **Automation**, set **Resolved → Close** to **Automatically Close** and enter 24 hours. Set **Close → Change Organization** to **Change to Default Organization and Remove Agent**, so that the next time this member asks a routine question, it doesn't land in the Complaints team again.
4. Click **Save**.

The screenshot below shows the Complaints team's Distribute Condition: Accept System Automatic Distribution is on, and the Assigned Tag is restricted to "Complaint: needs supervisor".

![The Distribute Condition tab of the Complaints team: Accept System Automatic Distribution is on, Assigned Account is set to No Account Restriction, and Assigned Tag is set to Restrict Tag with "Complaint: needs supervisor" selected](https://docs.oakmega.com/en/recipe/images/complaint-escalation-03-org-condition.png)

For the full rules, see [Understand how conversations are assigned to organizations and agents](https://docs.oakmega.com/en/guide/service-center/assignment-rules.md).

### 3. Catch complaint keywords with a chatbot

Under **LINE › Chatbot**, add a keyword chatbot named "Complaint to supervisor":

1. In **Trigger Keyword (Contains)**, enter "Complaints", "complaint", "refund", "return", "allergy" and "compensation", pressing Enter after each one (up to 20).
2. Under **Tag Settings**, set **Trigger Add Tag** to "Complaint: needs supervisor".
3. Under **Follow-up Actions**, turn on **Service center transfer**.
4. On the **Edit Message** tab, add a text message: "We're sorry about your experience. We've passed you to a Sunleaf customer service supervisor, who will contact you personally within 1 business day. If you can, please share your order number and what happened, so the supervisor won't need to ask again."
5. Click **Save**.

The screenshot below shows this chatbot's keywords, tag and follow-up action:

![Chatbot settings: Trigger Keyword (Contains) has Complaints, complaint, refund, return, allergy and compensation; Trigger Add Tag is set to Complaint: needs supervisor; under Follow-up Actions, Service center transfer is on](https://docs.oakmega.com/en/recipe/images/complaint-escalation-02-chatbot.png)

The chatbot applies the tag before it transfers the conversation, so assignment already sees "Complaint: needs supervisor" and the conversation goes straight to the Complaints team. For every setting, see [Set up a LINE chatbot](https://docs.oakmega.com/en/guide/chatbot/line-chatbot.md).

### 4. Supervisors pick it up in Service Center

After the member sends a complaint, the Service Center conversation shows, in order, "**Triggered chatbot:** Complaint to supervisor", "**Auto-assign organization:** Complaints team", "**Auto-assign assigned agent:**" and "**Auto change status: Open**". The tag in Member Data on the right is "Complaint: needs supervisor".

![A Service Center conversation: the member writes that they bought the Dawn Moisture Serum last week, after two days their face got an allergy rash, and they'd like a refund; below it, in order, Triggered chatbot: Complaint to supervisor, the chatbot's apology, Auto-assign organization: Complaints team, Auto-assign assigned agent: OakMega AI and Auto change status: Open; on the right, Tag Info in Member Data shows Complaint: needs supervisor](https://docs.oakmega.com/en/recipe/images/complaint-escalation-04-conversation.png)

When the supervisor is done:

1. Under **Tag Info** in Member Data, remove "Complaint: needs supervisor" and apply "Complaint: resolved".
2. Mark the conversation **Resolved**. After 24 hours it closes automatically and goes back to the default organization.

## How it works and limits

| Situation | Result | What to do |
|---|---|---|
| A member mentions a complaint for the first time and the conversation isn't in service | Tagged, transferred to Service Center and assigned to the Complaints team | Nothing |
| The conversation is **already in service** (the member is talking to a regular agent) | The tag is applied, but the conversation **isn't reassigned**; it stays with its current organization and agent | Supervisors use the advanced filter on the tag "Complaint: needs supervisor" to find it and move it to the Complaints team by hand |
| The member also has another organization's assigned tag (for example, VIP members) | Several organizations match, so **Multiple Organization Condition Match** sends it to the default organization or a random matching one | Same as above: supervisors filter once a day, or have the VIP team's supervisor watch the complaint tag too |
| The message just happens to contain a keyword ("How do returns work?") | It still goes to a supervisor | Choose unambiguous keywords; supervisors move false alarms back to a regular organization and remove the tag |
| The chatbot has a **Weekly Effective Period** | It doesn't trigger outside those hours, so complaints aren't caught | Don't limit the complaint chatbot's hours; it still replies and transfers after hours, and the supervisor picks it up the next working day |

**Keywords are matched with "Contains"**, regardless of context. The shorter the keyword, the more false alarms: "ill", for example, would also fire on "will" and "bill".

## What members see

As soon as the member complains, the chatbot replies with an apology and a response time. When the supervisor picks it up, they reply from the same official account. The screen is a mock-up (Chinese demo).

The member writes "I bought the Dawn Moisture Serum last week. After two days my face got an allergy rash, and I'd like a refund." The chatbot replies with the apology above. Then Ms. Lin, Sunleaf's customer service supervisor, writes: "Hi, this is Ms. Lin, the customer service supervisor at Sunleaf. We're very sorry about your skin. Could you share your order number? We'll process your refund as a priority."

![Mock-up (Chinese demo): the member writes that they bought the Dawn Moisture Serum last week, after two days their face got an allergy rash, and they'd like a refund; the chatbot apologizes, says they've been passed to a customer service supervisor who will contact them within 1 business day, and asks for their order number; then the supervisor, Ms. Lin, apologizes, asks for the order number and says the refund will be handled as a priority](https://docs.oakmega.com/en/recipe/images/complaint-escalation-05-member-1phones.png)

## How to check it's working

| What you want to know | Where to look |
|---|---|
| How many complaints came in this month | The **Total Number of Tagged People** for "Complaint: needs supervisor" and "Complaint: resolved"; the **Total Trigger Count** of the "Complaint to supervisor" chatbot |
| Which complaints are still open | In **Service Center**, filter by the organization "Complaints team" and the statuses **Open** and **In process** |
| Whether any complaints landed in another organization | In **Service Center**, use the **Advanced filter** on the tag "Complaint: needs supervisor" and check the organization column |
| Whether supervisors have a backlog | In the [Service Center Data Center](https://docs.oakmega.com/en/guide/service-center/analytics.md), filter by the Complaints team and check Open and In process (it shows current counts only, not response times) |

## Variations

* **Let AI calm things down first**: turn on **Transfer to Agent → Enable AI Agent** for the Complaints team, so AI collects the order number and photos before the supervisor takes over; see [Let an AI agent handle an organization's conversations](https://docs.oakmega.com/en/guide/service-center/ai-agent.md).
* **Route by type**: give health-related keywords such as "allergy" and "injury" a different tag and send them to the quality assurance team; send "refund" and "return" to the orders team.
* **Follow up after the case is closed**: a week later, post an article to members tagged "Complaint: resolved" to check in, with a make-good coupon attached.

## Next steps

* [Set up a LINE chatbot](https://docs.oakmega.com/en/guide/chatbot/line-chatbot.md)
* [Understand how conversations are assigned to organizations and agents](https://docs.oakmega.com/en/guide/service-center/assignment-rules.md)
* [Your first week with Service Center](https://docs.oakmega.com/en/recipe/service-center-first-week.md)
