$ stayupfront --support

Support tickets that know about your incidents.

One inbox, real SLAs, and a ticket that already knows whether the thing your customer's complaining about is the incident you're fighting. No wiring three tools together. No per-seat bill.

A B2B support tool for the team where the person answering the ticket is also the one on call.

$ tail -f your-tuesday.log

It's the same Tuesday, in two tools that don't talk.

A customer emails: "Is the dashboard down for anyone else, or just us?" You're the one who picks it up — and you genuinely don't know. Your support tool doesn't know about outages. So you go and check: the uptime tool, the incident channel, the three Slack threads where someone might have said something.

Turns out yes — there's an incident open, declared forty minutes ago, and the engineer fixing it is you from an hour ago. The customer waited while you played detective on your own systems. Multiply that by every ticket during every incident, and the cost isn't the minutes. It's the customer deciding you don't have a handle on it.

$ stayupfront --the-promise

When something breaks, the person answering the ticket should already know.

Staying upfront with your customers starts with not being the last to know yourself. If your support inbox and your incidents live in the same place, the agent picking up "is this down?" sees the open incident on the ticket — and can tell the customer the truth: yes, we know, here's where we are with it. That's the whole product in one sentence.

$ stayupfront --linked-to-incidents

One inbox, and it knows about your incidents.

Every other tool that does this does it by wiring two products together — your support tool over here, your incident tool over there, an integration in the middle that someone has to keep alive. StayUpfront doesn't have a middle. Tickets and incidents are views of the same data.

So when a ticket lands during an incident, the agent sees the open incidents right on the ticket — affected components, current status, latest update — without leaving it. They link the matching one in a click, and now the connection is recorded both ways: the ticket shows its incident, the incident shows its tickets. Reporting the same outage three times? They're all linked to the one incident.

And it runs the other direction too. Declare an incident straight from a ticket and it arrives pre-filled with what you already know. No integration to maintain, no "is this related?" detective work, no second login.

TKT-4117 In Progress High

Dashboard loading slowly

Priya at Northwind · opened

Linked incident
INC-2043 Investigating

Dashboard loading slowly for some customers

Dashboard Declared

Latest update

Identified a slow query from today's deploy. Rolling it back now — we'll confirm here once load times recover.

Linked both ways: this ticket shows its incident; the incident shows its tickets.

$ stayupfront --status-flow

The status flow does the busywork.

agent replies, becomes waiting on customer customer replies, becomes in progress
New In Progress Waiting on Customer Resolved

A ticket moves from new, to in progress, to waiting on customer, to resolved, to closed — and most of those moves happen without anyone touching a dropdown. Reply to the customer and the ticket flips to "waiting on customer." They reply and it flips back to "in progress." The first time an agent answers, the first-response clock stops. Resolve it and the resolution clock stops. The status reflects whose court the ball is in — automatically.

Underneath the one thread your customer sees, the team keeps internal notes the customer never does. Same ticket, same place — the working-out stays private, the conversation stays clean.

Tickets arrive from the customer portal, or get logged by hand when someone phones in — both into the same inbox.

$ stayupfront --optional-slas

Optional guardrails that keep you honest.

SLAs in StayUpfront are off by default and entirely yours — an internal guardrail that keeps your team honest to each customer, never shown to them as a promise. It's all there when you want it and out of the way when you don't: no engine to configure for a week before it does anything. Turn on the targets that help, ignore the rest.

Set a default for everyone, a tighter target for the accounts that need it, or nothing at all. An org-wide default gives every customer the same baseline. A customer-specific target holds you to more for a particular account, and quietly overrides the default for them. Either can be left unset. There's no obligation to use any of it.

Two clocks: response pauses when the ball's in the customer's court, resolution tracks time to fixed — and both show the real elapsed time alongside the credited time, so a paused clock can't hide a ticket that's quietly gone stale.

SLA · internal view

TKT-4102 · waiting on customer

Next response — clock kept running

NR 2h 10m over

TKT-4088 · open 3 days

Resolution — credited time, not wall-clock

R 4h left

12h elapsed (8h paused)

$ stayupfront --support-dashboard

The screen you sit on all shift.

Open one screen and see the whole shift at a glance: what's breached, what's about to, what's waiting on a first reply, what's unassigned. SLA Watch puts the most urgent tickets on top — breached in red, at-risk in amber. Workload shows who's carrying what. Tickets-by-company flags the account that's suddenly raised five today. The triage queue shows what just came in and how it sorted.

Every number on it is a door. Click "3 breached" and you're in the inbox filtered to exactly those three. It's built to be acted on, not admired.

3
Breached
5
At risk
7
Awaiting first reply
4
Unassigned
26
Active total

SLA Watch

TKT-4102

Checkout returns 500 on retry

Northwind

Urgent 2h 10m over
TKT-4097

SSO redirect loop after invite

Contoso

High 18m left
TKT-4088

Export missing last 24h of rows

Acme

High 4h left
$ stayupfront --triage

Una Una triages so the queue arrives sorted.

New tickets don't land cold. Una — the AI inside StayUpfront — reads each one as it comes in and sorts it: sets the priority, files it under the right category, tags it against the right components, and links it to a related incident if there's one open. The queue arrives already sorted, in seconds, before anyone opens the inbox. Every call is logged with its reasoning, and anything you've set by hand Una leaves alone — so when an agent changes something, nothing's lost and you can see exactly what Una did and why.

Your customer sees their ticket the second they send it — no waiting for someone to open the inbox first.

How we think about AI
TKT-4131 New

Billing page won't load after the latest invoice

Una suggested
High Billing

Customer can't open the billing page after their latest invoice posted; likely a render error on the invoice view.

$ stayupfront --b2b-shaped

Your customers are companies, not email addresses.

Consumer support tools think in inboxes — one person, one thread. B2B doesn't work like that. A customer is the company; contacts are the people. When someone logs into the portal, they see every ticket their colleagues raised, not just their own — so whoever picks up the thread already has the history instead of starting fresh.

SLAs configure per customer, too. The account on a tighter agreement gets tighter targets; everyone else cascades to your sensible default. And if you run support across more than one product, it's all one organisation and one internal workspace — your team works in one place, each customer sees only what's theirs.

Northwind

One company · three people

Shared portal
TKT-1043 Reply needed

Can we raise the webhook rate limit on our plan?

Priya Shah ·
TKT-1041 Open

SSO login redirect loops on staging

Daniel Okafor ·
TKT-1038 Resolved

CSV export missing the new columns

Sam Ellis ·
$ stayupfront --no-per-seat

No per-seat. Add the whole team.

The loudest complaint about every tool in this category is the same: it's priced per seat, so every person you add multiplies the bill. For a small B2B team that's the killer cost — and it quietly pushes you to share a login, or to not give the new hire access, or to treat customer ops as a one-person job because that's what you're paying for. We don't bill per seat. Add the engineer who shipped the change, the founder who sold the deal, the ops person who owns the runbook — none of them costs you a seat. Una doesn't take a seat either — already part of the team, not a line on your bill.

Read the pricing principles

Here's a small decision I'm oddly proud of. Most SLA clocks pause the moment a ticket's marked "waiting on customer" — which is fair, until you realise it's the easiest place in the world to park a ticket and forget it. So we left one clock running. Flip a ticket to "waiting on customer" without actually replying, and the next-response clock keeps ticking, because the customer really is still waiting on you. It's a tiny thing. But it's the difference between SLAs that flatter you and SLAs you can actually trust — and trust is the whole job.

Rob Gough — Rob Gough, Founder
$ stayupfront --what-this-isnt

What this isn't.

A short, honest list — so you can tell quickly whether we're the right shape for you.

Not an enterprise ITSM platform. No CMDB, no change-approval boards, no six-week rollout. If you need a service desk with a dedicated admin, the big platforms are built for that — we're built for the team that doesn't have one.

$ stayupfront --is-this-you

You'll know if this is you.

You're a founder and one engineer.

Support and on-call are the same job, done by the same two people, in tools that don't know about each other. When a ticket comes in during an outage, you want it to already know.

You're fifteen people, tired of paying per seat for three tools.

A support tool, a status page, an incident tool — three bills, three logins, and the bill grows every time you hire. You want one tool, one bill, and pricing that doesn't tax you for adding the right person.

$ stayupfront --signup
[ private beta · shaping the product ]

Want your support tickets to know about your incidents? Get in early.

Private beta in a few weeks. I'm letting people in a small group at a time so I can actually work with each of you — what's working, what isn't, what to build next on the support side. The earliest customers have the most say in what this turns into.

Drop your email

Direct email from Rob when your slot's ready. No drip sequence.