Etavrian
keyboard_arrow_right Created with Sketch.
Blog
keyboard_arrow_right Created with Sketch.

Google killed HowTo snippets - why I still ship the markup in 2025

10
min read
Aug 9, 2025
Minimalist tech illustration of a confident marketer dragging a glowing HowTo tag into a data pipeline with subtle UI icons and modern design elements

When a page teaches someone how to do something, I want search engines to recognize it as instructional, not just another article. That is what HowTo structured data still does well. Even without splashy search features, it tightens topical relevance, supports some assistive and voice experiences, and gives AI systems a cleaner view of the steps and why the content is credible.

HowTo schema markup

Short version: HowTo schema labels a page as a series of steps to complete a task. The fastest workflow is to outline the steps on the page, give each step a working anchor, then add a small JSON-LD block that mirrors those steps. On B2B service pages - onboarding guides and SOPs - this usually takes 30 to 60 minutes and pays back with clearer semantics, more eligibility across non-Google surfaces, and steadier engagement on pages where people truly need instructions.

Important update

In April 2024, Google fully removed HowTo rich results. You can still use HowTo markup, but you should not expect special HowTo snippets or CTR lifts in Google Search. The markup remains useful for meaning, accessibility, Bing and other engines, and downstream AI that reads schema to understand a task. Keep using it - just keep expectations grounded.

Why I still do this for B2B teams

Structured data helps search understand the page. The HowTo type gives a clean model for steps, tools, supplies, cost, and time. Put those together and you get a repeatable, low-drama project with compounding benefits. Start with one high-intent guide, add anchors for each step, ship JSON-LD, validate, and monitor. Then rinse and repeat for your most used SOPs and process docs.

A quick mental model

  • HowTo
    • step → HowToStep (with direction text or HowToDirection)
    • supply → HowToSupply
    • tool → HowToTool
    • image → ImageObject
    • totalTime, estimatedCost

Note: Structured data does not replace good HTML and ARIA. It complements accessible, semantic markup; it does not stand in for it.

HowTo schema required properties

You do not need every possible field, but whatever you include must reflect visible content on the page and be accurate.

Core objects

  • HowTo: The parent for the full guide. Common fields: name, description, image, step, totalTime, estimatedCost, supply, tool, mainEntityOfPage.
  • HowToStep: Each action the user takes. Use name, text, url, and image. For long steps, you can nest directions under itemListElement.
  • HowToDirection and HowToTip: Direction holds the instruction text for a step; Tip adds optional advice to help avoid mistakes.
  • HowToSection: Useful for grouping phases like Prepare, Configure, Verify.

Required, recommended, practical

  • Historically required for Google rich results: HowTo name, at least two HowToStep items with name and text, and an image at either the HowTo or per-step level.
  • Strongly recommended now: description, mainEntityOfPage, totalTime (ISO 8601), estimatedCost with currency, and step-level URL anchors so people can deep-link.
  • Supplies and tools: Add supply and tool when relevant. They can be simple strings or fully typed HowToSupply and HowToTool objects.

Parity rules that save headaches

  • Every marked-up step must exist on the page with matching text.
  • Images in the markup must be visible and crawlable. Use absolute URLs; 1200 px width or more is ideal.
  • Time and cost should match the page. Keep units consistent site-wide.
  • Schema.org lists many fields. It is exhaustive but not prescriptive about search behavior. Old vendor checklists that promised rich results may be outdated; the code is still valid even if Google’s special visuals are not.

JSON-LD HowTo schema example

A complete example for a B2B guide titled "How to qualify enterprise leads." Add this in the head or body after the on-page steps and anchors exist.

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/guides/qualify-enterprise-leads"
  },
  "name": "How to qualify enterprise leads",
  "description": "A simple process to qualify enterprise leads using budget, authority, need, and timing so your sales team spends time where it counts.",
  "image": {
    "@type": "ImageObject",
    "url": "https://example.com/images/howto-qualify-enterprise-leads-cover.png",
    "width": 1600,
    "height": 900
  },
  "totalTime": "PT45M",
  "estimatedCost": {
    "@type": "MonetaryAmount",
    "currency": "USD",
    "value": 0
  },
  "supply": [
    { "@type": "HowToSupply", "name": "ICP checklist" },
    { "@type": "HowToSupply", "name": "Lead intake form" }
  ],
  "tool": [
    { "@type": "HowToTool", "name": "CRM with lead fields", "url": "https://example-crm.com/" },
    { "@type": "HowToTool", "name": "Call recording app" }
  ],
  "step": [
    {
      "@type": "HowToStep",
      "name": "Confirm fit against ICP",
      "url": "https://example.com/guides/qualify-enterprise-leads#step-1-icp-fit",
      "image": "https://example.com/images/howto/step-1-icp-fit.png",
      "text": "Open the lead record and compare industry, employee count, and tech stack to your ICP checklist. Mark the fit field Yes or No."
    },
    {
      "@type": "HowToStep",
      "name": "Validate budget and timeline",
      "url": "https://example.com/guides/qualify-enterprise-leads#step-2-budget-timeline",
      "image": "https://example.com/images/howto/step-2-budget-timeline.png",
      "text": "Ask for budget range and target go live window. Record both fields in the CRM so marketing and sales see the same data."
    },
    {
      "@type": "HowToStep",
      "name": "Confirm decision group",
      "url": "https://example.com/guides/qualify-enterprise-leads#step-3-decision-group",
      "image": "https://example.com/images/howto/step-3-decision-group.png",
      "text": "Identify the executive sponsor and the security and procurement contacts. Add all to the account as stakeholders."
    },
    {
      "@type": "HowToStep",
      "name": "Score need and urgency",
      "url": "https://example.com/guides/qualify-enterprise-leads#step-4-need-urgency",
      "image": "https://example.com/images/howto/step-4-need-urgency.png",
      "text": "Use your standard scoring model to rate the pain and urgency. If the score meets your threshold, convert the lead to an opportunity."
    },
    {
      "@type": "HowToStep",
      "name": "Hand off with notes",
      "url": "https://example.com/guides/qualify-enterprise-leads#step-5-handoff",
      "image": "https://example.com/images/howto/step-5-handoff.png",
      "text": "Attach the discovery call recording, transcript, and a short summary. Notify the AE and set the next meeting date."
    }
  ]
}

What each part does, in plain English

  • mainEntityOfPage connects the HowTo object to the page’s canonical URL.
  • name and description summarize the task and why it matters.
  • image can be a cover or per-step images. Aim for at least 1200 px width.
  • totalTime and estimatedCost show effort and budget. Use ISO durations like ISO 8601 duration format (for example, PT45M).
  • supply and tool tell people what they need on hand.
  • step is an array of HowToStep items, each with a name, anchor URL, image, and text that matches the visible step.

Minimal version if I am just testing

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to reset your client portal password",
  "mainEntityOfPage": "https://example.com/help/reset-client-portal-password",
  "step": [
    { "@type": "HowToStep", "name": "Open reset page", "text": "Go to the reset page and enter your email." },
    { "@type": "HowToStep", "name": "Check your inbox", "text": "Open the reset email and click the link." },
    { "@type": "HowToStep", "name": "Set a new password", "text": "Choose a new password and save." }
  ]
}

Both examples validate as schema. They are not eligible for Google HowTo rich results anymore, and that is fine.

HowTo schema step-by-step markup

Treat this like a small content-and-data project: aim for clarity, parity, and repeatability.

  1. Inventory the right pages. Pick SOPs, onboarding flows, or post-sale guides people already use. Outline the steps on the page first.
  2. Add the required properties. Draft a HowTo object with name, description, and step objects. Keep it tight.
  3. Align the on-page content. Add h3-style headings for each step and fragment IDs like id="step-1-icp-fit".
  4. Paste the JSON-LD. Head or body is fine. One HowTo per page keeps things simple.
  5. QA for parity. Read each step on the page and compare to the JSON-LD. Text and anchors should match.
  6. Deploy with care. Ship to staging, validate, then move to production after sign-off.
  7. Monitor. Watch crawl stats and engagement; then scale the pattern to more guides.

Governance that sticks

  • Assign an owner - content lead or SEO manager - for HowTo schema.
  • Add a quarterly review to refresh time, cost, tools, or screenshots.
  • Keep a small register of pages using HowTo so duplicates are easy to spot.

Validate HowTo schema with testing tools

Validation shortens QA and prevents subtle errors.

Stakeholder note

Google’s current HowTo guidance reflects the deprecation. Point reviewers to the official page so no one expects the visuals to return unless policy changes: HowTo structured data.

WordPress HowTo schema implementation

Plugin path

  • Yoast: The How-to block lets you enter the task name, steps, and images; it prints JSON-LD.
  • Rank Math: Schema Generator includes a HowTo type with steps, time, cost, tools, and supplies.
  • Schema Pro: A HowTo template you can map to custom fields across post types.

Caution: Do not run multiple schema plugins at once. Duplicate HowTo objects are common. Also check if the theme injects schema and disable overlaps in plugin settings.

Manual path

  • Create custom fields (for example, with ACF) for steps, images, tools, and supplies.
  • In the theme, enqueue a function in wp_head that builds JSON-LD from those fields.
  • For specific templates - for example, Guides - add overrides if you need different images or time formats.
  • If using a SPA framework, ensure the server renders the JSON-LD so bots see it without executing client JS.

Pre-launch checks

  • View source and confirm only one HowTo object exists.
  • Validate on staging and again on production.
  • Clear caches and confirm CDN or server caching does not strip script tags.

HowTo schema best practices

Make each page about a single task. Break the task into 2 to 8 steps with short, action-led names. Use unique images - 1200 px wide or more when possible - not the same stock photo everywhere. Give each step a working anchor. Keep time and cost units consistent across the site.

A few more tips that matter

  • Add mainEntityOfPage so engines tie the object to the exact page.
  • Avoid hidden or filler steps like "Contact us" unless they are part of the process.
  • Keep supply and tool realistic; if a tool is optional, say so.
  • When the process changes, update the page and the markup the same day.

Measurement leaders care about

  • Track impressions and CTR for how to queries and verbs like configure, install, set up.
  • Measure clicks on step anchors and scroll depth to see if users follow the guide.
  • Tie conversions to tutorial completion with events or a small post-tutorial CTA.
  • Annotate deployment dates in analytics so engagement changes line up with schema rollouts.

HowTo schema troubleshooting

Most problems come down to mismatches, duplicates, or rendering quirks.

Common issues

  • Missing or mismatched steps: If step names or text do not match, fix the page first, then the JSON-LD.
  • Malformed arrays: step must be an array of objects; one stray comma can break the block.
  • Duplicate or overlapping markup: If two plugins inject HowTo, disable one. Check view source, not just the inspector.
  • SPA content not rendered: Server-render or hydrate early so crawlers see the script.
  • Invalid image URLs: Use absolute URLs and ensure robots or auth are not blocking the files.
  • Inconsistent currencies or time formats: Use ISO 8601 for totalTime and specify currency in estimatedCost.
  • Wrong type: Do not mark Q&A content as HowTo. Use FAQPage for Q&A; use Recipe for recipes.

Edge cases I see

  • Multi-language pages: Use hreflang across versions and include localized HowTo markup with local anchors and text.
  • Pagination: Prefer a single canonical guide. If you must split, clearly label parts; most teams do better with one long page.
  • Video-only tutorials: You can still use HowTo with a VideoObject under video. List the spoken steps on the page so the markup mirrors visible text.

A simple decision helper

  • Is it a sequence of actions that completes one task? Use HowTo.
  • Is it questions and answers? Use FAQPage.
  • Is it a recipe? Use Recipe.
  • Is it a product install guide with specs and parts? You can use HowTo with Product on the same page if both are visible and distinct.

Treat HowTo markup as a lightweight content upgrade, not a magic traffic switch. You will ship faster, reduce confusion for search engines, and help users who want clear steps that match what they see. Then roll the pattern across your highest-value SOPs and guides - with confidence and calmer review meetings.

Quickly summarize and get insighs with: 
Andrew Daniv, Andrii Daniv
Andrii Daniv
Andrii Daniv is the founder and owner of Etavrian, a performance-driven agency specializing in PPC and SEO services for B2B and e‑commerce businesses.
Quickly summarize and get insighs with: 
Table of contents