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

# Halo Attribution

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'}}>
  Traditional attribution models, limited to same-product interactions, often miss the full revenue impact of advertising. Ads frequently drive sales for related or unadvertised products, not just the one promoted.
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  For example, an ad for a new product might also boost sales of older products from the same brand. Similarly, a product ad on a marketplace can lead customers to explore the entire seller's catalog, generating revenue beyond the advertised item. These "halo effects" aren't captured by the same-product attribution.
</div>

## Halo Attribution Model

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  To address this, we offer the Halo Attribution model. This model replaces the same-product constraint with a same-vendor constraint. It identifies all products that were purchased from that vendor, regardless of whether they were directly advertised. Halo Attribution can use either clicks or impressions as the attributing event.
</div>

<Note>Talk to your Topsort representative to enable this attribution model in your marketplace.</Note>

## How it Works

When reporting a purchase, each purchased product item must include its vendorId. Example of a purchase event with Vendor ID:

```json theme={null}
{
  "purchases": [
    {
      "id": "...",
      "opaqueUserId": "...",
      "occurredAt": "2024-10-28T07:43:54-06:00",
      "items": [
        {
          "vendorId": "VEIA929919", // Vendor ID
          "unitPrice": 900,
          "quantity": 1,
          "productId": "MKQUJ9191"
        }
      ]
    }
  ]
}
```

***

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