What Happens During a Software Incident and When You'll Hear Updates
This guide is for customers who want a clear, practical picture of what a software agency is actually doing during an incident. You’ll learn the usual incident timeline, who is involved, what updates you should expect at each stage, and how to judge whether communication is useful or just noise.
TL;DR — During an incident, the team is usually moving through a predictable sequence: detect, confirm, contain, diagnose, fix, verify, and review. The single most useful thing to expect is not constant chatter, but time-boxed updates that tell you three things clearly: current impact, what is being done now, and when the next update will arrive. Reading time: ~7 min
What it is and where it sits
An incident is an unplanned event that degrades or interrupts a service: your website is down, checkout fails, emails stop sending, or data is exposed. In a software agency context, incident response is the operating process used to detect the problem, coordinate people, reduce harm, restore service, and explain what happened.
This process sits above the technology stack. It is not one tool. It connects monitoring (systems that detect failures), application logs (records of what the app did), infrastructure (servers, databases, DNS, load balancers), support channels, and customer communication.
In a typical request flow, a customer action travels through several layers. An incident can happen at any one of them, and the response process has to quickly figure out where.
User browser/app
|
v
DNS (turns name into IP)
|
v
CDN / WAF (traffic filtering and caching)
|
v
Load balancer / reverse proxy
|
v
Application service
|
+--> Database
|
+--> Queue / background workers
|
+--> Third-party services (payments, email, SMS, maps)
Incident response partly replaces ad-hoc troubleshooting like "everyone jump in Slack and guess." Instead, it gives the team a structure: one person coordinates, one or more people investigate, customer-facing updates are deliberate, and changes are tracked.
What talks to this process?
- Monitoring and alerts: uptime checks, error-rate alarms, CPU/memory alarms, failed job alerts.
- Humans: support staff, engineers, project managers, and sometimes vendor support.
- Communication channels: status page, email, ticket, phone, or shared chat channel.
- Change systems: deployment logs, infrastructure change history, DNS changes, database migrations.
From your side as a customer, the process usually becomes visible through four things:
- An acknowledgment that something is wrong.
- A statement of impact: who is affected and how.
- Periodic updates with a next-update time.
- A final resolution and later, a post-incident summary.
How it actually works
Here is one realistic end-to-end example: after a new release, users can log in, but checkout fails with HTTP 500 errors (a generic server error) for about 40% of orders.
Step 1: Detection
The issue is usually found in one of three ways:
- Monitoring sees a spike in 500 errors.
- Support gets multiple customer reports.
- An engineer notices abnormal behavior after a deployment.
A useful first customer message at this stage is short and specific:
- "We are investigating elevated checkout failures. Impact appears limited to order placement; browsing and login still work. Next update in 30 minutes."
That message matters because it separates confirmed facts from guesses.
Step 2: Triage
Triage means deciding severity and assembling the right people. The team asks:
- Is this a full outage or partial degradation?
- Is revenue affected?
- Is there any sign of data loss or security exposure?
- Did anything change recently: deploy, config change, DNS update, certificate renewal, database migration?
At this point, a coordinator is often assigned. Their job is not to fix the bug directly. Their job is to keep the incident organized: assign tasks, keep a timeline, control changes, and send updates.
What you should expect to hear:
- Severity: "Major incident" or similar plain-language label.
- Scope: "Checkout only" versus "all users."
- Next step: "We are comparing the current release with the previous version and checking database errors."
- Next update time: usually 15, 30, or 60 minutes depending on severity.
Step 3: Containment
Containment means reducing harm before the root cause is fully understood. In our example, the team sees the failures started two minutes after a deployment. The fastest safe action is to roll back to the previous release.
If rollback is possible, this is often the best move. It restores service while the team investigates calmly.
What you should expect to hear:
- "We identified a likely correlation with today’s deployment and are rolling back now."
- "Expected effect: checkout should begin recovering within 5-10 minutes if rollback succeeds."
This is better than a vague "we are working on it" because it tells you what concrete action is underway.
Step 4: Diagnosis
Suppose rollback improves some traffic but not all. The team then checks logs and database queries and finds that a schema mismatch (the app expects a new database column, but some app instances are still on old code) is causing intermittent failures.
This stage often includes:
- Comparing successful and failed requests.
- Reviewing deployment history.
- Checking database locks, slow queries, and connection pool exhaustion.
- Looking at third-party provider health if payments or email are involved.
What you should expect to hear:
- What is known: "The error is in the checkout service’s database interaction."
- What is not yet known: "We have not found evidence of data corruption."
- What is being tested: "We are draining traffic from the affected application instances and validating order creation."
Step 5: Fix and recovery
The team applies the least risky fix that restores stable service. In this example:
- Remove the bad app instances from the load balancer.
- Re-run the deployment cleanly so all instances match.
- Verify successful test orders.
- Watch error rate and payment confirmations for 15-30 minutes.
A strong customer update here sounds like:
- "Mitigation is in place. New checkout attempts are succeeding in our tests and error rates have returned to normal levels. We are monitoring before declaring full resolution. Next update in 30 minutes."
Notice the wording: not "fixed" too early. Good teams avoid declaring victory before the graphs stabilize.
Step 6: Resolution
Once the service is stable and the team has checked for side effects, the incident is resolved.
What you should expect to hear in the resolution note:
- Start and end time.
- Customer impact in plain language.
- Immediate cause if known.
- Whether any customer action is needed.
- Whether a fuller review will follow.
Example:
- "Resolved: checkout failures occurred from 14:07 to 14:42 UTC due to an incomplete application rollout after a schema change. No payment data was lost. Affected customers may need to retry failed orders; we are contacting those users directly. A post-incident summary will follow."
Step 7: Post-incident review
This happens after the fire is out. The goal is not blame. The goal is to prevent recurrence.
A useful review usually covers:
- Timeline of events.
- Root cause.
- Why detection did or did not happen quickly.
- Why safeguards did or did not work.
- Concrete follow-up actions with owners and dates.
As a customer, this is where you learn whether the agency is improving the system or just surviving incidents one by one.
When to use it (and when not to)
You do not need a full incident process for every bug. The process is for issues where speed, coordination, and communication matter.
| Scenario | Recommendation |
|---|---|
| Entire site is down or key workflow fails for many users | Use full incident process immediately |
| Partial outage affecting revenue path like login, checkout, booking, or API auth | Use full incident process |
| Security exposure, suspicious access, or possible data leak | Use security incident process immediately; communication may be more controlled while facts are verified |
| Single-user bug with workaround available | Handle as support issue, not full incident |
| Cosmetic UI issue with no business impact | Track as defect, not incident |
| Scheduled maintenance with expected downtime | Use maintenance communication, not incident communication |
| Third-party provider outage affecting your app | Still run incident process; customers care about impact, not whose fault it is |
You probably do not need a major-incident bridge call, executive escalation, and 15-minute updates if:
- only one internal admin user is affected,
- there is no customer-facing impact,
- the issue is already understood and low risk,
- or the fix can wait for normal business hours without increasing harm.
Trade-offs
A real incident process has benefits, but each benefit costs something.
| Benefit | What it costs |
|---|---|
| Faster coordination under pressure | More roles, more process, and people pulled off planned work |
| Clear customer updates | Time spent communicating instead of debugging; requires discipline to avoid speculation |
| Safer changes during an outage | Recovery can be slower because risky "try things" behavior is restricted |
| Better audit trail and learning | Extra documentation work during and after the event |
| Reduced repeat incidents through follow-up actions | Engineering time for prevention work that may not produce visible new features |
| Better executive/customer confidence | Pressure to communicate before all facts are known; weak teams may over-promise |
The biggest trade-off is speed versus certainty. Early in an incident, the team often knows less than you want them to know. Good communication at that stage sounds cautious and specific, not polished and definitive.
In practice
Below are two practical templates a software agency can adapt today. Even if you never send these yourself, they show what good incident communication looks like.
Example 1: Status update template
Incident: Elevated checkout failures
Status: Investigating
Started: 2026-08-10 14:07 UTC
Current impact: Some customers cannot complete checkout. Browsing and login are operating normally.
What we know: Error rates increased immediately after a production deployment.
What we are doing now: Rolling back the deployment and validating order creation.
Customer action: Please retry only after we confirm recovery.
Next update: 2026-08-10 14:30 UTC
This is the minimum useful update: impact, current action, and next update time. The gotcha is sending a wall of internal detail; customers usually need scope and timing more than stack traces.
Example 2: Internal incident timeline in JSON
[
{
"time": "2026-08-10T14:07:00Z",
"event": "Alert fired: checkout HTTP 500 rate above threshold"
},
{
"time": "2026-08-10T14:10:00Z",
"event": "Incident declared; coordinator assigned"
},
{
"time": "2026-08-10T14:14:00Z",
"event": "Deployment rollback started"
},
{
"time": "2026-08-10T14:22:00Z",
"event": "Partial recovery observed; intermittent failures continue"
},
{
"time": "2026-08-10T14:31:00Z",
"event": "Root cause isolated to mixed app versions after schema change"
},
{
"time": "2026-08-10T14:42:00Z",
"event": "All checkout instances redeployed; error rate returned to baseline"
}
]
This creates the backbone for the final post-incident review. The gotcha is editing history after the fact; keep original times and add corrections as new entries instead of rewriting the timeline.
Example 3: Customer-facing resolution email
Subject: Resolved: Checkout disruption on 10 Aug 2026
From 14:07 to 14:42 UTC, some customers were unable to complete checkout.
Cause: an incomplete rollout during a production deployment caused intermittent application/database mismatches.
Resolution: we rolled back the deployment, removed affected instances from service, and redeployed cleanly.
Data impact: we found no evidence of payment data loss or corruption.
Customer action: if you attempted checkout during the incident and did not receive confirmation, please retry now.
Next step: we are adding a deployment check to block mixed-version rollouts after schema changes.
This gives customers closure and a practical next step. The gotcha is claiming root cause too confidently if the investigation is still open; if needed, say "preliminary cause" and send a follow-up.
Further reading
- Google SRE Book, the "Managing Incidents" chapter
- Atlassian Incident Management Handbook
- NIST Computer Security Incident Handling Guide (SP 800-61)
- PagerDuty Incident Response Documentation
- The "5 Whys" technique in Toyota Production System literature
This article was written by an AI system and published pending human review. Verify anything you intend to act on.
Have a project in mind?
Get an instant AI price estimate for it, or talk directly to our team.
One email a month on what we learn building with AI