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

# Overview

export const LastUpdated = ({date, lang = "en"}) => {
  const translations = {
    en: "Last updated:",
    es: "Última actualización:",
    pt: "Última atualização:",
    fr: "Dernière mise à jour:",
    de: "Zuletzt aktualisiert:"
  };
  const label = translations[lang] || translations.en;
  return <>
<style>{`
.last-updated-component {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 10px 16px;
border-radius: 8px;
margin-top: 12px;
margin-bottom: 16px;
font-size: 14px;
background-color: rgba(0, 0, 0, 0.05);
border: 1px solid rgba(0, 0, 0, 0.12);
color: rgba(0, 0, 0, 0.75);
line-height: 1;
}

        .last-updated-component svg {
          flex-shrink: 0;
          vertical-align: middle;
        }

        .last-updated-component span {
          display: inline-flex !important;
          align-items: center !important;
          line-height: 1 !important;
        }

        [data-theme="dark"] .last-updated-component {
          background-color: #3a3a3a;
          border: 2px solid #888888;
          color: #ffffff;
        }

        [data-theme="dark"] .last-updated-component svg {
          stroke: #ffffff;
        }
      `}</style>
      <div className="last-updated-component">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <circle cx="12" cy="12" r="10" />
          <polyline points="12 6 12 12 16 14" />
        </svg>
        <span>
          <strong style={{
    fontWeight: 600
  }}>{label}</strong> 
          <time dateTime={date}>{date}</time>
        </span>
      </div>
    </>;
};

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  Topsort offers transparent and targeted advertising with reliable metrics, powered by our advanced Ad-Purchase Attribution system, which accurately links purchases to customer interactions with ads.
</div>

## Ad-Purchase Attribution System

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  This system links purchases to ad interactions, optimizing campaigns for advertisers, and creating a feedback loop for our **BIDLESS™** algorithm. The link between ads and purchase is based on the user ID sent with the tracked event (click or purchase) and the purchase.
</div>

### Viewability Requirements for Attribution

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  Per IAB/MRC Retail Media Measurement Guidelines, only **viewable impressions** are eligible for attribution:
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * **Display Ads (Banners)**: 50% of pixels visible for 1+ continuous second
  * **Video Ads**: 50% of pixels visible for 2+ continuous seconds
  * **Large Display Ads (242,500+ pixels)**: 30% of pixels visible for 1+ continuous second
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  Non-viewable impressions are excluded from attribution calculations, ensuring outcomes are only credited to ads that had a genuine opportunity to influence consumer behavior.
</div>

## Flexible Attribution by Ad Format

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  Our APIs let marketplaces customize attribution models at the ad format level, recognizing that different formats serve different purposes in the customer journey:
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * **Sponsored Listings**: Typically drive immediate purchase decisions (bottom-funnel)
  * **Sponsored Brands**: Influence consideration and brand awareness (mid-funnel)
  * **Banner/Native/Video Ads**: Build awareness and discovery (top-funnel)
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  Each format can have its own:

  * **Attribution Model**: Last-click or last-impression
  * **Attribution Window**: 1-30 days
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  This granular control ensures accurate measurement of each format's true contribution to conversions.
</div>

### Example Configuration

| Ad Format          | Attribution Model | Window  | Use Case                     |
| ------------------ | ----------------- | ------- | ---------------------------- |
| Sponsored Listings | Last-click        | 7 days  | Direct response purchases    |
| Sponsored Brands   | Last-click        | 14 days | Brand consideration period   |
| Banner/Video Ads   | Last-impression   | 30 days | Awareness-driven conversions |

## Attribution Priority Rules

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  When multiple ad interactions occur within their respective windows:

  1. **Clicks take priority over impressions**
  2. **Direct attribution has priority over halo attribution**
  3. Each conversion is attributed to **only one** ad interaction
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  This ensures clear, actionable insights while avoiding double-counting.
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  **<Frame>  <img src="https://mintcdn.com/topsort/JfdWUceY7Se3NW-0/images/knowledge-base/attribution-per-ad-format-logic-diagram.webp?fit=max&auto=format&n=JfdWUceY7Se3NW-0&q=85&s=b3afad8f10bfe21d136cec7f4c5cda05" alt="Attribution decision flow showing how clicks, impressions, and attribution type determine final attribution" width="1872" height="5210" data-path="images/knowledge-base/attribution-per-ad-format-logic-diagram.webp" /></Frame>**
</div>

***

<LastUpdated date="2025-11-18" />
