Support console that pairs Gladly chats with orders and refunds

By General Input

Type a customer email or phone and see their whole support history, order tracking, and payment record on one screen instead of three tabs.

Integrations

  • Gladly
  • Shopify
  • Stripe

Type

App

Categories

  • Customer Support
  • Operations

Build me a support console my agents keep open all shift instead of juggling Gladly, Shopify, and Stripe in three tabs. The whole app is a single search screen: an agent types a customer email or phone number, and everything about that person loads into a two panel layout, with support history on the left and commerce history on the right.

Search resolves the person in Gladly first, using Find Customers with the typed email or phone number. Gladly customer emails are unique per organization, so an email search returns at most one profile and should load straight through. A phone search returns up to 50 profiles sorted by most recently updated, so when more than one comes back, show a compact picker listing name, email, and last updated date and let the agent choose the right person before anything else loads. Once a customer is selected, call Get Customer for the full profile and show name, email, phone numbers, and any custom attributes at the top of the left panel.

Under the profile, show the conversation timeline. Use List Customer Conversations to get the customer's conversations newest first, and List Conversation Items to load the items inside the selected conversation, rendering messages, notes, and logged calls in order with their channel and timestamp. Default to the most recent conversation and let the agent switch between them.

The right panel is commerce. Match the customer in Shopify with Search Customers using the email from the Gladly profile, then pull their orders with Get Customer Orders. For each order show the order number, date, total, line items, and financial status. Get the live shipping picture for each order from List Fulfillment Orders and List Fulfillments for Order, and show the fulfillment status plus the tracking company, tracking number, and tracking link for every shipment. Pin any order that is unfulfilled or only partially fulfilled to the top of the panel under a clear flag, because those are the orders customers are actually writing in about.

Below orders, show payments. Resolve the Stripe customer with List Customers filtered by that same email address, pull their payments with List Charges scoped to that customer, and pull List Refunds to match refunds back to charges. Show each charge with its amount, date, and status, and when a charge has been refunded, show the refund date and refund amount inline on that charge rather than in a separate section, so nobody has to go ask billing what happened.

From the same screen and without navigating away, an agent can log a note onto the current conversation with Create Conversation Item, open a follow-up for later with Create Task, and message the customer with Send Email or Send SMS. Sending should open a composer prefilled with the customer's address or phone number that the agent can edit before it goes out.

One rule to bake in: Gladly's outbound Send Email and Send SMS are non-routable and non-searchable, which means a message sent that way does not land on the customer's timeline by itself. So every time the console sends an email or an SMS, it must also write a conversation note with Create Conversation Item recording the channel, the recipient, the full message body, and which agent sent it. The Gladly timeline has to stay complete for whoever picks this customer up next.

Add a "Draft the update" button on the screen that kicks off a background agent. That agent reads the newest items on the current conversation with List Conversation Items, the matching order's shipping state from List Fulfillment Orders and List Fulfillments for Order, and the payment and refund position from List Charges and List Refunds. It then writes a specific customer-facing reply that names the actual order number, states the real reason the order is delayed based on the fulfillment state rather than a generic apology, and gives the current tracking status. The finished draft lands back in the app in the composer, clearly marked as a draft, for the human agent to edit and send. It must never send on its own. Show the button in a running state while the agent works, and when the draft arrives let the agent send it with Send Email or Send SMS, which then logs the conversation note like any other send.

Keep the selected customer and any unsent draft in app state so a page reload does not lose work in progress, and keep a short list of recently viewed customers per agent so switching back to someone is one click.

Related prompts

Explore more prompts
Let support send one-off Loops emails without an engineerCustomer lifecycle inspector for Loops, Stripe and PostHogReceiving dock console for inspecting and restocking Loop returnsSee which influencer creators actually drove Shopify salesMonth-end Stripe finance pack, stored and shared in SlackMorning dispatch board for your local delivery runsAnswer Instagram and Messenger DMs with the order on screenWhite glove queue for the VIP customers waiting on youRank your Intercom queue by what each customer pays youCatch the trials quietly dying before the card gets charged