Linq phone line health and deliverability dashboard

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.

App
LinqGoogle SheetsOperationsMarketingResearch & MonitoringAI Reports
PromptCreate

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.

What does this prompt do?

  • Lists every one of your sending numbers with how much it sent today and over the last seven days, measured against the volume a single line can comfortably carry
  • Shows what share of your messages landed, got read, or failed, and whether conversations are going out as blue bubbles, RCS, or plain text, so a number quietly downgrading is obvious
  • Checks a pasted list of contacts and tells you which channel each person will actually receive on, before you write a single message
  • Gives every line a Diagnose button that has an assistant review recent activity and write back a plain English verdict on what to fix, plus a dated snapshot you can save to Google Sheets to chart health over months

What do I need to use this?

  • A Linq account with at least one phone number set up for sending, and the access key your Linq representative provides
  • A Google account with access to the spreadsheet where you want the history saved
  • Some recent texting activity on your numbers, since the dashboard reads your existing conversations to work out what is healthy

How can I customize it?

  • Change the daily volume ceiling each line is measured against to match what your account actually sustains
  • Adjust the window the dashboard covers, for example fourteen or thirty days instead of seven
  • Steer what the diagnosis pays attention to, such as flagging Android-heavy audiences or lines missing a contact card
  • Point the saved history at a different spreadsheet or tab

FAQs

Will this tell me why my texts stopped getting replies?
It narrows down where to look. You see whether a number is sending more than it should, whether messages are failing instead of landing, and whether conversations have dropped from blue bubbles to plain text. The Diagnose button goes a step further and writes a plain English verdict with a suggested fix for that specific line.
Can I tell whether someone will get a blue bubble before I text them?
Yes. Paste a list of numbers into the address checker and it reports which channel each contact will actually receive on. It spaces the checks out automatically to stay within what Linq allows, and shows results as they come in.
Does the app text my contacts?
No. It only reads your existing conversations to build the dashboard. The single outbound action is sharing your contact card into a conversation, and that only happens when you click the button for it.
Why is my read number lower than my delivered number?
Read receipts only appear when the recipient has them switched on, so the read share is always a floor rather than a true count. Delivered is the number to trust when you are judging whether a line is working.
Does it keep history so I can see trends?
Yes. Press Save snapshot and it appends a dated row per line to a Google Sheet, and the history view reads that back as a chart. Take a snapshot on whatever rhythm suits you, such as end of day or once a week.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Local listing health board for every location you manage

See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.

Local Business Data
Google Sheets
App
Let support send one-off Loops emails without an engineer

Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.

Loops.so
Stripe
Google Sheets
App
Stop cold emails to anyone with a live deal in Pipedrive

Every night at 2am, pull the contacts on your open and won deals and block them from your cold outreach before the next send goes out.

Mailshake
Pipedrive
Google Sheets
Deterministic Code
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App
LinkedIn Ads budget pacing dashboard for every client account

See every LinkedIn ad account's spend against the budget you committed to, catch overspend early, and rebalance without rebuilding a spreadsheet.

LinkedIn Ads
Google Sheets
Slack Bot
App

Stop guessing which of your numbers is the problem.

Put volume, delivery, and channel mix for every texting line on one screen, and get a plain English verdict on what to fix.