JoomFAQs includes a suite of built-in SEO features designed to help your FAQ content rank well in search engines and display attractively when shared on social media. This guide walks you through every SEO option available in the component, from Schema.org structured data to Open Graph and Twitter Card meta tags.
All global SEO settings are found in the Joomla administrator under Components > JoomFAQs > Configuration > SEO tab.
Table of Contents
- FAQ Schema Markup (Schema.org)
- Enabling and Disabling Schema Markup
- Open Graph Tags
- Twitter Cards
- Per-Question Meta Fields
- SEF URLs and Routing
- Global SEO Configuration Reference
- Testing Your Schema Markup
- Best Practices for FAQ SEO
- Related Guides
1. FAQ Schema Markup (Schema.org)
What Is It?
FAQ Schema markup is a form of structured data that uses the Schema.org FAQPage vocabulary. When you add this markup to your FAQ pages, you are giving search engines a machine-readable description of your questions and answers.
Why It Matters
Google and other search engines use FAQPage structured data to generate rich results -- expanded listings in search results that display your questions and answers directly on the results page. This can significantly increase your click-through rate and visibility.
A typical rich result shows your FAQ questions as expandable dropdowns right within the Google search listing, allowing users to read answers without even visiting your site. While this might sound counterproductive, it actually increases trust and drives more qualified traffic.
How JoomFAQs Generates Schema Markup
JoomFAQs automatically outputs FAQPage schema as JSON-LD in the <head> section of your pages. The component handles two scenarios:
Category pages -- All published questions with answers in the category are included as a single FAQPage schema block. This is the most common and effective use, since Google expects multiple Q&A pairs on a FAQPage.
Single question pages -- The individual question and its answer are output as a FAQPage schema with one Q&A entry.
Example: Category Page Schema Output
When a visitor loads a category page containing three questions, JoomFAQs injects the following into the page <head>:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How do I reset my password?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Navigate to Settings, click Security, then choose Reset Password. You will receive a confirmation email."
}
},
{
"@type": "Question",
"name": "What payment methods do you accept?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We accept Visa, MasterCard, PayPal, and bank transfers."
}
},
{
"@type": "Question",
"name": "How long does shipping take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Standard shipping takes 3-5 business days. Express shipping is available for 1-2 business day delivery."
}
}
]
}
</script>
Example: Single Question Page Schema Output
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How do I reset my password?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Navigate to Settings, click Security, then choose Reset Password. You will receive a confirmation email."
}
}
]
}
</script>
Note that HTML tags are automatically stripped from answer text before it is placed in the schema. The component also skips any questions that have an empty answer, so unpublished or pending answers will not produce invalid schema.
2. Enabling and Disabling Schema Markup
FAQ Schema is enabled by default when you install JoomFAQs.
To toggle it:
- Go to Components > JoomFAQs > Configuration (or click the gear icon on the JoomFAQs dashboard).
- Click the SEO tab.
- Find the Enable FAQ Schema option.
- Set it to Yes (enabled) or No (disabled).
- Click Save.
When disabled, no application/ld+json script block will be added to any JoomFAQs pages.
3. Open Graph Tags
What They Do
Open Graph (OG) meta tags control how your FAQ pages appear when shared on Facebook, LinkedIn, WhatsApp, Slack, and other platforms that support the Open Graph protocol. They determine the title, description, image, and URL that appear in the share preview card.
What JoomFAQs Generates
When Open Graph is enabled, JoomFAQs adds the following meta tags to the <head> of your pages:
For category pages:
<meta property="og:type" content="website" />
<meta property="og:url" content="https://example.com/faq/general" />
<meta property="og:title" content="General FAQ - My Site" />
<meta property="og:description" content="Find answers to frequently asked questions about..." />
<meta property="og:site_name" content="My Site" />
<meta property="og:image" content="https://example.com/images/category-image.jpg" />
<meta property="og:locale" content="en-GB" />
<meta property="fb:app_id" content="123456789" />
For single question pages:
<meta property="og:type" content="article" />
<meta property="og:url" content="https://example.com/faq/general/how-do-i-reset-my-password" />
<meta property="og:title" content="How do I reset my password? - My Site" />
<meta property="og:description" content="How do I reset my password? - Navigate to Settings, click Security..." />
<meta property="og:site_name" content="My Site" />
<meta property="og:image" content="https://example.com/images/logo.png" />
<meta property="og:locale" content="en-GB" />
Notice that category pages use og:type of website, while individual question pages use article.
How Descriptions Are Determined
The component follows a fallback chain for Open Graph descriptions:
- Category pages: Page meta description (if set) -> category meta description -> first 200 characters of the category description (HTML stripped).
- Question pages: Page meta description (if set) -> question's meta description field -> the question text combined with the first 100 characters of the answer text.
How Images Are Determined
The component looks for images in this order:
- The category image or question image (if one is associated).
- The site template logo (from your active template's parameters).
- If neither is found, the
og:imagetag is omitted.
Enabling Open Graph
- Go to Components > JoomFAQs > Configuration > SEO tab.
- Set Enable Open Graph to Yes.
- Optionally enter your Facebook App ID (this is used for Facebook Insights analytics -- it is not required for sharing to work).
- Click Save.
4. Twitter Cards
What They Do
Twitter Card meta tags control how your FAQ pages appear when links are shared on X (formerly Twitter). JoomFAQs uses the summary_large_image card type, which shows a large featured image alongside the title and description.
What JoomFAQs Generates
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="How do I reset my password? - My Site" />
<meta name="twitter:description" content="How do I reset my password? - Navigate to Settings..." />
<meta name="twitter:image" content="https://example.com/images/logo.png" />
<meta name="twitter:site" content="@yourcompany" />
<meta name="twitter:creator" content="@authorname" />
Configuration Options
- Go to Components > JoomFAQs > Configuration > SEO tab.
- Set Enable Twitter Card to Yes.
- Fill in the optional fields that appear:
- Twitter Site -- Your organization's X/Twitter handle (e.g.,
@yourcompany). This identifies the website's account. - Twitter Creator -- The content creator's X/Twitter handle (e.g.,
@authorname). This identifies the individual author.
- Twitter Site -- Your organization's X/Twitter handle (e.g.,
- Click Save.
Both the Twitter Site and Twitter Creator fields are optional. If left empty, those particular meta tags will simply be omitted. The title, description, and image tags will still be generated.
The description and image fallback logic is the same as described in the Open Graph section above.
5. Per-Question Meta Fields
Each individual FAQ question has its own SEO fields that you can fill in when editing the question in the Joomla administrator.
Accessing the Meta Fields
- Go to Components > JoomFAQs > Questions.
- Click on a question to edit it.
- Click the Meta data tab (labeled "seo" in the edit form).
Available Fields
| Field | Description | Recommendation |
|---|---|---|
| Meta Description | A short summary of the question and answer, used by search engines in their results pages and as a fallback for Open Graph/Twitter descriptions. | Write a clear, concise description of 120-160 characters that naturally includes relevant keywords. |
| Meta Keywords | A comma-separated list of keywords relevant to this question. | While most modern search engines no longer use meta keywords for ranking, some specialized search tools may still reference them. Keep the list short and relevant. |
How These Fields Are Used
- Page
<meta>tags: When a visitor loads a single question page, the meta description is set as the page's<meta name="description">tag, and the meta keywords are set as<meta name="keywords">. - Open Graph fallback: If the question's meta description is set, it is used as the
og:descriptionvalue on the single question page. - Twitter Card fallback: Similarly, it is used as the
twitter:descriptionvalue. - Schema markup: The schema answer text is always derived from the answer content itself (HTML stripped), not from the meta description.
Question Alias (URL Slug)
In addition to the meta fields, each question has an Alias field. This controls the URL slug used in SEF URLs. For example, a question with the alias how-to-reset-password would produce a URL like:
https://example.com/faq/general/how-to-reset-password
If you leave the Alias field blank, JoomFAQs will use the question ID instead.
6. SEF URLs and Routing
How JoomFAQs Handles URLs
JoomFAQs uses Joomla's RouterView system to generate clean, search-engine-friendly URLs. The router supports nested categories, so your URL structure reflects your FAQ hierarchy.
URL Structure
By default, JoomFAQs removes numeric IDs from URLs and uses aliases instead. Here is how URLs are structured:
| View | URL Pattern | Example |
|---|---|---|
| Category | /menu-alias/category-alias |
/faq/billing |
| Nested subcategory | /menu-alias/parent-alias/child-alias |
/faq/billing/refunds |
| Single question | /menu-alias/category-alias/question-alias |
/faq/billing/how-do-i-get-a-refund |
Router Rules
The JoomFAQs router applies rules in the following order:
- Form Rules -- Custom routing rules specific to JoomFAQs.
- Menu Rules -- Matches URLs to menu items.
- Standard Rules -- Joomla's default routing logic.
- No-menu Rules -- Fallback routing when no menu item is assigned.
Tips for Clean URLs
- Always create a menu item for your top-level FAQ category. This gives the router a "root" to build clean URLs from. Without a menu item, Joomla falls back to less attractive URL patterns.
- Set meaningful aliases for both categories and questions. If you leave the alias blank on a question, the question ID will be used.
- Make sure Joomla's SEF URLs are enabled in System > Global Configuration > SEO Settings. Enable both "Search Engine Friendly URLs" and "Use URL Rewriting" for the cleanest results.
7. Global SEO Configuration Reference
All settings below are found under Components > JoomFAQs > Configuration > SEO tab.
| Setting | Type | Default | Description |
|---|---|---|---|
| Enable FAQ Schema | Yes/No | Yes | Outputs Schema.org FAQPage structured data (JSON-LD) in the page <head>. This is used by Google to generate rich results. |
| Enable Twitter Card | Yes/No | Yes | Outputs Twitter Card meta tags (twitter:card, twitter:title, twitter:description, twitter:image). Uses the summary_large_image card type. |
| Twitter Site | Text | (empty) | Your organization's X/Twitter handle (e.g., @yourcompany). Only shown when Twitter Card is enabled. |
| Twitter Creator | Text | (empty) | The content creator's X/Twitter handle (e.g., @authorname). Only shown when Twitter Card is enabled. |
| Enable Open Graph | Yes/No | Yes | Outputs Open Graph meta tags (og:type, og:title, og:description, og:image, etc.) for rich previews on Facebook, LinkedIn, and other platforms. |
| Facebook App ID | Text | (empty) | Your Facebook App ID for Facebook Insights analytics integration. Optional. Only shown when Open Graph is enabled. |
8. Testing Your Schema Markup
After enabling FAQ Schema, you should validate that the markup is correct and eligible for rich results.
Step 1: Check the Page Source
- Visit one of your FAQ category pages on the frontend.
- View the page source (right-click > "View Page Source" in most browsers).
- Search for
application/ld+jsonin the source. - Verify that you see a JSON block with
"@type": "FAQPage"and your questions listed under"mainEntity".
Step 2: Use Google's Rich Results Test
- Go to https://search.google.com/test/rich-results.
- Enter the URL of your FAQ category page.
- Click Test URL.
- Google will analyze the page and report whether it detects valid FAQ structured data.
- If valid, you will see a green checkmark next to "FAQ" with a preview of how it might appear in search results.
Step 3: Use Schema Markup Validator
For a more detailed technical validation:
- Go to https://validator.schema.org/.
- Paste the URL of your FAQ page.
- The tool will parse all structured data on the page and highlight any errors or warnings.
Step 4: Monitor in Google Search Console
After your pages are indexed:
- Log in to Google Search Console.
- Navigate to Enhancements > FAQs (this section appears once Google detects FAQ markup on your site).
- Review any errors or warnings that Google has identified.
- Monitor impressions and clicks for pages with FAQ rich results under Performance > Search results (filter by "Search appearance: FAQ rich results").
Common Issues
- No rich results showing: Google does not guarantee rich results even with valid markup. It depends on the page quality, search query, and Google's own algorithms. Ensure your content is high-quality and your site has good overall SEO health.
- Empty answers: Questions without answers are automatically excluded from the schema output. Make sure all published questions have answers.
- Duplicate FAQPage markup: If another extension or template also outputs FAQPage schema, you may have duplicate structured data. Disable FAQ Schema in JoomFAQs or in the other source to avoid conflicts.
9. Best Practices for FAQ SEO
Write Clear, Specific Questions
Use the exact phrasing your users would type into a search engine. "How do I cancel my subscription?" is better than "Cancellation" or "About cancellations."
Provide Complete Answers
Google prefers answers that fully address the question. Avoid one-word or overly brief answers. Aim for at least 2-3 sentences per answer.
Use One Question Per FAQ Item
Do not combine multiple questions into a single FAQ entry. Each entry should address exactly one question with one answer.
Fill In Meta Descriptions
For your most important questions, write a custom meta description that summarizes the Q&A pair. This gives you control over what appears in search results and social media previews, rather than relying on auto-generated text.
Set Meaningful Aliases
Choose short, descriptive URL slugs for your questions. For example, reset-password is better than leaving the alias blank and getting a numeric ID in the URL.
Create Category Menu Items
Always create at least one menu item pointing to your top-level FAQ category. This is essential for clean URL generation and helps search engines understand your site structure.
Keep Categories Organized
Use a logical hierarchy of categories and subcategories. This not only helps users navigate your FAQs but also produces clean, hierarchical URLs that search engines can follow.
Add Category Images
Adding an image to your FAQ categories provides a fallback for Open Graph and Twitter Card image tags, making your shared links more visually appealing on social media.
Do Not Duplicate Content
Avoid having the same question appear in multiple categories. Duplicate content can confuse search engines and dilute your ranking potential.
Monitor and Iterate
Use Google Search Console to monitor which FAQ pages are generating rich results and how they are performing. Update questions and answers based on what users are actually searching for.