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

# Know Which Banners Actually Work

> Per-asset performance metrics for banner campaigns show you exactly which creative is driving results—complete with automatic winner detection so you can double down on what works.

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">February 3, 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: "12px",
  paddingBottom: "8px",
  borderBottom: "1px solid #E5E7EB"
}}
    >
      <div style={{ height: "12px", width: "100px", background: "#E8E8ED", borderRadius: "2px" }} />

      <div
        style={{
    height: "20px",
    width: "60px",
    borderRadius: "4px",
    border: "1px solid #E5E7EB",
    background: "#E8E8ED"
  }}
      />
    </div>

    <div style={{ display: "flex", flexDirection: "column", gap: "8px" }}>
      <div
        style={{
    display: "flex",
    alignItems: "center",
    gap: "10px",
    padding: "8px",
    background: "#F0FDF4",
    borderRadius: "6px",
    border: "1px solid #22C55E",
    position: "relative"
  }}
      >
        <span style={{
                      position: "absolute",
                      top: "-6px",
                      right: "-6px",
                      background: "#22C55E",
                      color: "white",
                      fontSize: "7px",
                      padding: "2px 6px",
                      borderRadius: "8px",
                      fontWeight: "600"
                    }}>TOP</span>

        <div style={{ width: "50px", height: "30px", borderRadius: "4px", background: "#E8E8ED", flexShrink: 0 }} />

        <div style={{ flex: 1, minWidth: 0 }}>
          <div style={{ height: "8px", width: "70px", marginBottom: "4px", background: "#E8E8ED", borderRadius: "2px" }} />

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

        <div style={{ display: "flex", gap: "8px" }}>
          <div style={{ textAlign: "center" }}>
            <div style={{ height: "10px", width: "28px", marginBottom: "2px", background: "#E8E8ED", borderRadius: "2px" }} />

            <div style={{ height: "5px", width: "20px", margin: "0 auto", background: "#E8E8ED", borderRadius: "2px" }} />
          </div>

          <div style={{ textAlign: "center" }}>
            <div style={{ height: "10px", width: "28px", marginBottom: "2px", background: "#E8E8ED", borderRadius: "2px" }} />

            <div style={{ height: "5px", width: "20px", margin: "0 auto", background: "#E8E8ED", borderRadius: "2px" }} />
          </div>
        </div>

        <div style={{ width: "8px", height: "8px", borderRadius: "50%", background: "#22C55E", flexShrink: 0 }} />
      </div>

      <div
        style={{
    display: "flex",
    alignItems: "center",
    gap: "10px",
    padding: "8px",
    background: "#F5F5F7",
    borderRadius: "6px",
    position: "relative"
  }}
      >
        <div style={{ width: "50px", height: "30px", borderRadius: "4px", background: "#E8E8ED", flexShrink: 0 }} />

        <div style={{ flex: 1, minWidth: 0 }}>
          <div style={{ height: "8px", width: "60px", marginBottom: "4px", background: "#E8E8ED", borderRadius: "2px" }} />

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

        <div style={{ display: "flex", gap: "8px" }}>
          <div style={{ textAlign: "center" }}>
            <div style={{ height: "10px", width: "28px", marginBottom: "2px", background: "#E8E8ED", borderRadius: "2px" }} />

            <div style={{ height: "5px", width: "20px", margin: "0 auto", background: "#E8E8ED", borderRadius: "2px" }} />
          </div>

          <div style={{ textAlign: "center" }}>
            <div style={{ height: "10px", width: "28px", marginBottom: "2px", background: "#E8E8ED", borderRadius: "2px" }} />

            <div style={{ height: "5px", width: "20px", margin: "0 auto", background: "#E8E8ED", borderRadius: "2px" }} />
          </div>
        </div>

        <div style={{ width: "8px", height: "8px", borderRadius: "50%", background: "#F59E0B", flexShrink: 0 }} />
      </div>

      <div
        style={{
    display: "flex",
    alignItems: "center",
    gap: "10px",
    padding: "8px",
    background: "#F5F5F7",
    borderRadius: "6px",
    position: "relative"
  }}
      >
        <div style={{ width: "50px", height: "30px", borderRadius: "4px", background: "#E8E8ED", flexShrink: 0 }} />

        <div style={{ flex: 1, minWidth: 0 }}>
          <div style={{ height: "8px", width: "80px", marginBottom: "4px", background: "#E8E8ED", borderRadius: "2px" }} />

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

        <div style={{ display: "flex", gap: "8px" }}>
          <div style={{ textAlign: "center" }}>
            <div style={{ height: "10px", width: "28px", marginBottom: "2px", background: "#E8E8ED", borderRadius: "2px" }} />

            <div style={{ height: "5px", width: "20px", margin: "0 auto", background: "#E8E8ED", borderRadius: "2px" }} />
          </div>

          <div style={{ textAlign: "center" }}>
            <div style={{ height: "10px", width: "28px", marginBottom: "2px", background: "#E8E8ED", borderRadius: "2px" }} />

            <div style={{ height: "5px", width: "20px", margin: "0 auto", background: "#E8E8ED", borderRadius: "2px" }} />
          </div>
        </div>

        <div style={{ width: "8px", height: "8px", borderRadius: "50%", background: "#EF4444", flexShrink: 0 }} />
      </div>
    </div>
  </div>
</div>

### Banner Asset Performance Metrics

Running multiple banner variations but not sure which one is actually performing? The new asset-level metrics break down impressions, clicks, and conversions for each creative in your campaign—and automatically highlight your top performer.

#### Key Features

1. **Per-Asset Metrics**: See impressions, clicks, CTR, and conversions for each banner creative
2. **Automatic Winner Detection**: Top-performing assets are automatically flagged
3. **Performance Indicators**: Quick visual status (green/yellow/red) for each asset
4. **Sortable Views**: Rank assets by any metric to find your best and worst performers

#### Metrics Available

* **Impressions**: How often each asset was shown
* **Clicks**: Direct engagement with each creative
* **CTR**: Click-through rate comparison across assets
* **Conversions**: Which creatives actually drive purchases
* **Spend**: Budget allocation per asset

#### How to Use This

1. Upload multiple banner variations to a single campaign
2. Let them run to gather statistically significant data
3. Check the asset metrics to see which creative wins
4. Pause underperformers and reallocate budget to winners

The "TOP" badge automatically appears on your best-performing asset once enough data has been collected to make a confident determination.

<ChangelogActions />
