Sola Journal Motif
Sola Journal Logo

A small journal where UX, code, and everyday life meet.

#ux clinic#customer support#cancellation flow#confirmation & trust

Casual Chat, Serious Contract

Story from the field

A small everyday moment that didn't feel quite right.

I recently had to cancel an electricity service that I had already signed up for as part of a move. The company offered two options for cancellation: phone or chat. The phone line was constantly busy, so I switched to the chat option.

The chat window appeared on the right edge of the screen, in a fairly small area. The agent first asked me to enter my application number, so I went back to the confirmation email, found the number, and typed it in. I expected the process to move forward from there.

Instead, the agent started asking for almost every detail I had already provided at sign-up: my full name, address, phone number, and even the specific plan I had chosen. The plan name wasn’t clearly written in the confirmation email, so I had to rely on my memory and pick what I thought was the right one. At that point, I started to worry:

If I get this wrong, will the cancellation fail and will I still get billed later?

After I finished answering everything, the chat simply responded with a brief message saying that the cancellation had been accepted. There was no email confirmation. The agent felt like a human operator, but the final confirmation was very light, given how much effort and risk the user carries in this flow.

When I told the agent that I was still worried, they suggested I take a screenshot of the chat as a record. Overall, it felt like the user was doing most of the work and holding most of the uncertainty, inside a UI that looks light and casual.

Frictions & Possible Tweaks

Where the experience rubs, and small moves that could help.

1
Qfriction

A lightweight chat UI for a heavyweight task

A chat window naturally feels like a light, conversational channel. It’s great for quick questions or simple requests. In this case, though, the task itself is quite heavy from the user’s point of view: cancelling a contract that can affect future billing and service status.

That combination can create a gap:

  • The chat UI feels casual and low-stakes.
  • The task is financially and emotionally high-stakes.
  • Compared to a traditional form, it’s harder to see a solid record of what was processed.

In this flow:

  • There was no clear summary of which contract was cancelled and how.
  • There was no follow-up email or visible record in a “My Page” section.

So even though the interaction itself was smooth, it was difficult to leave with a strong sense of:

Yes, this is officially done and I have a reliable record.

+Possible Tweaks

Keep the lightness, add a stronger sense of completion

Chat can still be a great channel here. The experience just needs a bit more visible certainty at the end.

For example, the flow could:

  • Show a clear summary in the chat at the end:
  • Contract number
  • Address
  • Plan name
  • Cancellation date
  • Any important conditions
  • Send an automatic Cancellation complete email based on that summary.
  • Explicitly say in the email body:

This email is your confirmation and proof of cancellation.

  • Optionally, reflect the status in the user’s account and mention when it will be visible there.

This kind of small addition lets the chat remain friendly and lightweight, while still giving the user the feeling that an official, traceable action has been completed.

2
Qfriction

Too many fields for the user, not enough reuse of existing data

To cancel, the user was asked to enter:

  • Application number
  • Full name
  • Address
  • Phone number
  • Plan selection

In practice, the application number should already be a key that links to all the other information. In this flow, though, it behaved more like just one more field among many.

From the user’s side, that means:

  • Re-typing information they have already provided once.
  • Having to remember details like the plan name, which may not be visible anywhere.
  • Holding the anxiety of:

If I choose the wrong option here, will the wrong contract get cancelled, or will it not be cancelled at all?

+Possible Tweaks

Let the system do the lookup, and ask the user to confirm

The important parts here are identity verification and accurate contract matching. Those don’t have to rely on the user re-entering everything.

A lighter flow for the user could look like this:

  1. Ask for only what is needed to look up the contract (for example, application number + phone number).
  2. Use that to fetch the contract on the backend, and show the full contract summary in the chat:

We found this contract: Plan: X Address: … Cancellation date: …

  1. Ask for a simple confirmation:

Do you want to cancel this contract?

with a clear Yes, cancel this action. 4. Send an automatic email confirmation and/or update the user’s account view.

This way:

  • The system takes care of using existing data.
  • The user’s input load is much lower.
  • The operator can focus more on edge cases and support, rather than manual verification.

The flow still protects the company and ensures correctness, but it doesn’t rely on the user doing repetitive, error-prone work inside a tiny chat window.

Key Takeaways

A quick keyTakeaways you can reuse in your own work.

  • Chat is a comfortable, approachable channel, but when money or contract status is involved, it also needs visible signs of certainty and traceability.
  • Users feel more at ease when they can clearly see what was processed, which contract was affected, and have a record they can refer back to.
  • Application numbers and stored data are powerful tools. When the system uses them to pre-fill and display information, the user can simply confirm instead of reconstructing everything from memory.
  • In high-stakes flows, a good UX is often less about choosing chat vs. form and more about aligning the level of effort and assurance with what the user actually needs in that moment.

SOLA Journal is a publication by SOLA Studio.