Skip to main content
Everything Thrad supplies and where to find it in the BidRequest:
SignaloRTB field(s)Notes
Publisher orgsite.publisher.id, site.publisher.name, site.publisher.domainAll lowercased. name / domain omitted on empty.
Publisher slotsite.id, imp[].tagidAlways present. site.id resolves: DSP override → chatbot public_id → legacy int id
Surface (web)site.domain, site.pagePer-request URL; lowercased domain. site.privacypolicy=1 always.
Surface (in-app)app.bundle, app.storeurl, app.domainOnly when publisher inventory is ios_app / android_app
Conversational querysite.searchLLM-rephrased — keys off like a search query
Keywordssite.keywords, user.keywordsComma-separated; LLM-extracted
IAB categorysite.cat[] + site.cattax: 7Tax 3.0 Tier 1 Unique IDs only. Mostly numeric (e.g. "483"); six are short alphanumeric extension IDs (e.g. "JLBCU7"). Sub-tiers not signalled.
Geodevice.geo.{country,region,city}, device.geo.type=2ISO-3 country. type=2 declares IP-based provenance — Thrad does not collect GPS.
Conversation languagedevice.languageAuto-detected from the conversation, falls back to Accept-Language. Omitted when undetermined.
Devicedevice.{ua,ip,ipv6,devicetype,os,js}js=1 always (chatbot widget is JS-rendered). IPv6 sent as device.ipv6 when applicable.
Mobile ad iddevice.ifaIn-app traffic only
GDPRregs.gdprCurrently always 0 (stub). Full consent block + user.ext.consent ships in Wave 4.
CCPA / GPP / COPPAregs.us_privacy / regs.gpp / regs.coppaNot yet wired — Wave 4.
Supply chainsource.ext.schainNot yet wired — Wave 4 (depends on the publisher public_id work).
Publisher blocksbcat, badvOnly when publisher has set them. Today not stored per-publisher — effectively never present.