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

# Analytics Role for Marketplace Users

> Read-only access for data analysis without operational permissions

export const ChangelogActions = () => {
  return <>
      <style>{`
        .changelog-actions {
          display: flex;
          justify-content: center;
          gap: 12px;
          margin-top: 2rem;
          padding-top: 1.5rem;
          border-top: 1px solid #e5e7eb;
        }
        
        [data-theme="dark"] .changelog-actions {
          border-top-color: #374151;
        }
        
        .changelog-btn {
          display: inline-flex;
          align-items: center;
          gap: 6px;
          padding: 8px 16px;
          border-radius: 9999px;
          border: 1px solid #d1d5db;
          background: transparent;
          color: #6b7280;
          font-size: 14px;
          cursor: pointer;
          transition: all 0.2s ease;
        }
        
        .changelog-btn:hover {
          border-color: #9ca3af;
          background: #f9fafb;
        }
        
        [data-theme="dark"] .changelog-btn {
          border-color: #4b5563;
          color: #9ca3af;
        }
        
        [data-theme="dark"] .changelog-btn:hover {
          border-color: #6b7280;
          background: #1f2937;
        }
      `}</style>
      <div className="changelog-actions">
        <button className="changelog-btn" onClick={() => {
    const btn = event.target.closest("button");
    btn.innerHTML = "❤️ Like";
    btn.style.borderColor = "#ec4899";
  }}>
          🤍 Like
        </button>
        <button className="changelog-btn" onClick={() => {
    const btn = event.target.closest("button");
    navigator.clipboard.writeText(window.location.href);
    const originalContent = btn.innerHTML;
    btn.innerHTML = "✓ Copied";
    btn.style.borderColor = "#22c55e";
    btn.style.color = "#22c55e";
    setTimeout(() => {
      btn.innerHTML = originalContent;
      btn.style.borderColor = "";
      btn.style.color = "";
    }, 2000);
  }}>
          ↗ Share
        </button>
      </div>
    </>;
};

<div className="cl-badge-group">
  <Badge color="gray" size="sm" icon="calendar">
    January 21, 2026
  </Badge>

  <Badge color="blue" size="sm" icon="rectangle-ad">
    Ad Platform
  </Badge>

  <Badge color="green" size="sm" icon="sparkles">
    New Feature
  </Badge>
</div>

<div className="cl-mockup-wrapper">
  <div className="cl-mockup-card">
    <div
      style={{
  display: "flex",
  justifyContent: "space-between",
  alignItems: "center",
  marginBottom: "16px",
  paddingBottom: "12px",
  borderBottom: "1px solid #E5E7EB"
}}
    >
      <div style={{ display: "flex", alignItems: "center", gap: "12px" }}>
        <div style={{ width: "32px", height: "32px", borderRadius: "50%", background: "#DBEAFE" }} />

        <div>
          <div style={{ height: "12px", width: "120px", background: "#E8E8ED", borderRadius: "2px", marginBottom: "4px" }} />

          <div style={{ height: "8px", width: "80px", background: "#E8E8ED", borderRadius: "2px" }} />
        </div>
      </div>

      <div style={{
                background: "#DBEAFE",
                color: "#3B82F6",
                fontSize: "11px",
                fontWeight: "600",
                padding: "4px 10px",
                borderRadius: "12px"
              }}>Analytics</div>
    </div>

    <div style={{ marginBottom: "16px" }}>
      <div style={{ height: "10px", width: "100px", background: "#D1D1D6", borderRadius: "2px", marginBottom: "12px" }} />

      <div style={{ display: "flex", flexDirection: "column", gap: "8px" }}>
        {[
                        { label: "Dashboard", view: true, edit: false },
                        { label: "Analytics", view: true, edit: false },
                        { label: "Campaigns", view: true, edit: false },
                        { label: "Data Room", view: true, edit: false }
                      ].map((perm, i) => (
                        <div key={i} style={{
                          display: "flex",
                          alignItems: "center",
                          justifyContent: "space-between",
                          padding: "10px 12px",
                          background: "#F5F5F7",
                          borderRadius: "6px"
                        }}>
                          <div style={{ height: "10px", width: "80px", background: "#E8E8ED", borderRadius: "2px" }}></div>
                          <div style={{ display: "flex", gap: "16px" }}>
                            <div style={{ display: "flex", alignItems: "center", gap: "6px" }}>
                              <div style={{
                                width: "16px",
                                height: "16px",
                                borderRadius: "4px",
                                background: "#22C55E",
                                display: "flex",
                                alignItems: "center",
                                justifyContent: "center"
                              }}>
                                <span style={{ color: "white", fontSize: "10px" }}>&#10003;</span>
                              </div>
                              <span style={{ fontSize: "10px", color: "#6B7280" }}>View</span>
                            </div>
                            <div style={{ display: "flex", alignItems: "center", gap: "6px" }}>
                              <div style={{
                                width: "16px",
                                height: "16px",
                                borderRadius: "4px",
                                background: "#E8E8ED",
                                border: "1px solid #D1D1D6"
                              }}></div>
                              <span style={{ fontSize: "10px", color: "#9CA3AF" }}>Edit</span>
                            </div>
                          </div>
                        </div>
                      ))}
      </div>
    </div>

    <div
      style={{
  display: "flex",
  alignItems: "center",
  gap: "8px",
  padding: "12px",
  background: "#F0FDF4",
  borderRadius: "6px",
  border: "1px solid #BBF7D0"
}}
    >
      <div
        style={{
    width: "20px",
    height: "20px",
    borderRadius: "50%",
    background: "#22C55E",
    display: "flex",
    alignItems: "center",
    justifyContent: "center"
  }}
      >
        <span style={{ color: "white", fontSize: "10px" }}>✓</span>
      </div>

      <div style={{ height: "10px", width: "140px", background: "#BBF7D0", borderRadius: "2px" }} />
    </div>
  </div>
</div>

<Note>
  **Why We Built This**

  Data-driven decisions require broad access to insights, but not everyone needs the ability to modify campaigns. The Analytics role bridges this gap—visibility for those who need it, operational control where it matters.
</Note>

## The Problem

Granting access to marketplace data meant giving users more permissions than necessary. Sales teams needing campaign insights had the same access as operational staff—unnecessary risk, cluttered workflows, actions they shouldn't perform.

## The Solution

The Analytics role provides carefully scoped read-only access. See everything, touch nothing.

**Full visibility.** Dashboard, products, analytics, Data Room, campaign and vendor details—all accessible.

**Zero risk.** No creating, editing, or deleting campaigns. No wallet access. No configuration changes.

**Clear boundaries.** The role appears in the Users tab, easy to assign and identify.

## What Analytics Users Can Do

View dashboards, products, Ad Formats, Autobidding settings, analytics, finance details, Data Room exports, and campaign/vendor pages.

## What They Can't

Add vendors, toggle invitations, manage campaigns, access wallets, modify ROAS or attribution, create slots, configure Ad Formats, or upload content standards.

## Use Cases

**Account managers.** Access vendor and campaign data for client conversations without risking changes to live campaigns.

**Business analysts.** Run comprehensive analysis, export reports, build insights—no operational permissions needed.

**Executive stakeholders.** Monitor performance with full visibility and zero risk of unintended modifications.

<div
  style={{
margin: "3rem 0",
height: "3px",
background:
  "linear-gradient(to right, transparent, #00ff88 20%, #00d4ff 40%, #8280ff 60%, #ff6b9d 80%, transparent)",
borderRadius: "2px",
opacity: "0.6",
}}
/>

Available now in the [Ad Platform](https://www.topsort.com/retail-media). Start inviting Analytics users from the Users section.

<ChangelogActions />
