When the customer is your error report
It usually goes like this. Someone writes to say the checkout spins and never finishes. You try it and they are right. Then you start wondering how long it has been broken and how many people hit the same thing and left without writing. The person who emailed is the one who cared enough to tell you, and most people who meet a broken page close the tab.
If a customer is the one who tells you the app is broken, you found out too late. By then the failure has already cost you whatever those visitors were about to do, and you are working backwards from a single complaint with no idea when it began.
Apps built with AI tools end up here often, for a plain reason. You asked for features, and the tool built features. Nobody asked for a way to hear about trouble, so none was built. The app works while you are testing it, and after launch the only people watching it are the customers.
A log waits to be read. An alert asks someone to act.
A log is a running list of what the app did and what went wrong, kept by your host, your database or the app itself. It is useful once you already know there is a problem, because it tells you what happened and when. Its weakness is that it sits there until a person opens it. If nobody opens it, an error written at nine in the morning is still unread at five.
An alert is a message sent to a person at the moment something goes wrong: a text, an email, a notification in a chat tool you already keep open. It carries enough to act on, meaning what failed, when, and where to look. The log is the record and the alert is the tap on the shoulder, and a launched product needs both.
Most AI-built apps we see have some logging, because hosting platforms commonly keep logs without being asked. Very few have a single alert. That gap is why the founder learns about a failure from a customer when the evidence was sitting in a log the whole time.
Choosing which failures get an alert
Alert on everything and people mute it. Alert on nothing and the app fails silently. The useful middle is a short list you decide on before launch: the failures that cost you a customer. For most products that list is sign-up, login, payment and the one feature people came for. Each of those should send a message to a named person when it fails.
Everything else can be logged and read on a schedule. A slow image, a typo in a form reply, one visitor on an old browser: these belong in the log, and a weekly look is enough. The table shows how the sorting usually comes out. Change the rows to match your product, and keep the alert column short.
Common failures, whether each one deserves an alert, who hears about it and how
- Failure
- New visitors cannot finish sign-up
- Alert or just log
- Alert
- Who is told
- The founder
- How
- Text message, at any hour you are taking sign-ups
- Failure
- Existing users cannot sign in
- Alert or just log
- Alert
- Who is told
- The founder, and whoever maintains the app
- How
- Text message
- Failure
- A payment fails because of your app or its setup
- Alert or just log
- Alert
- Who is told
- The founder
- How
- Text message and email
- Failure
- One customer's card is declined by their bank
- Alert or just log
- Log
- Who is told
- Nobody at the time
- How
- Read in the payment provider's records during a weekly review
- Failure
- The core feature returns an error
- Alert or just log
- Alert
- Who is told
- The founder, and whoever maintains the app
- How
- Text message
- Failure
- The whole site does not load
- Alert or just log
- Alert
- Who is told
- The founder
- How
- Text message from a check that runs outside the app
- Failure
- An email the app sends bounces for one address
- Alert or just log
- Log
- Who is told
- Nobody at the time
- How
- Read in the weekly review
- Failure
- Every email the app sends starts failing
- Alert or just log
- Alert
- Who is told
- The founder
- How
- Email to a personal address the app does not send through
- Failure
- A page loads slowly for some visitors
- Alert or just log
- Log
- Who is told
- Nobody at the time
- How
- Read in the weekly review, and promote it to an alert if it keeps growing
| Failure | Alert or just log | Who is told | How |
|---|---|---|---|
| New visitors cannot finish sign-up | Alert | The founder | Text message, at any hour you are taking sign-ups |
| Existing users cannot sign in | Alert | The founder, and whoever maintains the app | Text message |
| A payment fails because of your app or its setup | Alert | The founder | Text message and email |
| One customer's card is declined by their bank | Log | Nobody at the time | Read in the payment provider's records during a weekly review |
| The core feature returns an error | Alert | The founder, and whoever maintains the app | Text message |
| The whole site does not load | Alert | The founder | Text message from a check that runs outside the app |
| An email the app sends bounces for one address | Log | Nobody at the time | Read in the weekly review |
| Every email the app sends starts failing | Alert | The founder | Email to a personal address the app does not send through |
| A page loads slowly for some visitors | Log | Nobody at the time | Read in the weekly review, and promote it to an alert if it keeps growing |
Keeping alerts from turning into noise
An alert only works while the person receiving it still reads it. The fastest way to lose that is to send messages that need no action. After a week of texts about things that fixed themselves, you start swiping them away, and the one that matters gets swiped with the rest.
So hold each alert to a test: when it arrives, is there something you would do in the next hour? If the answer is no, move it to the log. If the answer is sometimes, tighten the condition until it is yes. A single failed sign-in is one person mistyping a password. Many failed sign-ins in a few minutes is your login being down, and that is the one to send.
Group repeats as well. If the payment step is broken, you need one message saying so and perhaps a reminder later while it stays broken. Forty messages, one per failed attempt, tell you nothing the first did not.
- Send one message per problem, with a count of how many times it happened.
- Say what failed in plain words at the top: "Checkout is failing", ahead of any error code.
- Include the time it started and a link to where the details are.
- Send alerts to a person with a name. A shared inbox that everyone assumes someone else reads does not count.
- Review the list each month and remove any alert you ignored every time it fired.
What you can set up, or ask your AI tool to set up
You do not need to read code to get the first few alerts in place. There are two kinds, and they cover different failures. The first watches from outside: a service visits your site on a schedule, the way a customer would, and messages you if the page does not answer. That catches the whole app being down, which the app cannot report about itself.
The second kind lives inside the app. At each of the steps on your alert list, the code notices its own failure and sends a message. Error tracking services exist for this, and many hosting platforms and payment providers can also notify you about failures on their side. Check what the accounts you already have will send before adding anything new.
Your AI tool can write the inside kind if you ask for it one step at a time and describe it the way you would to a person. For example: when a payment fails for a reason other than the customer's card being declined, send me an email that says which step failed and when, and do not send more than one for the same problem within an hour. Then ask the tool to show you where that message is sent from, so you know it exists.
Keep the secret keys for any alerting service out of the code the browser receives, the same as any other key. If you are unsure where your keys ended up after moving the app to a live address, our guide on apps that work locally and fail in production covers that.
Four alerts chosen before a launch
Test that the alert fires before you trust it
An alert you have never seen arrive is a guess. The code that sends it can be wrong like any other code: pointed at an old phone number, waiting on a condition that never happens, or relying on the very service whose failure it is meant to report. The only way to know is to break the thing on purpose and watch for the message.
Do this on a test copy of the app if you have one. If you only have the live app, pick a quiet hour, use your own account and undo each change straight after. Write down what you broke, whether the message came, how long it took and whether it told you enough to act.
- For the outside check: point it at an address on your site that does not exist and confirm you get the message, then point it back.
- For payments: use your payment provider's test mode and a test card it documents as failing, and confirm that a real fault in your setup alerts you while an ordinary decline does not.
- For login and sign-up: on a test copy, ask your AI tool to make the step fail on purpose for one test account, then remove that change.
- Check where the message landed. A text that went to an old number, or an email filed as spam, is the same as no alert.
- Repeat the test after any large change to the app, because a rewrite can remove the alert without anyone noticing.
When to get help
A founder can usually get the outside check and one or two inside alerts working alone. Get help when the alerts fire and you cannot tell from them what is wrong, when the same failure keeps coming back after each repair, or when the tests above show an alert that never arrives and the AI tool cannot explain why. Help is also worth having when money moves through the app and you cannot say with confidence what happens on a failed payment.
Our Diagnostic is a fixed-price written plan, with the fee credited to the build if you go ahead with us. For this problem we read the code and the accounts it depends on, list the steps where a failure would cost a customer, note which of them report anything today, and set out what to add in order. The work is done in your accounts, and your repo and accounts stay yours.
Before you launch, or this week if you already have
Each item is something you can confirm without reading code. Write the answers down so the next person who works on the app can see them.
- A written list of the failures that would cost you a customer, kept to a handful.
- For each one: who receives the alert and by what route.
- A check from outside the app that the site loads, sending to your phone.
- A dated note showing you broke each step on purpose and the message arrived.
- A second person who receives alerts when you are unreachable.
- A regular time in your calendar to read the logs for everything that does not alert.
We can make sure you hear about failures first.
Book a free consultation and tell us how you last found out something was broken. We will say whether it sounds like alerts you can add in your builder or whether the app needs the Diagnostic first. If we do the work, we add the alerts in your accounts, break each step on purpose with you watching, and give you the written list of what reports to whom.
Book a free consultationOn the project call, we’ll discuss the problem, your existing tools and what TDAT should take off your hands. Then we can define the scope and next steps.
Or call (919) 289-1231
Questions before we start
How do I find out my app is broken before a customer tells me?
Decide which failures would cost you a customer, usually sign-up, login, payment and the main feature, and have each one send a text or email to a named person when it happens. Add a check that visits the site from outside on a schedule. Then break each step on purpose once to confirm the message arrives.
What is the difference between logging and alerting?
A log is a record of what happened that waits for someone to read it. An alert is a message sent to a person when something goes wrong, so they can act. Logs help you investigate a problem you know about. Alerts are how you learn the problem exists.
Should every error in my app send an alert?
No. If every error sends a message, you will get so many that you stop reading them, and the serious one will be missed. Alert only on failures you would act on within the hour. Log the rest and read the log on a regular schedule.
Can my AI tool set up error alerts for me?
Often, yes. Ask for one step at a time and say plainly what should trigger the message, who receives it and how often it may repeat. Then test it by making that step fail on a test copy of the app. Do not assume the alert works because the tool said it added one.
My hosting platform already keeps logs. Is that enough?
Logs alone are not enough for a launched product, because nobody is told when something is written to them. Check whether your host, database and payment provider can send notifications about failures, turn on the ones that match your list, and add alerts inside the app for the steps they do not cover.
How do I test an alert without breaking the app for real users?
Use a test copy of the app where you can. For payments, use the provider's test mode. If you only have the live app, choose a quiet hour, use your own account, change one thing, watch for the message and put it back straight away. Keep a note of what you changed.