Step 1 of 6
Tell us about your publication
We'll use this to build an offer taxonomy matched to your content — and generate the exact markup additions your pages need.
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
Step 2 of 6
Scanning bluellama.net
AdMolt reads your existing JSON-LD to understand your content inventory — no code changes needed at this stage.
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
🏨
ready
LodgingBusiness
5 pages · hotel guides · priceRange detected
🍽️
ready
FoodEstablishment
3 pages · restaurant reviews · priceRange detected
📦
needs Publisher Source Code
Product (Meal Kit)
4 pages · comparison articles · no offer codes yet
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.
Step 3 of 6
Publisher Taxonomy
Based on your content scan, AdMolt has mapped each page and content type to the correct Offer Unit configuration. Each item gets a Publisher Source Code — when combined with the Advertiser Offer Code injected at serve time, it forms the Attribution Vector that makes conversion tracking exact.
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 timePublisher Taxonomy — Content → Offer Type Mapping
bluellama.net
Publisher Root
Travel & Hotels
Where to Stay for Bruno Mars · article1
Hotel Offer Unit
Best Weekend Getaways · article7
Hotel Offer Unit
3 more travel pages…
Restaurants & Dining
Chef's Table Experience · article3
Restaurant Offer Unit
2 more dining pages…
Meal Kits & Products
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"
2
Identify Offer
Agent finds the commercial wrapper attached to the item
@type: "OfferUnit" · offerCode: "BRUNOAZ26" · priceRange: $109–$149
3
Extract Code
Agent reads the stable offerCode for attribution binding
offerCode: "BRUNOAZ26"
4
Evaluate Price
Agent parses structured min/max to match user budget
minPrice: 109 · maxPrice: 149 · priceCurrency: "USD"
5
Validate Constraints
Agent checks date range, geo eligibility, and membership requirements
dateRange: "2026-04-24/2026-04-26" · geo: "Glendale, AZ"
6
Execute
Agent hands off to the booking URL with the offer code
executionUrl: "https://sunstoneinn.com/book?code=BRUNOAZ26" · method: "redirect"
7
Bind Conversion
Attribution key links outcome back to this exact page and offer
attributionKey: "network_main:bluellama:article1:sunstone" · event: "booking_completed"
Step 4 of 6
Choose your integration mode
Start with the 4-field MVP to unlock tracking within hours, or go straight to the full Offer Unit spec for the complete agent commerce surface.
✓
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
Step 5 of 6
Your integration code is ready
These are the exact ld+json additions for bluellama.net/article.html?id=1 (Bruno Mars Hotel Guide). The same pattern applies to every page in your taxonomy.
New additions (highlighted)
Existing schema.org fields (unchanged)
{
"@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 @id — eliminates URL-based heuristics; every agent visit maps to an exact page node in the attribution graph.
②
agentTracking block — fires the
agent_visit event on every agent page load. Enables dashboard impression reporting immediately.
③
Item @id + impressionItemKey — binds item-level impressions. When a user books after seeing this exact item, the conversion routes to
bluellama:article1:sunstone.
④
offerCode + offerUrl — enables the
offer_detected and offer_forwarded events. Agents can now execute without scraping or guessing the booking link.{
"@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"
}
}
]
}
Step 6 of 6
Validation & Go Live
Your integration is validated against the AdMolt agent legibility spec. Review the checklist, then deploy the generated markup to your pages.
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 Dashboard → Impressions 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:*