Ecommerce schema markup is structured data added to product, category, policy, and navigation pages so search engines can understand the entities and commercial information shown on the website. Correct implementation can make product information eligible for enhanced search experiences containing price, availability, ratings, shipping, returns, and other useful details.

Schema markup does not replace visible content, technical SEO, Merchant Center feeds, product-page quality, or crawlable site architecture. It should accurately describe the information a customer can see and verify on the page.

This guide explains how ecommerce businesses can implement Product, Offer, AggregateOffer, ProductGroup, Review, AggregateRating, and BreadcrumbList markup using JSON-LD, align structured data with product feeds and landing pages, validate code, handle variants, and monitor errors after deployment.

What Is Ecommerce Schema Markup?

Schema markup uses a shared vocabulary to classify page content. Ecommerce sites commonly use it to describe:

  • Products and product variants
  • Prices and currencies
  • Stock availability
  • Product condition
  • Brand and identifiers
  • Reviews and aggregate ratings
  • Shipping details
  • Return policies
  • Breadcrumb navigation
  • Business and organization information

Google supports JSON-LD, Microdata, and RDFa. JSON-LD is usually the easiest format to implement and maintain because the structured data can be managed separately from visible HTML while still describing the same page content.

What Structured Data Can and Cannot Do

Structured data can help Structured data cannot guarantee
Clarify product entities and commercial attributes A rich result for every valid page
Make pages eligible for supported search enhancements Higher ranking by itself
Connect variants through ProductGroup Indexing of blocked or non-canonical pages
Describe price, availability, ratings, shipping, and returns Correction of inaccurate visible website data
Support machine-readable consistency Replacement of Merchant Center product data

Product Snippet vs Merchant Listing Markup

Google separates product structured data into two broad use cases.

Product Snippet

Product snippet markup is suitable for pages discussing a product where direct purchase may not be the primary purpose, such as product reviews, comparison pages, or informational product content.

It can support information such as:

  • Product name
  • Review
  • Aggregate rating
  • Price
  • Availability

Merchant Listing

Merchant listing markup is intended for pages where customers can purchase the product from the merchant. It supports more detailed commercial information, including offer data, product identifiers, shipping, returns, apparel sizing, and variant relationships.

Practical Rule

If the page is a live ecommerce product detail page with a functioning purchase action, build the Product and Offer data to satisfy merchant listing requirements. Complete merchant listing data can also support product snippet eligibility where applicable.

Core Schema Types for Ecommerce

Schema type Purpose
Product Describes an individual sellable product or variant
Offer Describes one price, currency, availability, condition, and seller offer
AggregateOffer Describes a price range or multiple offers for the same product
ProductGroup Groups related variants such as sizes and colours
Review Describes an individual genuine review
AggregateRating Summarizes rating value and review or rating count
BreadcrumbList Describes the page's navigation hierarchy
Organization Describes the merchant and business-level policies

Product Schema Properties

name

Use the exact product or selected-variant name shown to customers. The name should be specific enough to identify the product.

description

Use an accurate summary that matches the visible product description. Do not place hidden keywords, unsupported claims, or another variant's details in structured data.

image

Provide one or more crawlable image URLs representing the actual product. The selected variant's structured data should use images matching that variant.

sku

Use the merchant's stable SKU for the specific sellable product or variant. Do not reuse one SKU for unrelated products.

brand

Use the actual product brand. Do not automatically insert the retailer or agency name when it is not the product brand.

gtin and mpn

Submit manufacturer-assigned identifiers when available. Use the appropriate GTIN property for the identifier length and the correct manufacturer part number for the exact product or variant.

color, size, material, and pattern

Use variant-specific values when they identify a sellable option. Keep values consistent with the visible selector, catalogue database, Merchant Center feed, and order system.

Offer Schema Properties

price

Use the current purchasable price for the offer. The structured-data value should match the visible page and checkout for the selected product or variant.

priceCurrency

Use the supported three-letter currency code, such as INR, USD, or GBP.

availability

Use an appropriate Schema.org availability value, such as:

  • https://schema.org/InStock
  • https://schema.org/OutOfStock
  • https://schema.org/PreOrder
  • https://schema.org/BackOrder
  • https://schema.org/Discontinued

itemCondition

State whether the product is new, used, refurbished, or another supported condition. The value must match the product sold on the page.

url

Use the canonical purchasable product or variant URL associated with the offer.

priceValidUntil

Use this property only when a real price-expiry date exists. Do not add an invented date merely to remove a validation recommendation.

seller

The seller can be represented with an Organization or Person where suitable. Keep the merchant identity consistent across the site.

Basic Product and Offer JSON-LD Example

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "@id": "https://www.example.com/products/cotton-shirt#product",
  "name": "Men's Cotton Shirt - Blue - Size M",
  "description": "Blue cotton shirt with full sleeves and regular fit.",
  "image": [
    "https://www.example.com/images/cotton-shirt-blue-m-front.jpg",
    "https://www.example.com/images/cotton-shirt-blue-m-back.jpg"
  ],
  "sku": "SHIRT-BLUE-M",
  "gtin13": "8901234567890",
  "brand": {
    "@type": "Brand",
    "name": "Example Brand"
  },
  "color": "Blue",
  "size": "M",
  "material": "Cotton",
  "offers": {
    "@type": "Offer",
    "url": "https://www.example.com/products/cotton-shirt?color=blue&size=m",
    "priceCurrency": "INR",
    "price": "1299.00",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": {
      "@type": "Organization",
      "name": "Example Store"
    }
  }
}
</script>

The example values are illustrative. Production markup must be generated from the website's live product and offer data.

ProductGroup Schema for Variants

ProductGroup helps search engines understand that several Product entities are variants of the same parent product.

Common variant dimensions include:

  • Colour
  • Size
  • Material
  • Pattern
  • Capacity
  • Pack quantity
  • Model or configuration

Important ProductGroup Properties

  • name
  • description
  • productGroupID
  • variesBy
  • hasVariant
  • brand
  • material
  • pattern
  • aggregateRating where applicable

Parent and Variant Data Separation

ProductGroup-level data Variant-level Product data
Common product family name Specific variant name
Common brand Variant SKU and GTIN
Common material or audience Colour and size
Parent productGroupID Variant image
Properties listed in variesBy Variant price and availability

ProductGroup JSON-LD Example

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ProductGroup",
  "@id": "https://www.example.com/products/cotton-shirt#group",
  "name": "Men's Cotton Shirt",
  "description": "Full-sleeve cotton shirt available in multiple colours and sizes.",
  "productGroupID": "SHIRT-100",
  "brand": {
    "@type": "Brand",
    "name": "Example Brand"
  },
  "material": "Cotton",
  "variesBy": [
    "https://schema.org/color",
    "https://schema.org/size"
  ],
  "hasVariant": [
    {
      "@type": "Product",
      "name": "Men's Cotton Shirt - Blue - Size M",
      "sku": "SHIRT-BLUE-M",
      "color": "Blue",
      "size": "M",
      "image": "https://www.example.com/images/shirt-blue-m.jpg",
      "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/products/cotton-shirt?color=blue&size=m",
        "priceCurrency": "INR",
        "price": "1299.00",
        "availability": "https://schema.org/InStock"
      }
    },
    {
      "@type": "Product",
      "name": "Men's Cotton Shirt - Black - Size M",
      "sku": "SHIRT-BLACK-M",
      "color": "Black",
      "size": "M",
      "image": "https://www.example.com/images/shirt-black-m.jpg",
      "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/products/cotton-shirt?color=black&size=m",
        "priceCurrency": "INR",
        "price": "1399.00",
        "availability": "https://schema.org/OutOfStock"
      }
    }
  ]
}
</script>

Single-Page vs Multi-Page Variants

Single Product URL

Some websites keep every variant on one product URL and update the selection dynamically. The markup should describe the ProductGroup and the variants available on that page, including distinct offer URLs or selector-aware URLs where suitable.

Separate Variant URLs

Some websites provide a distinct crawlable URL for each colour, size, or configuration. Each variant page should accurately describe the selected variant and connect it to the shared product group.

Variant Implementation Checklist

  • Each sellable variant has a stable SKU
  • Manufacturer identifiers are variant specific
  • Variant image matches the selected option
  • Variant price and availability are current
  • Variant URL is crawlable when intended for indexing
  • Canonical strategy matches the website's SEO plan
  • ProductGroup relationship is consistent
  • Visible variant data and JSON-LD match

AggregateOffer vs Offer

Use Offer when the page presents one clear merchant offer for the selected product. AggregateOffer may be appropriate when a page genuinely represents multiple offers or a price range for the same product.

AggregateOffer Properties

  • lowPrice
  • highPrice
  • priceCurrency
  • offerCount
  • offers where detailed offers are included

Do not use AggregateOffer simply because different variants have different prices if the page and markup should instead describe individual variant offers.

Reviews and Aggregate Ratings

Review

An individual Review can include:

  • author
  • reviewRating
  • reviewBody
  • datePublished
  • name

AggregateRating

AggregateRating commonly includes:

  • ratingValue
  • reviewCount or ratingCount
  • bestRating
  • worstRating

Review Accuracy Rules

  • Only mark up ratings visible to users
  • Keep counts synchronized with the page
  • Do not create fabricated reviews
  • Do not copy ratings from unrelated websites without permission and proper context
  • Do not mark up a category-wide rating as one product's rating
  • Keep parent and variant rating logic consistent

Shipping and Return Information

Merchant listing structured data can include detailed shipping information and return policy information. Ecommerce businesses can describe policies at the offer or organization level depending on the supported implementation and business structure.

Shipping Data May Include

  • Destination country or region
  • Shipping rate
  • Handling time
  • Transit time
  • Free-shipping conditions

Return Policy Data May Include

  • Applicable country
  • Return window
  • Return method
  • Return fees
  • Refund or exchange conditions
  • Seasonal policy overrides where supported

The structured information must not conflict with the customer-facing shipping and return policy.

BreadcrumbList describes the page's position within the website hierarchy. It contains an ordered itemListElement array of ListItem entities.

ListItem Properties

  • position
  • name
  • item URL for linked hierarchy levels
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://www.example.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Men's Clothing",
      "item": "https://www.example.com/mens-clothing/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Shirts",
      "item": "https://www.example.com/mens-clothing/shirts/"
    },
    {
      "@type": "ListItem",
      "position": 4,
      "name": "Men's Cotton Shirt"
    }
  ]
}
</script>

Breadcrumb Checklist

  • Hierarchy reflects normal user navigation
  • Positions begin at 1 and increase sequentially
  • Names are concise and meaningful
  • Intermediate items use valid canonical URLs
  • Breadcrumb data matches visible navigation where practical
  • URLs do not contain tracking or session parameters
  • Structured data updates when taxonomy changes

Product Schema Data Source Mapping

Schema property Recommended source system
name and description PIM, catalogue database, or CMS
sku, gtin, mpn, brand Product master or ERP
image DAM, media library, or product database
price and currency Pricing and commerce engine
availability Inventory system
shipping Shipping-rate and fulfilment system
returns Policy-management system
reviews and ratings Verified review platform or website database
breadcrumbs Category taxonomy and routing system

Generating schema from the same authoritative systems used for visible content reduces mismatches and maintenance errors.

Align Structured Data, Merchant Center, and Website

Product information should remain consistent across:

  • Visible product page
  • Initial HTML and rendered HTML
  • JSON-LD structured data
  • Merchant Center feed
  • Open Graph or social metadata where applicable
  • Checkout
  • ERP and product master

Critical Fields to Synchronize

  • Product title
  • Selected variant
  • Price
  • Currency
  • Availability
  • Condition
  • Brand
  • GTIN and MPN
  • Images
  • Shipping and returns

Dynamic Price and Availability Markup

Price and availability can change frequently. The structured data should update when the customer-facing product state changes.

Recommended Workflow

  1. Update the commerce or inventory database.
  2. Update the visible product page.
  3. Update JSON-LD from the same source.
  4. Update Merchant Center product data.
  5. Confirm the selected variant.
  6. Test the final checkout state.
  7. Monitor mismatch and structured-data reports.

Common Dynamic Data Problems

  • Cached JSON-LD shows an old price
  • Visible page shows sale price but Offer shows regular price
  • Parent product availability overrides selected variant stock
  • JavaScript updates visible price but not structured data
  • Regional currency changes without updating priceCurrency
  • Out-of-stock product remains marked InStock

JavaScript-Generated Structured Data

Google can process JSON-LD injected with JavaScript, but server-side or consistently rendered markup can be easier to test and less dependent on execution timing.

JavaScript Checklist

  • JSON-LD is present after rendering
  • Only one authoritative Product entity describes the selected product
  • Route changes update the structured data
  • Old variant data is removed
  • Price and stock updates are synchronized
  • No malformed JSON is generated
  • Consent or tag settings do not incorrectly block essential product markup
  • Rendered output is tested with URL Inspection

Canonical URLs and Structured Data

The structured-data URLs should support the page's canonical strategy.

Recommended Controls

  • Use absolute URLs
  • Use the preferred HTTPS host
  • Avoid tracking parameters
  • Do not point offers to non-canonical duplicate pages without a reason
  • Ensure variant URLs match the selected product state
  • Keep @id values stable
  • Update URLs during migrations

Category Pages and Product Schema

Product rich-result markup is primarily designed for pages focused on a specific product. A category page containing many product cards should not automatically be treated as one Product.

Category pages may use other relevant markup, such as:

  • BreadcrumbList
  • ItemList where appropriate
  • Organization
  • WebPage

Do not combine several unrelated products into one Product entity.

Out-of-Stock and Discontinued Products

Temporarily Out of Stock

  • Keep the product page available if it remains useful
  • Set Offer availability accurately
  • Show restock information only when reliable
  • Keep price accurate if the offer remains valid
  • Offer relevant alternatives

Discontinued Product

  • Use an accurate discontinued status where suitable
  • Remove or change Offer data when the product is no longer purchasable
  • Keep historical product content only when it serves users
  • Redirect only when a genuinely equivalent replacement exists

Multi-Country and Multi-Currency Websites

Each localized product page should describe the visible offer for that market.

Review

  • Currency
  • Localized price
  • Availability
  • Language
  • Shipping destination
  • Return policy
  • Canonical and hreflang configuration
  • Country-specific Merchant Center feed

Do not place multiple conflicting prices in one Offer without a clear supported model.

Structured Data Validation Workflow

Step 1: Validate the JSON

Confirm that the code is syntactically valid and does not contain trailing commas, unescaped characters, or broken nesting.

Step 2: Use Rich Results Test

Test the code or live URL and correct critical errors. Review non-critical recommendations that improve completeness.

Step 3: Use Schema Markup Validator

Review the broader Schema.org structure and properties.

Step 4: Test the Rendered Page

Use Search Console URL Inspection to confirm how Google sees dynamically generated structured data.

Step 5: Deploy a Small Sample

Release the implementation on representative products covering:

  • Single offer
  • Sale price
  • Out of stock
  • Multiple variants
  • Reviews
  • Shipping and returns

Step 6: Monitor Search Console

Track valid items, invalid items, warnings, new error types, and page examples after deployment.

Step 7: Expand Gradually

After validating the sample, release the template across additional categories and products.

Common Product Schema Errors

1. Missing name

The Product entity must clearly identify the product.

2. Missing offers, review, or aggregateRating for Product Snippets

Eligibility requirements depend on the selected product feature. Review the current Google documentation for required properties.

3. Missing priceCurrency

Price should be paired with the correct currency code.

4. Invalid availability value

Use a supported Schema.org enumeration URL.

5. Price mismatch

The structured-data price differs from the visible product page or checkout.

6. Variant mismatch

The markup describes one colour or size while the page displays another.

7. Review count mismatch

The visible count and AggregateRating values differ.

8. Product markup on non-product pages

A category, search, or service page is incorrectly described as one Product.

9. Hidden content

Structured data contains information not available to users.

10. Duplicate conflicting Product entities

A theme, plugin, app, and custom code may each generate different markup.

11. Invalid GTIN

The code is guessed, incorrectly formatted, or belongs to another product.

12. Stale cache

The page price changes while cached JSON-LD remains old.

Common Breadcrumb Errors

  • Missing itemListElement
  • Position values are duplicated or out of order
  • Intermediate item URL is missing
  • Breadcrumb names do not match the hierarchy
  • Tracking parameters appear in item URLs
  • Taxonomy changes but schema remains old
  • Multiple breadcrumb trails conflict without a clear reason

Structured Data Troubleshooting Table

Problem What to inspect Recommended correction
Price warning or mismatch Visible page, JSON-LD, feed, checkout Generate all values from the same pricing source
Availability mismatch Selected variant and inventory state Update Offer for the exact variant
Duplicate Product entities Theme, plugins, apps, tag manager, custom code Keep one authoritative implementation
Rating mismatch Visible rating, count, and review database Synchronize AggregateRating values
Variant not understood ProductGroup, variesBy, hasVariant, URLs Implement consistent group and variant relationships
Breadcrumb error ListItem name, URL, and position Rebuild the ordered hierarchy
Markup missing after render JavaScript execution and route changes Fix rendering or generate server-side JSON-LD
Valid markup but no rich result Eligibility, quality, indexing, policies Confirm guidelines; appearance is not guaranteed

CMS and Platform Implementation

WordPress and WooCommerce

Review theme, SEO plugin, ecommerce plugin, review plugin, and custom template output. Multiple plugins can generate overlapping Product entities.

Shopify

Review theme JSON-LD, installed SEO or review applications, product variant URLs, and localized market output.

Magento or Adobe Commerce

Review product templates, configurable product logic, extension output, cache layers, and store-view localization.

Custom Ecommerce Platform

Create a schema-generation service connected to the product master, price engine, inventory, review database, and category taxonomy. Add automated tests to the deployment process.

Automated Schema QA Rules

  • Every indexable product has one authoritative Product entity
  • Product name is not empty
  • SKU is unique within the catalogue
  • Price is numeric
  • Currency is supported
  • Availability is from an approved list
  • Offer URL is absolute
  • Image URL is crawlable
  • Variant values match the selected state
  • GTIN format is valid when present
  • Review count equals the current review database
  • Breadcrumb positions are sequential
  • No test-domain URL appears in production
  • No expired sale date remains active

Schema Monitoring KPIs

KPI Purpose
Product pages with valid markup Measures implementation coverage
Critical structured-data error rate Measures eligibility risk
Price mismatch rate Measures synchronization quality
Availability mismatch rate Measures stock-data quality
Variant schema coverage Measures ProductGroup implementation
Breadcrumb validity rate Measures hierarchy markup quality
Rich-result impressions Measures search appearance where reported
Structured-data regression count Measures template and deployment stability

Daily, Weekly, and Monthly Workflow

Daily

  • Review new critical errors after releases
  • Check price and stock synchronization
  • Check high-traffic product examples
  • Check Merchant Center mismatch alerts
  • Check test-domain or broken URL issues

Weekly

  • Review Search Console rich-result reports
  • Test representative product templates
  • Review variant products
  • Review review-count synchronization
  • Review breadcrumb output
  • Review duplicate markup sources

Monthly

  • Audit schema coverage by category
  • Review Google documentation changes
  • Compare website and Merchant Center data
  • Review shipping and return policy markup
  • Review structured-data performance
  • Update automated QA rules

30-Day Ecommerce Schema Implementation Plan

Days 1-7: Audit and Data Mapping

  • Crawl current structured data
  • Identify plugins and code sources
  • Map Product and Offer properties
  • Map variants and product groups
  • Map breadcrumbs and policies
  • Identify data-quality gaps

Days 8-14: Template Development

  • Build Product and Offer JSON-LD
  • Build ProductGroup logic
  • Build BreadcrumbList logic
  • Connect reviews and ratings
  • Connect shipping and returns
  • Add automated validations

Days 15-21: Testing

  • Test single products
  • Test variants
  • Test sale and regular price
  • Test in-stock and out-of-stock states
  • Test localized pages
  • Use Rich Results Test and URL Inspection

Days 22-30: Deployment and Monitoring

  • Deploy a controlled sample
  • Monitor Search Console
  • Fix critical and template errors
  • Expand to remaining categories
  • Document ownership and release checks
  • Create ongoing schema dashboards

Complete Ecommerce Schema Checklist

  • JSON-LD is valid
  • Product data matches visible content
  • Offer price and currency are accurate
  • Availability is current
  • Condition is accurate
  • Brand and identifiers are correct
  • Images match the product and variant
  • ProductGroup connects valid variants
  • Reviews and ratings are genuine and synchronized
  • Shipping information is accurate
  • Return policy information is accurate
  • BreadcrumbList follows the hierarchy
  • URLs are absolute and canonical
  • Merchant Center feed is aligned
  • Rich Results Test passes critical requirements
  • Rendered output is visible to Google
  • Search Console monitoring is active
  • Automated regression checks are configured

How DigiCommerce Supports Ecommerce Schema Markup

DigiCommerce helps ecommerce brands, retailers, manufacturers, and online stores audit, implement, and maintain structured data.

  • Product and Offer schema audits
  • Merchant listing markup
  • ProductGroup and variant implementation
  • Review and AggregateRating integration
  • Shipping and return policy markup
  • BreadcrumbList implementation
  • Merchant Center alignment
  • JSON-LD template development
  • Plugin and duplicate-markup cleanup
  • Rich Results Test validation
  • Search Console monitoring
  • Automated schema QA documentation

Related DigiCommerce resources include ecommerce product page SEO, Google Merchant Center feed errors, product information management, and ecommerce category page SEO.

Frequently Asked Questions

1. What is Product schema?

Product schema is structured data describing a product's identity, images, identifiers, brand, reviews, variants, and commercial offers.

2. What is Offer schema?

Offer schema describes the merchant's price, currency, availability, condition, URL, and related purchasing information.

3. Should ecommerce websites use JSON-LD?

JSON-LD is generally the easiest format to implement and maintain, although Google also supports Microdata and RDFa when correctly implemented.

4. Does schema markup guarantee a rich result?

No. Valid markup creates eligibility, but Google decides whether and how supported enhancements appear.

5. Should structured-data price match the website?

Yes. Price and currency should match the visible product page and final purchasable offer.

6. How should product variants be marked up?

Use ProductGroup to identify the parent family and Product entities for variants, with accurate variesBy, hasVariant, identifiers, images, offers, and URLs.

7. Can a category page use Product schema?

A category containing many unrelated products should not be described as one Product. Use markup appropriate to the page and create Product data on individual product pages.

8. Can reviews be added only in schema?

No. Reviews and aggregate ratings should reflect genuine information visible to users on the page.

9. What is BreadcrumbList schema?

BreadcrumbList describes an ordered navigation trail using ListItem entries with position, name, and linked item URLs where applicable.

10. Should Merchant Center and Product schema both be used?

Using accurate structured data together with an accurate Merchant Center feed can improve Google's ability to understand and verify product information.

11. How should schema be tested?

Use the Rich Results Test during development, URL Inspection for rendered pages, Search Console reports after deployment, and automated template checks.

12. Can DigiCommerce implement ecommerce schema?

Yes. DigiCommerce can audit existing markup, build Product and Offer JSON-LD, handle variants and breadcrumbs, align Merchant Center data, and establish monitoring.

Conclusion

Ecommerce schema markup should be generated from accurate product, pricing, inventory, review, policy, and taxonomy data. Product and Offer entities describe the sellable item, ProductGroup connects variants, Review and AggregateRating describe genuine customer feedback, and BreadcrumbList communicates the site hierarchy.

The strongest implementation aligns visible content, JSON-LD, Merchant Center feeds, checkout, and source systems. It is tested before launch, monitored after deployment, and updated whenever product templates, prices, stock, variants, policies, or taxonomy change.

For Product, Offer, ProductGroup, Review, shipping, return policy, and BreadcrumbList schema implementation, Merchant Center alignment, validation, and Search Console monitoring, connect with DigiCommerce Solutions.

Ready to Grow Your Business?

Let's turn your e-commerce challenges into success stories. Fill out the form below to connect with one of our experts for a free consultation and strategic analysis.

Send Us a Message

1f2014e7

Direct Contact

Get in touch with our team of experts directly.



WhatsApp Call Now Carrers

Quick Enquiry

Fill out the form and we will contact you shortly.

1f2014e7