All 20 Schema Pro sections

See every section

Site Identity

Updated Schema Pro 1.14.0Tested with WordPress 7.1

Schema Pro → Site Identity produces the entity that represents the site. Choose Organisation for a company, Person for a personal site or portfolio.

The logo should be at least 112px on its shortest side, which is Google's stated minimum. Social profile URLs, one per line, become sameAs links, which is how search engines connect your site to your profiles elsewhere.

Paste each profile's address as your browser copies it. An address with an accent or a non-Latin letter in it is copied with % codes, such as linkedin.com/company/soci%C3%A9t%C3%A9-g%C3%A9n%C3%A9rale/, and it is kept exactly as pasted. An address pasted without https:// is given it. A line that is not a web address as it stands is left out rather than changed into another address, and the message after saving names it: a note to yourself, an email address, two addresses on one line, or an address with a space or a character such as { in it. The same goes for the profile links of a Person, Organization or Profile Page schema, and for a schema brought in from a settings file, where the message after importing names each line under its schema. Typed into one post's Schema Pro panel instead, such a line is left out without a message, and the post's markup in the panel shows what was kept; if none of the lines there is a web address, the post keeps the links it had.

A profile address saved by an earlier version lost its % codes when it was saved, and the part of the address they spelled went with them. Such an address is kept as it is, because what was lost cannot be worked out again: if a profile of yours has an accent in its address, paste it again and save.

Other schemas point at this identity rather than repeating a bare name. An Article's publisher, a Service's or Course's provider, a Job Posting's hiring organisation, an Event's organiser and a WooCommerce product's seller all refer to it when they are left to fill themselves or name the site, so the logo and profiles set here reach every one of them. When an SEO plugin provides the identity instead, they carry the name written out, as before.

Organisation details#

For an organisation, the Organisation Details panel, below Publisher, says more about who is behind the site. Every field is optional and starts empty, and each is added to your organisation's markup only once you fill it in, so a site that leaves the panel alone outputs exactly what it did before.

  • Legal name and Other name, the name you are registered under and a trading or short name people also know you by (legalName, alternateName).
  • Description, a sentence or two about what the organisation does.
  • Founded, a date, and Number of employees, a whole number (foundingDate, numberOfEmployees).
  • Address: street, town or city, region, postcode and a two-letter country code. Any one part is enough to add an address (PostalAddress). The address is published in your page source for anyone to read, so leave it empty if it is your home address.
  • Customer service phone and Customer service email, added as a contact point for customer service (contactPoint).
  • Company numbers, folded away until you open them: VAT number, tax number, DUNS number, LEI, ISO 6523 code and NAICS code (vatID, taxID, duns, leiCode, iso6523Code, naics).

VAT and tax numbers are kept exactly as you type them. A few fields have a shape they must have, and a value without it is left out when you save, with the message after saving naming each one, and the field keeps what it held before: the country must be one two-letter code (UK is refused; the United Kingdom is GB), a DUNS number has nine digits (dashes and spaces are fine), an LEI has 20 letters and digits, the founding date must be a real date and not after today, the number of employees a whole number above zero, and the customer service email an email address.

On a WooCommerce shop, Fill in from WooCommerce copies the store address from WooCommerce → Settings → General into the address fields: both address lines as the street, the city, the postcode, the country, and the state or county by the name WooCommerce shows. It fills the form and nothing else; the address is kept when you press Save changes. If the fields already hold a different address, it asks first.

On a shop, the Dashboard's Site Identity panel says when your organisation has no address yet. If you leave the address empty on purpose, because it is your home, that line stays there as a note and changes nothing on your pages. A Person identity carries none of these details.

Return policy#

For an organisation, the Return Policy panel declares your shop-wide return policy, which Google reads for its merchant listings. Choose whether returns are accepted within a set number of days, at any time, or not at all, and give the two-letter codes of the countries it covers, such as GB, IE. For a set window, give the number of days. The return method, the return fees and a restocking fee (a percentage of the price) are optional. Nothing is added until a policy and at least one valid country are given. A country code that is not two letters is left out, and the message after saving names it.

Both policies belong to the organisation Schema Pro outputs, as do the organisation details above. When an SEO plugin such as Yoast writes your organisation instead (see Working with an SEO plugin), neither policy and none of the details reaches any page, and each of the three panels says so.

Shipping policy#

For an organisation, the Shipping Policy panel under Site Identity declares what shipping costs and how long it takes, once, for the whole shop. Google reads a shop-wide shipping policy from the organisation for its merchant listings, and recommends it over shipping details on every product.

Each row is a group of countries with the same cost:

  • Countries: two-letter codes, such as ES, PT.
  • Shipping cost: A fixed amount, with the Amount, or Free.
  • Free for orders over: optional. With a fixed amount, orders from this value up ship free; with Free, only orders from this value up ship free.
  • Minimum delivery days and Maximum delivery days: optional, how long the parcel takes to arrive once sent. One of the two alone is used for both.

Below the rows, Minimum handling days and Maximum handling days say how long an order takes to leave you. Google reads handling time once for the whole policy, not per country, so it is one pair for every row. We do not ship to takes the two-letter codes of countries you do not deliver to. A country listed there is left out of every row, so a row for a whole continent can leave out the few countries in it you do not ship to. When a country is in two rows, both are in the markup, and Google uses the lower cost that applies.

Use Add row for another group of countries, and the × on a row to remove it; up to 20 rows. A row is added to your markup once it has countries and a cost; one that is missing either is kept for you to finish and left out of the markup until then. After saving, a code that is not two letters, an amount that is not a number and delivery days that end before they start are left out, and the message names each one with its row. On a shop, a code must also be a country WooCommerce knows, so XX or EU is left out; and UK is always left out, because the United Kingdom's code is GB. Without WooCommerce there is no list to check against, so any other two letters are taken as typed. Amounts can have up to four decimals, for a currency such as the Kuwaiti dinar that uses three.

Amounts are in your WooCommerce store currency, the one set under WooCommerce → Settings → General, even where a currency switcher shows visitors another. On a site without WooCommerce the panel asks for a Currency (a three-letter code such as EUR), and nothing is output until one is given.

Fill in from WooCommerce reads your WooCommerce shipping zones into the rows, one row per zone. It fills the form and nothing else: check the rows, add delivery days, and press Save changes. If rows are already filled in, it asks before replacing them, and a row for the same countries keeps the delivery days you typed. When your zones are read but no country in them has a single cost, the rows are replaced with one empty row for you to fill in. When no cost can be read from your zones at all, the rows you have are left as they are.

It reads the zones in the order they are listed under WooCommerce → Settings → Shipping, because that is how WooCommerce charges: a customer pays what the first zone that covers their address says, and never the zones below it. So with a Spain zone above a Europe zone, Spain is filled in with the Spain zone's cost only, the Europe row gets the rest of Europe, and the note under the rows says Spain was left out of Europe. Move the zones on WooCommerce's screen and the fill follows.

It reads:

  • each zone's countries, with a continent turned into its countries, and only countries you ship to (WooCommerce's shipping locations);
  • a Flat rate whose cost is a plain amount, such as 4.95 (or 4,95, which WooCommerce reads the same way). When a zone has several, the cheapest is used, as Google uses the lowest rate where more than one applies;
  • Free shipping with no requirement, or from a minimum order amount.

A zone limited to a region or to postcodes covers only part of a country. WooCommerce charges the rest of that country by the first zone below it that either covers the whole country or has no region at all (Everywhere), or else by Locations not covered by your other zones, and the fill follows the same rule. Say you deliver free to London postcodes in a Local delivery zone and charge a flat rate to the rest of the UK under Locations not covered by your other zones: the UK is left out and named, because a UK shopper outside London pays the flat rate and Google must not be told the UK ships free. The same goes for several zones that cover parts of one country, say the Canary Islands above Spain. The country gets a row only when they all cost the same (a flat rate of 0 counts as free); otherwise it is left out and named, because Google is given one cost per country and the fill will not choose one for you. Where nothing ships to the rest of the country, because the zone that would charge it has no method switched on, or only local pickup, the whole country is filled in from the zones that cover part of it, and the note says so, so check that row.

It leaves out, and names under the rows, a flat rate that uses a formula ([qty], [cost], [fee]) or shipping class costs, free shipping that needs a coupon, any other method such as local pickup, a zone with no country, and a zone of postcodes with no country. Locations not covered by your other zones names no countries, so it never has a row of its own: its cost is read only for the rest of a country that other zones cover part of. A zone with no region at all, which WooCommerce shows as Everywhere, covers every address, so no zone below it is used and none is filled in. It has no row of its own either, and its cost is read the same way. Flat rates are filled in as WooCommerce stores them, without tax; add the tax yourself if your customers pay it on shipping. With shipping turned off in WooCommerce's general settings, nothing is filled in, and the note says why.

Rows filled in this way are not kept in step with WooCommerce by themselves, because a wrong shipping cost in your markup is yours to answer for. When a zone's countries, a flat rate's cost or a free shipping minimum changes afterwards, or the zones are put in a different order, the panel says Your shipping zones changed since you filled this in. Fill it in again, check the rows and save. The note goes once rows filled in again are saved, or once every row is removed. A change under Locations not covered by your other zones counts only while its cost is read for the rest of a country. Adding a shipping class does not count as a change until you give it a cost in a flat rate.

Rows filled in by version 1.12.0 get a different note where a zone covers only part of a country that one of your rows names: Check what your rows say for GB., naming each such country. That version filled such a country in from the zones covering part of it, without the zone that charges the rest of it, so its row may give the whole country a local rate. Your zones need not have changed for this note. Fill it in again, or check those rows and correct them if they need it, then save. The note goes once you save, so check the rows it names first.

What the policy does not cover: rates by weight, by number of items or by postcode, several delivery speeds for one country (Google shows the lowest rate with the fastest time when several rows apply), and a shipping cost for one product. The panel does not ask which days of the week you dispatch or deliver on.

On a shop, the Dashboard's Site Identity panel says which of the two policies, returns and shipping, is not set yet, and whether your organisation has an address.

Still stuck? Ask the developers who wrote it. We aim to reply within one business day.