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

# Targeting Signals

> Targeting signals available in the Thrad SSP BidRequest.

Everything Thrad supplies and where to find it in the BidRequest:

| Signal | oRTB field(s) | Notes |
| - | - | - |
| Publisher org | `site.publisher.id`, `site.publisher.name`, `site.publisher.domain` | All lowercased. `name` / `domain` omitted on empty. |
| Publisher slot | `site.id`, `imp[].tagid` | Always present. `site.id` resolves: DSP override → chatbot `public_id` → legacy int id |
| Surface (web) | `site.domain`, `site.page` | Per-request URL; lowercased domain. `site.privacypolicy=1` always. |
| Surface (in-app) | `app.bundle`, `app.storeurl`, `app.domain` | Only when publisher inventory is `ios_app` / `android_app` |
| Keywords | `imp[].ext.thrad.keywords` | Array; LLM-extracted. Was `site.keywords` / `user.keywords` |
| Intent | `imp[].ext.thrad.intent` | Thrad's classification, e.g. `shopping` |
| Task | `imp[].ext.thrad.task` | What the user is doing, as a Thrad task slug |
| IAB category | `imp[].ext.thrad.iab_tier1` | Tax 3.0 Tier 1 category **name**. Was `site.cat[]` + `cattax` |

`site.search` carried a rephrased form of the conversation until 2026-10. It is no longer sent; the keywords and labels above are the targeting surface.
\| Geo | `device.geo.{country,region,city}`, `device.geo.type=2` | ISO-3 country. `type=2` declares IP-based provenance — Thrad does not collect GPS. |
\| Conversation language | `device.language` | Auto-detected from the conversation, falls back to Accept-Language. Omitted when undetermined. |
\| Device | `device.{ua,ip,ipv6,devicetype,os,js}` | `js=1` always (chatbot widget is JS-rendered). IPv6 sent as `device.ipv6` when applicable. |
\| Mobile ad id | `device.ifa` | In-app traffic only |
\| GDPR | `regs.gdpr` | `1` when the user's country falls under GDPR / UK GDPR / EEA / Swiss FADP by IP geo, else `0`. `user.ext.consent` (TCF string) is not yet sent. |
\| CCPA / GPP / COPPA | `regs.us_privacy` / `regs.gpp` / `regs.coppa` | Not yet sent. |
\| Supply chain | `source.schain` | Sent on every request (oRTB 2.6 location, root `source`). One node: `asi: thrad.ai` (our `sellers.json` host), `sid` = publisher organisation `public_id`, `hp: 1`. |
\| Publisher blocks | `bcat`, `badv` | Only when publisher has set them. Today not stored per-publisher — effectively never present. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.