In the world of Site Reliability Engineering (SRE) and DevOps, the 3 AM alert is a dreaded rite of passage. A notification fires from PagerDuty, a frantic message appears in Slack—your application is in trouble. What follows is a manual, high-stakes scramble: context-switching to your issue tracker, creating a ticket, copy-pasting alert details, digging through logs for a trace ID, and finally, waking up the right engineer. This gap between an alert and a actionable, context-rich issue is a major source of friction, slowing down response times and burning out your team.
What if you could close that gap? What if an alert could instantly and automatically trigger the creation of a detailed ticket, enriched with logs, assigned to the correct owner, all without a single manual click?
This is the promise of treating your workflows as code. With issues.do, you can transform your issue tracking from a manual chore into a programmable, automated service that works for you.
Observability platforms like Datadog, Sentry, and New Relic are fantastic at telling you when something is wrong. Project management tools like Jira or Asana are great for tracking the work to fix it. The problem lies in the manual bridge developers must build between them.
A typical manual workflow looks like this:
Each step introduces delays and the potential for human error. The result? Slower Mean Time to Resolution (MTTR), developer toil spent on administrative tasks, and inconsistent, low-quality bug reports.
issues.do tackles this problem with a simple, powerful idea: make issue management programmatic. Instead of a system you click, it's a service you can call. Our API-first approach allows you to automate the entire alert-to-action pipeline, turning complex operational processes into Business-as-Code.
By integrating issues.do into your incident response, you replace the error-prone manual steps with a simple script that runs in milliseconds.
Let's see how this works in practice. Most observability tools can fire a webhook when an alert is triggered. You can create a simple serverless function (e.g., AWS Lambda, Vercel Function) to "catch" this webhook and use the issues.do SDK to create a perfectly formatted issue.
Imagine your monitoring tool sends a webhook with this payload:
Your webhook handler can now use this data to create a rich, actionable issue automatically.
Look what we’ve accomplished in just a few lines of code:
This is just the beginning. Because issues.do is a programmable platform, you can orchestrate entire workflows.
By connecting your observability data directly to your issue tracking via an API, you eliminate manual toil and radically accelerate your incident response. You free your engineers fromyak shaving so they can focus on what they do best: building and fixing things.
This is the future of project management—dynamic, intelligent, and driven by code.
Ready to transform your workflows from manual to automated? Explore the issues.do platform today and turn your operational processes into a competitive advantage.
{
"alert_title": "API endpoint returning 500 error",
"service": "WebApp-Backend",
"details": "The /users/profile endpoint is failing intermittently with status 500.",
"dashboard_link": "https://monitoring.example.com/dashboard/xyz",
"priority": "High"
}
import { Issue } from '@do-sdk/issues';
// This function handles incoming alerts from your monitoring tool
export async function handleMonitoringAlert(alertPayload) {
// 1. Format a rich description using data from the alert
const description = `
**Service:** ${alertPayload.service}
**Details:** ${alertPayload.details}
**Dashboard Link:** [View Dashboard](${alertPayload.dashboard_link})
`;
// 2. Create the issue programmatically with issues.do
const newIssue = await Issue.create({
title: `ALERT: ${alertPayload.alert_title}`,
description: description,
project: 'WebApp-Backend-Triage',
priority: alertPayload.priority,
tags: ['automated-alert', alertPayload.service],
// Let AI find the on-call engineer for this service
assignee: 'worker.ai'
});
console.log(`Automated issue created from alert: ${newIssue.id}`);
return { status: 'success', issueId: newIssue.id };
}