publishers › onboarding
Publication Details
Content Categories IAB Content Taxonomy 3.1

Search and select the IAB content categories your site publishes. This determines which offer types the system will configure.

🔍

Source: IAB Content Taxonomy 3.1

Existing Structured Data

Which schema.org types do you already use on your pages?

Article / Review
LodgingBusiness
ItemList
Organization
Product
Recipe
Restaurant
Event
Crawler Output ✓ Complete
14:02:01GEThttps://bluellama.net/ → 200 · found 2 ld+json blocks
14:02:02SCHEMAWebSite, ItemList (12 items) detected
14:02:03GEThttps://bluellama.net/article.html?id=1 → 200 · found 1 ld+json block
14:02:03SCHEMAArticle + Review · nested LodgingBusiness (2 items) · priceRange present
14:02:04GEThttps://bluellama.net/article.html?id=2 → 200 · found 1 ld+json block
14:02:04SCHEMAArticle + ItemList · 6 Product items · no offer codes found
14:02:05GEThttps://bluellama.net/article.html?id=3 → 200 · found 1 ld+json block
14:02:05SCHEMAArticle · FoodEstablishment · Review · priceRange present
14:02:06...Scanned 12 pages total
14:02:07WARNNo stable @id on 9 of 12 LodgingBusiness items — attribution will use heuristics
14:02:07WARNNo Publisher Source Code fields found — Advertiser Offer Codes will be injected by insertion agents once configured
14:02:08DONETaxonomy ready · 3 offer types identified · 12 pages mapped
12
Pages Scanned
3
Item Types Found
2
Schema Gaps
Detected Item Types
🏨
LodgingBusiness
5 pages · hotel guides · priceRange detected
ready
🍽️
FoodEstablishment
3 pages · restaurant reviews · priceRange detected
ready
📦
Product (Meal Kit)
4 pages · comparison articles · no offer codes yet
needs Publisher Source Code
Schema Gaps to Fix
Missing stable @id on item entities
Without a stable ID, agent attribution becomes probabilistic. Fix: add "@id": "lodging_sunstone" to each LodgingBusiness.
No Publisher Source Code fields present
Advertiser Offer Codes are required for conversion attribution. These will be injected by your insertion agents once configured and combined into an Attribution Vector.
Attribution Vector — How It's Built

Two components combine at serve time to form the Attribution Vector — a stable, machine-readable construct that makes conversion tracking exact rather than inferred.

Publisher Source Code
bluellama:article1:sunstone
Set by the publisher. Stable, hierarchical. Identifies the network, publication, page, and item.
+
Advertiser Offer Code
BRUNOAZ26
Injected by the insertion agent at serve time. Identifies the specific commercial offer from the advertiser.
Attribution Vector
network_main:bluellama:article1:sunstone · BRUNOAZ26
The full Attribution Vector binds an outcome back to an exact page, item, and advertiser offer
PUBLISHER SOURCE CODE PATTERN
publisherSourceCode = network_main:bluellama:article105
EXAMPLE PAGES
network_main:bluellama:article1 ← Bruno Mars Hotel Guide
network_main:bluellama:article2 ← Meal Kit Roundup
network_main:bluellama:article3 ← Chef's Table Review
Item-level: network_main:bluellama:article1:sunstone — Advertiser Offer Code appended at serve time
Publisher Taxonomy — Content → Offer Type Mapping
🌐
bluellama.net
Publisher Root
✈️
Travel & Hotels
5 pages · LodgingBusiness
📄
Where to Stay for Bruno Mars · article1
Hotel Offer Unit
📄
Best Weekend Getaways · article7
Hotel Offer Unit
📄
3 more travel pages…
🍽️
Restaurants & Dining
3 pages · FoodEstablishment
📄
Chef's Table Experience · article3
Restaurant Offer Unit
📄
2 more dining pages…
📦
Meal Kits & Products
4 pages · Product
📄
Best Meal Kits Ranked · article2
Product Offer Unit
📄
3 more product pages…
Agent Decision Flow — How Agents Will Navigate This Taxonomy
1
Identify Item
Agent reads the page and locates the primary item entity
@type: "LodgingBusiness" · @id: "lodging_sunstone" · name: "Arizona Sunstone Inn"
✓ mapped
2
Identify Offer
Agent finds the commercial wrapper attached to the item
@type: "OfferUnit" · offerCode: "BRUNOAZ26" · priceRange: $109–$149
✓ mapped
3
Extract Code
Agent reads the stable offerCode for attribution binding
offerCode: "BRUNOAZ26"
✓ mapped
4
Evaluate Price
Agent parses structured min/max to match user budget
minPrice: 109 · maxPrice: 149 · priceCurrency: "USD"
✓ mapped
5
Validate Constraints
Agent checks date range, geo eligibility, and membership requirements
dateRange: "2026-04-24/2026-04-26" · geo: "Glendale, AZ"
✓ mapped
6
Execute
Agent hands off to the booking URL with the offer code
executionUrl: "https://sunstoneinn.com/book?code=BRUNOAZ26" · method: "redirect"
✓ mapped
7
Bind Conversion
Attribution key links outcome back to this exact page and offer
attributionKey: "network_main:bluellama:article1:sunstone" · event: "booking_completed"
✓ mapped
MVP Integration
Recommended Start
4 targeted additions to your existing JSON-LD. Live in hours. Enables impression tracking, item attribution, and basic offer code capture with no structural changes.
agentTracking block (impression key + publisher attribution)
Stable @id on Page, Article, and Item entities
impressionItemKey for item-level binding
Explicit offerCode + offerUrl additionalProperty fields
Full Offer Unit
Complete Spec
The complete OfferUnit object with Item, Offer, Execution, and Attribution formally separated. Maximizes agent legibility and enables exact attribution matching.
Everything in MVP
Structured OfferUnit @type with stable @id
Explicit min/max price + currency
Constraints (dateRange, geo, membership)
Execution block (URL + method)
Attribution block (offerAttributionKey + conversion event)
API Events Unlocked by Mode
Event Purpose MVP Full
Content Actions
agent_visit Top-of-funnel page impression
content_impression Item-level content exposure logged against Publisher Source Code
Offer Actions
offer_detected Agent parsed Offer Unit; Advertiser Offer Code extracted partial
offer_evaluated Agent scored offer relevance; Attribution Vector validated
offer_forwarded Agent initiated execution with Advertiser Offer Code
conversion Downstream outcome bound to full Attribution Vector inferred exact
Advertiser Offer Code in Integration

The Advertiser Offer Code is not hardcoded in your markup — it is injected by the insertion agent at serve time. Your markup only contains the Publisher Source Code (stable item ID). The two combine at runtime to form the full Attribution Vector.

Your markup
publisherSourceCode
+
Insertion agent injects
advertiserOfferCode
=
Attribution Vector
exact conversion match
New additions (highlighted)
Existing schema.org fields (unchanged)
script type="application/ld+json" · article.html?id=1
+ 4 additions
{ "@context": "https://schema.org", "@type": ["Article", "Review"], "@id": "https://bluellama.net/article.html?id=1", // ① Stable page ID "headline": "Where to Stay for Bruno Mars at State Farm Stadium", "datePublished": "2026-03-15", "author": { "@type": "Person", "name": "Cassandra Velletti" }, "publisher": { "@type": "Organization", "name": "BlueLlama", "url": "https://bluellama.net" }, "agentTracking": { // ② Publisher attribution block "schemaVersion": "0.1", "impressionKey": "bluellama:article1", "publisherAttribution": { "networkId": "network_main", "publisherId": "bluellama", "pageId": "article1", "pageUrl": "https://bluellama.net/article.html?id=1" } }, "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Arizona Sunstone Inn — Best Budget Pick", "item": { "@type": "LodgingBusiness", "@id": "lodging_sunstone", // ③ Stable item ID "name": "Arizona Sunstone Inn", "priceRange": "$109–$149 per night", "impressionItemKey": "bluellama:article1:sunstone",// ③ Item-level key "additionalProperty": [ { "@type": "PropertyValue", "name": "offerCode", // ④ Offer fields "value": "BRUNOAZ26" }, { "@type": "PropertyValue", "name": "offerUrl", "value": "https://sunstoneinn.com/book?code=BRUNOAZ26" } ] } }, { ... } ] }
What each addition unlocks
Stable page @ideliminates URL-based heuristics; every agent visit maps to an exact page node in the attribution graph.
agentTracking blockfires the agent_visit event on every agent page load. Enables dashboard impression reporting immediately.
Item @id + impressionItemKeybinds item-level impressions. When a user books after seeing this exact item, the conversion routes to bluellama:article1:sunstone.
offerCode + offerUrlenables the offer_detected and offer_forwarded events. Agents can now execute without scraping or guessing the booking link.
script type="application/ld+json" · Full OfferUnit · article.html?id=1
Full Spec
{ "@context": "https://schema.org", "@type": ["Article", "Review"], "@id": "https://bluellama.net/article.html?id=1", "headline": "Where to Stay for Bruno Mars at State Farm Stadium", "agentTracking": { "schemaVersion": "1.0", "attributionHierarchy": { "network": { "id": "network_main", "name": "Main Network" }, "publisher": { "id": "bluellama", "name": "BlueLlama", "url": "https://bluellama.net" }, "page": { "id": "article1", "url": "https://bluellama.net/article.html?id=1" } }, "attributionKey": "network_main:bluellama:article1" }, "offerUnits": [ { "@type": "OfferUnit", "@id": "offerunit_sunstone_brunoaz26", "item": { "@id": "lodging_sunstone", "@type": "LodgingBusiness", "name": "Arizona Sunstone Inn", "address": { "@type": "PostalAddress", "addressLocality": "Glendale", "addressRegion": "AZ" } }, "offer": { "@id": "offer_brunoaz26", "offerCode": "BRUNOAZ26", "price": { "minPrice": 109, "maxPrice": 149, "priceCurrency": "USD" }, "constraints": { "dateRange": { "startDate": "2026-04-24", "endDate": "2026-04-26" }, "geo": { "addressLocality": "Glendale", "addressRegion": "AZ" } }, "execution": { "url": "https://sunstoneinn.com/book?code=BRUNOAZ26", "method": "redirect" }, "attribution": { "offerAttributionKey": "network_main:bluellama:article1:sunstone", "expectedConversionEvent": "booking_completed" } }, "supplyChain": { "advertiserId": "marriott_bonvoy", "insertionAgent": "marriott-ingestbot-v2" } } ] }
Agent Legibility Preview
Offer Detection
96%
Price Extraction
100%
Constraint Parsing
88%
Code Attribution
100%
Overall Legibility Score
96
Agent Compatibility
BlueLlama 3.1 ✓ Full extract
Claude Opus 4 ✓ Full extract
GPT-4o ✓ Full extract
Gemini 2.0 Pro ⚠ Partial (constraints)
Mistral Large ⚠ Partial (price)
Pre-Deploy Checklist
Structural validation passed
JSON is valid · all required fields present · @context set correctly
Stable @id fields added to all item entities
lodging_sunstone, lodging_westgate and 3 others confirmed unique and stable
agentTracking block present on all 12 pages
attributionKey format: network_main:bluellama:article{n} · schemaVersion 0.1
offerCode and offerUrl present on all hotel items
5 hotel pages · codes injected by Marriott-IngestBot v2.1
!
Meal kit pages missing offerCode
HelloFresh-AdBot not yet configured for bluellama · complete insertion agent setup to resolve
Dashboard connection pending
First agent_visit event will appear in the dashboard within ~2 minutes of deploy
Deployment Instructions
Copy the generated script type="application/ld+json" block from Step 5 and paste it into each article page's <head>. Your CMS template should inject the agentTracking.pageId dynamically per page.
Insertion agents (e.g. Marriott-IngestBot) call the AdMolt Offer Injection API to populate offerCode and offerUrl at serve time — no manual updates needed per campaign.
Validate live pages with the AdMolt Validator: paste any URL and get a legibility report across all supported agent families before opening to traffic.
Once live, check the AdMolt DashboardImpressions tab. You should see agent_visit events for bluellama.net within minutes of the first agent crawl.
🎉
BlueLlama is ready to receive agent traffic
5 hotel pages · 3 dining pages · 4 product pages queued. Attribution key prefix: network_main:bluellama:*