An SEO plugin is the right answer for most sites, and for a store with a fixed structure and a small team it is sometimes the wrong one. Every rule lives behind a settings screen, the output depends on what somebody configured months ago, and the surface area is enormous compared to what the site actually uses.
For a storefront where the page types are known and few, we wrote the SEO layer directly into the site’s own plugin. It does four things and nothing else.
A structured-data graph, not scattered blocks
Search engines connect entities through identifiers, so the organisation, the website and the current page are emitted as one linked graph rather than three unrelated blocks. The website declares its publisher, the publisher carries the contact details and social profiles, and each article points back at the same organisation node. A crawler reads it as one business, not three coincidences.
Telling search engines what not to index
Cart, checkout and account pages are indexable by default in a stock WordPress install. They should not be: they are personal, they are thin, and they dilute the crawl budget that should be going to products. Those three contexts are marked noindex and nofollow at the source, so the rule cannot be forgotten in a settings panel.
Titles and descriptions that follow the page type
Document titles are generated per context rather than per page, so a new category needs no manual entry to get a sensible title. The description falls back through page content, product excerpt and a brand default, which means no page ever ships without one.
When this is the wrong choice
Code beats a plugin when the rules are stable and the team is small. It loses the moment a marketer needs to edit a meta description without a deployment. We use both approaches depending on the client — and on our own site, which needs editable meta, we run a plugin.
Key takeaways
- Emit structured data as a connected graph with stable identifiers, not as isolated snippets.
- Cart, checkout and account pages should be noindexed — the default does not do this for you.
- Derive titles and descriptions per page type so new content is never missing them.
- Choose code over a plugin only when non-developers will not need to change the output.
Related reading: our SEO services, and what website maintenance actually covers.
Running into a similar limitation in your own WooCommerce or WordPress store? Let’s Talk — ArtinTech Solution builds exactly this kind of custom store tooling.