On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.

text

text · Required by Google

Appears in

What is it?

text holds the full body content of a Question or Answer within QAPage markup. For a Question, it contains the complete text of what is being asked. For an Answer, it contains the full response. Google requires this field on both the Question and every Answer to qualify for the QAPage rich result in search.

Why this matters for AEO

When a user asks a question that matches a QAPage entity, an AI answer engine pulls the text field from the top-voted or accepted Answer to construct a direct response. The Question's text field helps the engine confirm the match between the user's query and the indexed question. Pages without text markup force the engine to extract answers from unstructured HTML, reducing accuracy and the chance of being cited.

What the specs say

Schema.org: Text. The textual content of this CreativeWork. schema.org/text

Google: Required. "The full text of the long form of the question. For example, 'I'm cooking, and I need to know how many teaspoons are in a cup. How many teaspoons are in 1 cup?' If only a portion is marked up, your content may not be shown and Google cannot determine the best text to display." Google QAPage documentation

How to find your value

  • Question text — The full question body on the page, including context and detail
  • Answer text — The complete answer body, including explanations and steps

The text field must contain the full content as displayed on the page. Truncating the text or marking up only a summary causes Google to reject the rich result. For the Question, text is the expanded version while name is the short-form title.

Format and code

Type: Text (plain string)

Full QAPage with text on both Question and Answer:

{
  "@context": "https://schema.org",
  "@type": "QAPage",
  "mainEntity": {
    "@type": "Question",
    "name": "How many ounces are there in a pound?",
    "text": "I have taken up a new interest in baking and keep running across directions in ounces and pounds. I have to translate between them and was wondering how many ounces are in a pound.",
    "answerCount": 3,
    "upvoteCount": 26,
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "1 pound (lb) is equal to 16 ounces (oz).",
      "upvoteCount": 42
    }
  }
}

Key rules:

  • Full text required — Do not truncate or summarize
  • HTML allowed — Plain text preferred, but HTML entities are accepted
  • Must match page content — The text value must reflect what users see on the page
  • Both Q and A need text — Required on the Question and on every Answer

Webflow implementation

Static pages

Add the full QAPage JSON-LD in Page Settings > Custom Code > Footer Code:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "QAPage",
  "mainEntity": {
    "@type": "Question",
    "name": "How many teaspoons are in a cup?",
    "text": "I'm cooking, and I need to know how many teaspoons are in a cup. How many teaspoons are in 1 cup?",
    "answerCount": 1,
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "There are 48 teaspoons in 1 cup. One cup equals 16 tablespoons, and each tablespoon equals 3 teaspoons."
    }
  }
}
</script>

CMS template pages

For a Q&A collection, create Rich Text or Plain Text fields for both the question body (question-text) and answer body (answer-text):

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "QAPage",
  "mainEntity": {
    "@type": "Question",
    "name": "{{wf {"path":"name","type":"PlainText"} }}",
    "text": "{{wf {"path":"question-text","type":"PlainText"} }}",
    "answerCount": 1,
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "{{wf {"path":"answer-text","type":"PlainText"} }}"
    }
  }
}
</script>

Use PlainText output mode even for Rich Text fields to avoid HTML tags leaking into the JSON-LD string.

In Schema HQ

Your CMS question and answer fields to the correct text properties inside the QAPage structure. It handles text escaping and validates that the full content is included, flagging any truncation issues before publishing. is mapped automatically

Real examples

Google Search Central (source):

{
  "@context": "https://schema.org",
  "@type": "QAPage",
  "mainEntity": {
    "@type": "Question",
    "name": "How many ounces are there in a pound?",
    "text": "I have taken up a new interest in baking and keep running across directions in ounces and pounds. I have to translate between them and was wondering how many ounces are in a pound.",
    "answerCount": 3,
    "upvoteCount": 26,
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "1 pound (lb) is equal to 16 ounces (oz).",
      "upvoteCount": 42
    }
  }
}

SchemaPilot (source):

{
  "@context": "https://schema.org",
  "@type": "QAPage",
  "mainEntity": {
    "@type": "Question",
    "name": "What is the best way to learn Python?",
    "text": "I am a complete beginner trying to learn Python for data science. What is the best approach?",
    "answerCount": 5,
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Start with free resources like Python.org tutorials and Codecademy. Focus on fundamentals before jumping into libraries like pandas or numpy."
    }
  }
}

Related fields

  • answerCount — total number of answers the question has received
  • name — short-form title of the question
  • description — summary of the page content
  • mainEntity — connects the QAPage to its Question

FAQ

What is the difference between name and text on a Question?

name is the short-form title of the question, similar to a headline. text is the full body, including context and elaboration. Google uses name for the display title in rich results and text for matching and snippet generation. Both are required.

Can text contain HTML markup?

Google accepts plain text and will strip HTML for display purposes. Use plain text when possible. If the answer includes code snippets or lists, plain text with line breaks is safer than HTML tags, which may render incorrectly in rich results.

Must text match the visible page content exactly?

The content must reflect what appears on the page. Minor formatting differences (whitespace, line breaks) are acceptable, but the substance must match. Google may apply manual penalties for structured data that misrepresents page content.

On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.

Need help with schema on your site?

We implement structured data for Webflow sites — from audit to deployment.

Work with us

Work with us