> ## 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.

# Service & Ops Manager

> The service manager's course for Thread: structure teams and pods, keep XLAs and dispatch healthy, watch analytics and QA, and drive desk adoption.

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 />

You run the desk. Structure the team, keep XLAs and dispatch healthy, watch the numbers, and drive adoption — that's the job, and Thread gives you the levers for every part of it. This is your course: four lessons that take you from setting up teams and pods to reading analytics, running QA, and rolling Thread out across the desk, plus the skills and ritual built for a service manager's week.

## The course

Work these in order — each ends with a link to the next. The first two are configuration you set once; the last two are habits you run every week.

<Steps>
  <Step title="Set up the desk">
    Service team structure, Inbox teams and pods, and the Views your team lives in. [Read →](/start-here/roles/service-ops-manager/set-up-the-desk)
  </Step>

  <Step title="XLAs & dispatch">
    Response timers, auto-dispatch profiles, available-for-dispatch, and business hours. [Read →](/start-here/roles/service-ops-manager/sla-and-dispatch)
  </Step>

  <Step title="Analytics & QA">
    Magic Analytics, View insights, CSAT, and a repeatable QA loop. [Read →](/start-here/roles/service-ops-manager/analytics-and-qa)
  </Step>

  <Step title="Roll out & drive adoption">
    Change management, enablement, and the rituals that make adoption stick. [Read →](/start-here/roles/service-ops-manager/roll-out-and-adopt)
  </Step>
</Steps>

## Your starter kit

The [Skill Library](/skill-library/overview) has a deep bench of QA and analytics skills built for running a desk. Start with these — then press **`⌘K`** and search for any management task ("staffing", "sla breach", "reopen") to find the rest.

<CardGroup cols={2}>
  <Card title="Weekly Ops Report" icon="chart-line" href="/skill-library/reporting-and-analytics/weekly-ops-report">
    A desk-wide performance read, packaged for your weekly review.
  </Card>

  <Card title="SLA Analytics" icon="gauge-high" href="/skill-library/reporting-and-analytics/sla-analytics">
    Track XLA attainment and explain where time is going.
  </Card>

  <Card title="Tech Performance Review" icon="user-group" href="/skill-library/reporting-and-analytics/tech-performance-review">
    A fair, data-backed read per technician before a one-on-one.
  </Card>

  <Card title="Ticket QA Review" icon="clipboard-check" href="/skill-library/qa-and-closure/ticket-qa-review">
    Automate ticket QA against your own rubric.
  </Card>

  <Card title="Weekly QA Digest" icon="list-check" href="/skill-library/qa-and-closure/weekly-qa-digest">
    The week's QA misses, summarized and ready to coach on.
  </Card>

  <Card title="Queue Hygiene Score" icon="broom" href="/skill-library/qa-and-closure/queue-hygiene-score">
    Grade the board and see exactly what needs cleanup.
  </Card>
</CardGroup>

## Your ritual

<Card title="Lead daily ritual" icon="sun" href="/skill-library/role-rituals/lead-daily-ritual">
  A daily read on the desk — XLA risk, aging work, sentiment dips, and where to intervene before it becomes a fire.
</Card>

Open Magic Analytics and your team Views first thing, run the lead daily ritual, and end the week with the [Weekly Ops Report](/skill-library/reporting-and-analytics/weekly-ops-report). The desk you can see is the desk you can run.

## Your first 30 days: the adoption ramp

| Week       | Focus                                                                                         | You've got it when…                                                                |
| ---------- | --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| **Week 1** | Structure. Service team model, Inbox teams and pods, and the Views your techs work from.      | Every technician opens Inbox to a View that's theirs, not a firehose.              |
| **Week 2** | Flow control. XLA timers, auto-dispatch profiles, available-for-dispatch, and business hours. | New work routes itself to the right pod and the clock starts on the right tickets. |
| **Week 3** | Visibility. Magic Analytics dashboards, View insights, and CSAT live.                         | You answer "how's the desk doing?" from a dashboard, not a gut feel.               |
| **Week 4** | Coaching loop. A weekly QA pass and a repeatable one-on-one built on the data.                | Every technician gets a fair, specific coaching conversation off real numbers.     |

<Note>
  Thread gets sharper the more your desk uses it. Every resolved ticket feeds Contact and Client Intelligence, trains the Triage Agent, and improves the analytics you manage from. Your team's adoption compounds into your visibility.
</Note>

## Pro tips & FAQ

<AccordionGroup>
  <Accordion title="Where do I start if the desk is brand new to Thread?">
    Structure first: [service team structure](/inbox/service-team-structure), then [Inbox teams](/inbox/inbox-teams), then the [Views](/inbox/views-and-insights) each team works from. Route and measure only after the shape of the desk is set — everything downstream keys off it.
  </Accordion>

  <Accordion title="A technician says they can't see any Views">
    Newly synced members are added to existing Views manually. As the manager, add them from the View's member settings, or have your admin do it — new hires won't inherit Views automatically.
  </Accordion>

  <Accordion title="My XLA timers look wrong overnight and on weekends">
    XLA clocks respect [business hours and closures](/inbox/holidays-and-custom-closures). If timers keep running when the desk is closed, your business hours or holiday calendar isn't set — fix that before you trust any XLA number.
  </Accordion>

  <Accordion title="How do I coach without playing gotcha?">
    Run [Ticket QA Review](/skill-library/qa-and-closure/ticket-qa-review) and [Tech Performance Review](/skill-library/reporting-and-analytics/tech-performance-review) so every conversation is grounded in the same rubric and the same data. Consistency is what makes coaching land.
  </Accordion>

  <Accordion title="Who owns adoption — me or the CSM?">
    Both. Your Thread Customer Success Manager brings the [change-management playbook](/get-started/thread-partner-change-management-guide); you own the day-to-day habits on the desk. The rollout lesson covers how to split it.
  </Accordion>
</AccordionGroup>


## Related topics

- [Ticket QA Review](/skill-library/qa-and-closure/ticket-qa-review.md)
- [Weekly Ops Report](/skill-library/reporting-and-analytics/weekly-ops-report.md)
- [CW Service Board Conventions](/skill-library/psa-specific/cw-service-board-conventions.md)
