Linq phone line health and deliverability dashboard

By General Input

See every Linq sending number in one place: how much it sent, how much actually landed, and whether your texts arrive as blue bubbles or green ones.

Integrations

  • Linq
  • Google Sheets

Type

App

Categories

  • Operations
  • Marketing

Build me an app that shows the health of every phone line on my Linq account, so when texting stops working I can tell whether the problem is the copy, the line, or the audience. It has three tabs: line health, an address checker, and sender identity.

The main tab lists every sending number from List Phone Numbers as a card. For each line, show outbound volume today and across the last seven days against the recommended sustained ceiling of roughly 7,000 combined inbound plus outbound messages per line per day, so a line running hot is obvious. Build the volume and delivery numbers by walking List Chats for the account and then List Messages for each chat, reading each message's delivery status and grouping by sending number. Show the share of messages that reached delivered versus read versus failed, and the split between iMessage, RCS, and SMS conversations, so a line quietly falling back to plain SMS stands out at a glance. Label the read share as a floor rather than a true number, because read receipts only fire when the recipient has them enabled. Delivery status progresses pending, queued, sent, delivered, read, or failed, so treat anything short of delivered as unresolved rather than lost. If the account is a sandbox account it is capped at 100 messages per day, so compare against that ceiling instead when volumes suggest it.

The second tab is an address checker. I paste a list of phone numbers, the app runs Check iMessage Capability and Check RCS Capability against each one, and it tells me which channel each contact will actually receive on before I write a single message. Capability checks are limited to one check per ten seconds per address, so space the calls out, show progress while the list works through, and keep partial results on screen as they arrive rather than making me wait for the whole batch to finish. Summarize the completed list as a count of contacts reachable on iMessage, on RCS, and on SMS only, because routing is automatic: a chat goes out as iMessage only if every recipient passes the capability check, otherwise it falls back to RCS or SMS. That means one Android contact in a group drops the whole thread to a lower channel, and the summary should make that consequence clear.

The third tab handles sender identity. Show the contact card configured for each line from Get Contact Cards, let me fix or create one with Create Contact Card, and let me push a card into a specific conversation with Share Contact Card in Chat for the recipient who keeps asking who is texting them. Flag lines that have no active card, since that is a common reason recipients ignore a number. Sharing a card requires an active card on the sender number, an iMessage chat, and at least one prior outbound message, so disable the share action with a short explanation when a conversation does not meet those conditions, and do not let me share into the same chat more than once in a day.

Each line card gets a Diagnose this line button that kicks off a background agent scoped to that number. The agent reads that line's recent chats and messages through List Chats and List Messages, then weighs delivery outcomes, volume against the ceiling, the channel mix, whether a contact card is configured, and whether any conversation is bumping the hard per-pair limit of 30 messages per rolling 60 seconds. It writes a plain English verdict with a recommended fix back onto the card, for example sending volume is too high, no contact card is configured, or the audience is mostly Android so expect SMS. Store each verdict with a timestamp so the card always shows the latest diagnosis and I can re-run it later and compare.

Add a Save snapshot action that appends one row per line to a Google Sheet with Append Values, capturing the date, the number, outbound volume, the delivered, read, and failed shares, and the channel mix. A history view reads that sheet back with Get Values and charts line health over weeks and months, so I can see drift instead of guessing. Apps do not run on a schedule, so make this a button I press when I want a data point, and show the date of the last snapshot on screen so I know how current the history is.

Keep the reading fast: List Chats and List Messages are cursor paginated at up to 100 records per page, so page through them and cache results per line rather than refetching everything on every tab switch. This app should not send messages to anyone; the only outbound action is sharing a contact card when I explicitly ask for it. Keep the interface plain and scannable, and give every line card a clear healthy, watch, or problem state so I can triage the whole account in a few seconds.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to LoopsCandidate texting desk for your open Greenhouse roles