EAN and GTIN in WooCommerce: Where to Enter Them and Why Google Wants Them

EAN, GTIN, UPC: what these numbers mean, who assigns them, where to enter them in WooCommerce and what Google Merchant Center requires. Common mistakes to avoid.

Catalog audit: number of products with a missing field, values to harmonize and probable duplicates, then the missing fields per category with, for each product, the fields it lacks and a CSV export

Beneath every barcode is a number. That number, not the bars, is what matters to an online store: it identifies a product uniquely worldwide, whoever sells it. Google uses it to match offers, marketplaces use it to avoid duplicates, comparison sites use it to show the right price against the right SKU.

Since version 9.2, WooCommerce has had a native field for this number. You still need to know what goes in it, where the value comes from, and what happens when it is missing.

GTIN, EAN, UPC: one system, several names

The GTIN (Global Trade Item Number) is the item identifier defined by GS1, the organization that runs the barcode system. EAN and UPC are historical names for formats of that same identifier. GS1 puts it plainly: EAN is the older term for what is now called a GTIN.

The formats differ by length:

  • GTIN-13, the standard format in Europe, known as EAN-13;
  • GTIN-12, the North American format, known as UPC;
  • GTIN-8, reserved for very small packages;
  • GTIN-14, used for logistics units (cartons, cases);
  • ISBN, the identifier for books, now written with 13 digits.

A GTIN-13 is made up of a prefix assigned by a national GS1 member organization, a part specific to the company and the product, then a check digit computed from the preceding digits. Prefixes 300 to 379, for example, are managed by GS1 France, and prefixes 000 to 139 by GS1 US. They indicate which organization issued the code, not the country where the product was made.

Verifying the check digit

The check digit makes it possible to detect a typing error. For a GTIN-13, multiply the first twelve digits alternately by 1 and by 3 starting from the left, add up the results, then find what is missing to reach the next multiple of ten.

With the fictional number 123456789012: 1x1 + 2x3 + 3x1 + 4x3 + 5x1 + 6x3 + 7x1 + 8x3 + 9x1 + 0x3 + 1x1 + 2x3 = 92. It takes 8 to reach 100, so the complete code is 1234567890128. GS1 provides an online calculator, and Google explicitly recommends verifying the check digit before submitting a GTIN.

Who assigns the GTIN

The GTIN is assigned by the brand owner, not by the reseller. If you sell branded products, the number already exists: it appears on the packaging, in the spec sheet or in the supplier’s file. Your job is to copy it faithfully, for every variant.

If you make your own products, you have to obtain your codes. That means joining your national GS1 organization (GS1 US, GS1 UK, GS1 France and so on), which grants a license and gives access to the code creation tool. Fees generally depend on the number of codes you need or on your revenue, not on units sold. A GTIN identifies a SKU, not each individual unit: a candle offered in three scents and two sizes requires six codes, not one per candle sold.

GS1 warns against codes resold by third parties: a number already used for another product, or missing from the GS1 database, can be rejected by marketplaces that verify validity.

That leaves products with no GTIN at all: handmade items, one-offs, made-to-order products, vintage goods. Do not invent one under any circumstances. Google says so without hedging: do not create, guess or reuse values from similar products.

Where to enter the GTIN in WooCommerce

Since WooCommerce 9.2, the classic product editor includes a field labeled “GTIN, UPC, EAN, or ISBN.” It sits in the Inventory tab of the product data panel, next to the SKU.

A few things to know about this field:

  • It also exists for variations. Each size or color of a variable product gets its own number, in the variation panel, in the same way as its attributes.
  • It enforces uniqueness. As with the SKU, WooCommerce refuses to assign the same value to two products.
  • It accepts only digits and hyphens. That does not guarantee the number is a valid GTIN: checking the length and the check digit is up to you.
  • It is supported by CSV import and export since version 9.5, which lets you populate a whole catalog in a single operation.
  • It feeds the structured data. Since version 9.3, WooCommerce includes the value in the page’s Product markup when it is a valid GTIN.

Before version 9.2, stores kept the GTIN in a field added by a feed plugin, by an SEO plugin or in a custom attribute. Those legacy values do not migrate to the native field on their own. If your store has some, a CSV export followed by an import into the native column brings them together, after verification.

The Google for WooCommerce extension, for its part, reads the native field when syncing with Merchant Center. Third-party feed plugins generally let you select it as the source of the gtin attribute; it is worth confirming in their settings.

Why Google wants the GTIN

For Google Merchant Center, the GTIN is strongly recommended for every product to which the manufacturer has assigned one. The documentation spells out the consequence: a product that has a GTIN but is submitted without it risks limited visibility. The number lets Google know exactly what you are selling and classify your offer correctly, and the documentation adds that including it can improve the product’s performance.

The rules are precise:

  • Length: 8, 12, 13 or 14 digits. Spaces and hyphens are tolerated but ignored.
  • Check digit: it must be present and correct.
  • Reserved ranges: codes starting with 2, 02 or 04 are for internal use (products sold by weight, store-specific codes) and must not be submitted. Prefixes 05, 98 and 99 correspond to coupons.
  • Variants: every product or product variant (different colors or sizes) has its own GTIN.
  • Multipacks and bundles: for a multipack or bundle designed by the manufacturer, submit the GTIN of the pack itself. For a multipack of identical units assembled by the merchant, submit the single unit’s GTIN; for a bundle of different products, submit the main product’s GTIN and flag the bundle with the is_bundle attribute.

For a product without a GTIN, Google asks for the brand and the manufacturer part number (MPN). If you are the manufacturer and have no official brand, the store name serves as the brand, along with a reference of your choosing. The identifier_exists attribute declares that a new product has no identifier; declaring it wrongly, when a GTIN does exist, triggers a warning.

On the organic search side, Search Central documentation recommends including the GTIN in the structured data of merchant listings, in its numeric form. The details of that markup are covered in our article on Product structured data.

The most common mistakes

Most GTIN problems come down to a few simple mix-ups.

  • The SKU entered instead of the GTIN. The store’s internal reference is not a global identifier.
  • The same GTIN on every variation. The parent product’s code copied onto every size prevents Google from telling the variants apart.
  • The lost leading zero. A UPC opened in a spreadsheet is often converted to a number, and its first zero disappears. Format the column as text before any import.
  • The carton’s code instead of the unit’s. A GTIN-14 read from the supplier’s case identifies the carton, not the product sold individually.
  • A GTIN borrowed from a neighboring product. This is the costliest error, because it ties your page to the specifications of a different item.

These points also appear in our guide to setting up Google Merchant Center with WooCommerce, where the GTIN is only one of the attributes to get right.

The GTIN in product page writing

In Fichewise, the GTIN serves first as a starting point: it is the most precise identifier for finding the manufacturer’s page and ruling out those that describe a neighboring SKU. When the number is missing, the plugin looks for it in the supplier documents and the sources consulted, then proposes it with its source; it is saved to WooCommerce’s native field only after your approval. The full workflow is described on the Features page.