MerchantReturnPolicy Schema Generator

Build Google-ready return policy markup for your whole store, or override it for a single product.

Describe the result you need. AI will set up the tool and ask for any missing details.

Configure with AI

Enter to submit · Shift + Enter for a new line

Sent to AI. Leave out passwords and private customer data.

Your details

Where it goes

Used for the policy's @id, so product markup can point at it.

Return window

Two-letter ISO codes, up to 50.

days
How returns work
Holiday returns

Your MerchantReturnPolicy markup

return-policy-schema.html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "OnlineStore",
  "name": "Harbour & Co",
  "url": "https://example.com",
  "hasMerchantReturnPolicy": {
    "@type": "MerchantReturnPolicy",
    "@id": "https://example.com/policies/refund-policy#return-policy",
    "applicableCountry": "US",
    "returnPolicyCountry": "US",
    "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
    "merchantReturnDays": 30,
    "returnMethod": "https://schema.org/ReturnByMail",
    "returnFees": "https://schema.org/FreeReturn",
    "refundType": "https://schema.org/FullRefund",
    "returnLabelSource": "https://schema.org/ReturnLabelDownloadAndPrint",
    "itemCondition": "https://schema.org/NewCondition",
    "merchantReturnLink": "https://example.com/policies/refund-policy"
  }
}
</script>

Put this on your returns policy page (or wherever your Organization markup lives). You don't need it on every page. If you set return policies in Merchant Center or Search Console, Google uses those instead of this markup.

Store-wide or product-level?

Google reads return policies from two places. Most stores need only the first:

LevelWhere it goesUse it for
OrganizationhasMerchantReturnPolicy on your Organization or OnlineStore markupYour standard policy. Put it on one page, such as your returns page.
OfferhasMerchantReturnPolicy inside a product's OfferProducts with different terms, like final-sale items. Supports fewer properties.

When both exist, Google uses the product-level policy for that product. Settings in Merchant Center or Search Console beat all markup, in this order: product feeds, Content API, Merchant Center or Search Console settings, product markup, then organization markup.

What Google requires

  • applicableCountry and returnPolicyCategory are required (or a merchantReturnLink on its own). You can list up to 50 countries.
  • A finite return window also needs merchantReturnDays, counted from delivery.
  • returnShippingFeesAmount only goes with ReturnShippingFees. Free returns and customer-arranged returns must leave it out. The tool handles this for you.
  • Organization-level policies can add refund type, label source, restocking fees, accepted item condition, separate fees for defective items and a holiday window. Offer-level policies can't.

Adding it to your store

  1. 01

    Shopify

    Paste the organization markup into Online Store → Themes → … → Edit code, in theme.liquid before </head> or on the template that renders your returns page. Keep the policy text on the page in line with the markup.

  2. 02

    WooCommerce

    Add it to your returns page with a Custom HTML block, or print it in wp_head with a code snippets plugin. If your SEO plugin already outputs Organization markup, merge the property into that instead of adding a second Organization.

  3. 03

    Product overrides

    Paste the Offer-level property inside the product's existing Offer. Leave the rest of the Product markup as it is.

Questions people ask

Does return policy markup show in search results?

It can show return details on merchant listings, such as free returns or a 30-day window. Google decides when to display them.

Do I need it on every product page?

No. Google recommends one store-wide policy on a single page. Only add product-level markup for products with different terms.

What if I already set returns in Merchant Center?

Merchant Center and Search Console settings take priority, so Google uses those and ignores this markup. Keep them consistent anyway.

How do I mark a product as final sale?

Use the “Final sale product” preset. It creates an Offer-level policy with MerchantReturnNotPermitted.

How do I show a longer holiday return window?

Turn on the holiday option. It adds a returnPolicySeasonalOverride with its own dates and number of days.

Want this builtinto your store?

I'm Emmanuel, a Shopify and WooCommerce developer. If this tool pointed at something you'd rather have fixed for you (a faster store, cleaner product data, a migration, a custom feature), send me a note.

Emmanuel Asika

Emmanuel Asika

Shopify & WooCommerce developer, Dublin

I build and fix online stores: new builds, migrations, speed, SEO and the custom bits apps can't do.

hello@emmanuelasika.com