> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getthread.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Why Thread — and what changes for you

> The 3-minute case for the technician: a thread is a ticket, everything syncs to your PSA, and work arrives pre-scoped. Live in Inbox, not the PSA.

export const MarkComplete = ({id, signalDone = false}) => {
  const KEY = "thread-onboarding-completed";
  const read = () => {
    try {
      return JSON.parse(localStorage.getItem(KEY) || "[]");
    } catch (e) {
      return [];
    }
  };
  const [localDone, setLocalDone] = useState(false);
  const done = signalDone || localDone;
  useEffect(() => {
    const sync = () => setLocalDone(read().includes(id));
    sync();
    window.addEventListener("thread-onboarding-updated", sync);
    return () => window.removeEventListener("thread-onboarding-updated", sync);
  }, [id]);
  const toggle = () => {
    if (signalDone) return;
    const list = read();
    const next = list.includes(id) ? list.filter(x => x !== id) : [...list, id];
    try {
      localStorage.setItem(KEY, JSON.stringify(next));
    } catch (e) {}
    setLocalDone(next.includes(id));
    window.dispatchEvent(new Event("thread-onboarding-updated"));
  };
  return <button onClick={toggle} style={{
    width: "100%",
    padding: "0.7rem 1rem",
    marginTop: "1.5rem",
    borderRadius: "8px",
    border: "1px solid " + (done ? "#00B398" : "rgba(128,128,128,0.35)"),
    background: done ? "rgba(0,179,152,0.12)" : "transparent",
    color: done ? "#00B398" : "inherit",
    fontWeight: 600,
    fontSize: "0.95rem",
    cursor: "pointer",
    display: "flex",
    alignItems: "center",
    justifyContent: "center",
    gap: "0.5rem"
  }}>
      <span aria-hidden="true">{done ? "✓" : "○"}</span>
      {done ? "Completed" : "Mark as complete"}
    </button>;
};

export const ByRoleProgress = () => {
  useEffect(() => {
    const KEY = "thread-onboarding-completed";
    const TEAL = "#00B398";
    const BASE = "/start-here/roles/";
    const DONE_ICON = '<svg class="thread-rc-doneicon size-4" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#00B398" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">' + '<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/>' + '<polyline points="22 4 12 14.01 9 11.01"/></svg>';
    const COURSES = [{
      slug: "technician",
      steps: ["why-thread", "get-around-inbox", "day-one-setup", "daily-workflows", "ai-toolkit", "notifications-and-customers"]
    }, {
      slug: "dispatcher",
      steps: ["why-dispatch-in-thread", "read-the-board", "assign-and-schedule", "ai-for-dispatch"]
    }, {
      slug: "service-ops-manager",
      steps: ["set-up-the-desk", "sla-and-dispatch", "analytics-and-qa", "roll-out-and-adopt"]
    }, {
      slug: "csm-account-manager",
      steps: ["client-intelligence-and-health", "qbrs-and-reporting", "retention-and-expansion"]
    }, {
      slug: "security-compliance-owner",
      steps: ["security-work-in-thread", "data-and-compliance", "security-runbooks"]
    }, {
      slug: "sales-business-development",
      steps: ["the-ai-service-pitch", "quote-and-handoff"]
    }, {
      slug: "msp-owner-leadership",
      steps: ["the-rollout", "outcomes-and-analytics", "scale-ai-service"]
    }, {
      slug: "automation-engineer",
      steps: ["flows-and-intents", "thread-mcp-and-api", "build-with-super-magic"]
    }];
    const COURSE_SLUGS = new Set(COURSES.map(c => c.slug));
    const readLocal = () => {
      try {
        return JSON.parse(localStorage.getItem(KEY) || "[]");
      } catch (e) {
        return [];
      }
    };
    const isDone = (done, id) => done.includes(id);
    const decorate = () => {
      const done = readLocal();
      const scope = document.getElementById("sidebar-content") || document;
      const links = [...scope.querySelectorAll('a[href*="' + BASE + '"]')].filter(a => !a.closest("main"));
      links.forEach(a => {
        const m = (a.getAttribute("href") || "").match(/\/start-here\/roles\/([^/?#]+)\/([^/?#]+)/);
        if (!m) return;
        if (!COURSE_SLUGS.has(m[1])) return;
        const id = m[1] + "/" + m[2];
        const d = isDone(done, id);
        const has = a.querySelector(".thread-rc-check");
        if (d && !has) {
          const s = document.createElement("span");
          s.className = "thread-rc-check";
          s.textContent = "✓ ";
          s.style.color = TEAL;
          s.style.fontWeight = "700";
          a.insertBefore(s, a.firstChild);
        } else if (!d && has) {
          has.remove();
        }
      });
      COURSES.forEach(course => {
        const li = scope.querySelector('li[id="' + BASE + course.slug + '"]');
        if (!li) return;
        const row = li.querySelector(":scope > button") || li.querySelector(":scope > a") || li.firstElementChild;
        if (!row) return;
        const nameSpan = [...row.querySelectorAll("span")].find(s => s.textContent.trim() && !s.classList.contains("thread-rc-coursecheck"));
        if (!nameSpan) return;
        const allDone = course.steps.length > 0 && course.steps.every(s => isDone(done, course.slug + "/" + s));
        const has = nameSpan.querySelector(".thread-rc-coursecheck");
        if (allDone && !has) {
          const s = document.createElement("span");
          s.className = "thread-rc-coursecheck";
          s.setAttribute("aria-hidden", "true");
          s.style.display = "inline-flex";
          s.style.alignItems = "center";
          s.style.verticalAlign = "-0.2em";
          s.style.marginRight = "0.35em";
          s.innerHTML = DONE_ICON;
          nameSpan.insertBefore(s, nameSpan.firstChild);
        } else if (!allDone && has) {
          has.remove();
        }
      });
    };
    decorate();
    const iv = setInterval(decorate, 600);
    window.addEventListener("thread-onboarding-updated", decorate);
    window.addEventListener("storage", decorate);
    return () => {
      clearInterval(iv);
      window.removeEventListener("thread-onboarding-updated", decorate);
      window.removeEventListener("storage", decorate);
    };
  }, []);
  return null;
};

<ByRoleProgress />

Thread is an AI-powered service desk that sits on top of your PSA. It gives your customers modern chat support — in Microsoft Teams, Slack, a desktop app, or on the web — and gives you one real-time workspace, **Inbox**, where every conversation, ticket update, and action lives together.

Here's the part that matters for you: **a thread is a ticket**. Every thread in Inbox syncs with your PSA — ConnectWise, Autotask, or HaloPSA — in real time over webhooks. When you reply, change a status, log time, or reassign, it lands in the PSA automatically. You don't work in two systems. You work in one.

## The golden rule of adoption

<Tip>
  **Live in Inbox, not the PSA.** Everything you do in Inbox syncs back automatically. The techs who get the most out of Thread treat Inbox as home base all day — the PSA becomes the system of record you rarely need to open.
</Tip>

## What's actually in it for you

<CardGroup cols={2}>
  <Card title="Tickets arrive pre-worked" icon="bullseye">
    The [Triage Agent](/ai-agents/getting-started-with-triage-agent) responds to new requests 24/7, gathers the details you'd normally chase down, sets priority and category, and can resolve routine requests before they hit your queue.
  </Card>

  <Card title="Less swivel-chair" icon="bolt">
    Statuses, notes, time entries, scheduling, and approvals — all from one screen. Slash commands and keyboard shortcuts keep your hands on the keys.
  </Card>

  <Card title="Context walks in with the ticket" icon="brain">
    [Contact Intelligence](/ai-agents/contact-intelligence) shows what's known about the person — devices, past issues, what fixed it last time — before you type a word.
  </Card>

  <Card title="An AI teammate on demand" icon="sparkles">
    [Super Magic](/super-magic/meet-super-magic-your-ai-assistant-in-the-inbox) searches tickets, clients, and knowledge in plain language and — with your confirmation — updates tickets, logs time, and schedules work for you.
  </Card>
</CardGroup>

## Where work comes from

Threads land in Inbox from several sources, and each thread shows a small **source icon** next to its summary so you always know where it came from.

| Source                  | What it means for you                                                                                                     |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Messenger — Chat**    | A live chat started with the **Chat** button. These carry a **5-minute response expectation (SLA)** — jump on them first. |
| **Messenger — Request** | A standard request submitted with the **Request** button. No live timer — treat it like an email-paced conversation.      |
| **Email**               | Email-based tickets synced from your PSA. Replies can go back out by email.                                               |
| **Phone / other**       | Tickets created from calls or other PSA channels, plus threads you create by hand with **New Thread**.                    |

<Info>
  **Read the conversation top-to-bottom before you reply.** By the time a chat or email reaches your queue, the Triage Agent may have already replied instantly, asked clarifying questions, gathered the scope, and set priority and category. The answers you need are often already there.
</Info>

<MarkComplete id="technician/why-thread" />

## Next

Now that you know what changes, learn the workspace you'll live in all day.

<Card title="Get around Inbox" icon="inbox" href="/start-here/roles/technician/get-around-inbox">
  The three panels you'll live in, Views, and the anatomy of a thread.
</Card>


## Related topics

- [Technician](/start-here/roles/technician.md)
- [Why dispatch is different in Thread](/start-here/roles/dispatcher/why-dispatch-in-thread.md)
- [Inbox Channels Deprecation: What's Changing and When](/inbox/channels-deprecation-in-inbox.md)
