Product Page SEO Best Practice
Learn how to map Product Tags V3 and V2.3 API responses to Schema.org standards for enhanced product SEO with structured data implementation.
Product Schema Implementation with Product Tags API
The Product Tags V3 and V2.3 API not only provides AI-driven tags but also delivers structured data specifically designed to enrich your Product Schema. It is built using data retrieved from our Product API.
In this guide, we will outline how to map the API response to Schema.org standards effectively.
- Introduce the data provided by our Product API
- Explain the mapping logic for Schema.org
- Provide a complete JSON-LD example for implementation
Get Our Product API Response to Get Started!Before we begin, please ensure you have retrieved our Product Tags V3 and Product Tags V2.3 response.
📜 Product API Response Structure
Once we successfully retrieve the API response, the SEO-critical data is available in the result object.
The result object contains a schema property, which provides specific product attributes (like material, audience, and keywords) generated by AI analysis.
📜 Dive Deeper into schema
schemaThe schema object within the API result is designed to map directly to Schema.org/Product properties. These elements help search engines understand the specific attributes of your product, such as its material, target audience, and pattern. Crucially, users can modify the literal values within the Tag Management (TGM) system to change the data returned by the API.
Here is the mapping of API fields to Schema properties:
| Schema Field | Meaning | Literal Map in TGM |
|---|---|---|
alternateName | Goods/Alias | goods |
audience | User/Target Audience | user / audience |
color | Product Color | color |
manufacturer | Manufacturer | manufacturer / ingredient |
material | Material/Ingredients | material |
model | Serial Number | model |
brand | Brand Name | brand |
pattern | Pattern/Design | pattern |
keywords | Related Keywords | other literals |
description | Product Description |
📜 Implementation Guide
To ensure your Product Schema is valid and rich, follow these implementation rules. We will combine data from your Website Database (for static info like Name and Price) and the awoo API (for AI-generated attributes).
🔑 Basic Information
Some fields should come from your database or use the API as a fallback.
- name: Retrieve from your product name in website
- description: Use the
descriptionstring provided by the API
"name": "Your Product Name",
"description": "{{response.result.schema.description}}"🔑 alternateName
The alternateName field represents product aliases or alternative names. The API returns this as an array of strings. Populate according to the API response object. If there is no data for this field, skip this property entirely.
"alternateName": [
"{{response.result.schema.alternateName[0]}}",
"{{response.result.schema.alternateName[1]}}"
]🔑 Audience
The audience field requires a specific structure (PeopleAudience). Map the API array items to the audienceType.
"audience": [
{ "@type": "PeopleAudience", "audienceType": "{{response.result.schema.audience[0]}}" },
{ "@type": "PeopleAudience", "audienceType": "{{response.result.schema.audience[1]}}" }
]🔑 Simple Arrays (Color, Material, Pattern, Model)
For fields like color, material, pattern, and model, the API returns an array of strings. If the API response for a specific field is empty or missing, skip that field entirely.
"color": ["{{response.result.schema.color[0]}}", "{{response.result.schema.color[1]}}"],
"material": ["{{response.result.schema.material[0]}}"],
"pattern": ["{{response.result.schema.pattern[0]}}"],
"model": ["{{response.result.schema.model[0]}}"]🔑 Complex Objects (Brand, Manufacturer)
The API returns these as arrays of strings, but Schema.org prefers specific types (like Brand or Organization). Take ONLY the first item from the API array to populate the name.
"brand": [
{ "@type": "Brand", "name": "{{response.result.schema.brand[0]}}" }
],
"manufacturer": [
{ "@type": "Organization", "name": "{{response.result.schema.manufacturer[0]}}" }
]🔑 Keywords
The API returns keywords as an array. For the Schema keywords property, you should join them into a comma-separated string.
"keywords": "{{response.result.schema.keywords.join(', ')}}"🔑 Standard Product Fields (Required)
The following fields are required by Google or Schema.org standards but are usually specific to your inventory status. Please populate these from your Website Database:
- image: Array of image URLs
- offers: Pricing and availability information
"image": ["https://your-image-url.com/1.jpg"],
"offers": {
"@type": "Offer",
"url": "https://your-product-url.com",
"price": "2000",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock"
}📜 API Response Example
When you make a successful API request, you'll receive a JSON response structured as follows:
{
"errcode": 0,
"errmsg": "ACK",
"requestId": "xxxxxx",
"result": {
"tags": [
{
"text": "Tops Winter Recommended",
"link": "...",
"fullLink": "..."
}
// ... more tags
],
"schema": {
"alternateName": [
"Blouse",
"Tops"
],
"brand": [
"awoo"
],
"color": [
"White"
],
"keywords": [
"Elegant",
"Trendy",
"Sophisticated",
"Refined",
"Business",
"Versatile",
"women"
],
"description": "Professional Power Shoulder Blouse is...",
"name": "Professional Power Shoulder Blouse",
"price": 2000,
"priceCurrency": "TWD",
"availability": "InStock",
"image": [
"https://cdn.test-site.com/.../7-1.png?v=1697436962"
]
}
}
}📜 Full Implementation Example
Below is a complete JSON-LD example combining all the logic above.
Implementation NoteIn the example below, syntax like
{{response...}}represents where you should dynamically insert data. Ensure to add logic to check if the field exists in the API response before rendering the line. If the data is null, do not output that specific property.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
// 1. Basic Info (Name from DB, Description from API)
"name": "Professional Power Shoulder Blouse",
"description": "{{response.result.schema.description}}",
// 2. Simple Arrays (Map directly if data exists)
"alternateName": [
"{{response.result.schema.alternateName[0]}}",
"{{response.result.schema.alternateName[1]}}"
],
"color": [
"{{response.result.schema.color[0]}}"
],
"material": [
"{{response.result.schema.material[0]}}"
],
"pattern": [
"{{response.result.schema.pattern[0]}}"
],
"model": [
"{{response.result.schema.model[0]}}"
],
// 3. Complex Objects (Brand & Manufacturer)
"brand": [
{
"@type": "Brand",
"name": "{{response.result.schema.brand[0]}}"
}
],
"manufacturer": [
{
"@type": "Organization",
"name": "{{response.result.schema.manufacturer[0]}}"
}
],
// 4. Audience (Map to PeopleAudience)
"audience": [
{
"@type": "PeopleAudience",
"audienceType": "{{response.result.schema.audience[0]}}"
}
],
// 5. Standard Required Fields (From Website Database)
"image": [
"https://cdn.shopify.com/.../7-1.png"
],
"offers": {
"@type": "Offer",
"url": "https://yourdomain.com/product/page",
"price": "2000",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock"
},
// 6. Keywords (Join array to string)
"keywords": "{{response.result.schema.keywords.join(', ')}}"
}
</script>👍 Validate Your Schema
After implementation, please strictly refer to the Schema.org Validator or Google's Rich Results Test to verify that your structured data is error-free.
Updated 7 months ago