ErpLite · Search engine optimization · Website visibility
From a site Google cannot read to one it ranks — set it up once, then work the weekly loop
The SEO module makes every CMS website legible to search engines and then tells you, in plain terms, what is holding each page back. It writes the page title, description, social preview and structured data into the page for you; publishes sitemaps and robots.txt; catches broken links, missing pages and redirect loops; scores every page against twenty checks in both languages; and — when you connect Search Console — tracks what you actually rank for over time. This manual walks the whole thing in the order you really work it: set up once, then repeat a short weekly loop. Everything that needs an external Google account is optional and clearly marked.
Set up a website
One-time per website. Everything you set here becomes the fallback for every page that does not override it.
Fill in the website SEO settingsإعدادات السيو
MarketerSEO › Website SEO Settings/admin/seo-settings
1) Set the title template — for example “%page% | Adala Law Firm”. Every page title is built from it unless the page overrides it.
2) Write a default meta description and pick a default social image, for pages that have none of their own.
3) Paste your site-verification code if you have one.
4) Fill in the organization details (name, logo, social profiles) — these become the structured data every page carries.
5) Write your robots.txt rules for this site.
Each website gets its own robots block, scoped to its own address — so one site’s “block everything” can never take down its neighbours. The settings apply immediately: the page cache is cleared for you, so there is nothing to republish.
Settings are per website. A multi-site install fills this in once for each site, not once overall.
Where a page’s title actually comes from
The module tries four sources in order and uses the first that has a value:
- ✓What you typed on that page’s SEO screen.
- ✓The older SEO fields on the page itself, if it has any.
- ✓The website title template from the screen above.
- ◐Generated from the page’s own content, as a last resort.
This is why a page can already look fine before you touch it — and why filling the website defaults first saves you writing the same thing on every page.
Sitemaps & robots
Both are published automatically. You only decide what to leave out.
Check your sitemap is live
AutomaticYour public website/{site}/sitemap.xml · /robots.txt
A sitemap index is published for every active website, listing pages, blog posts, categories, tags, images and videos. It rebuilds itself whenever you publish, and splits into numbered files automatically on very large sites. robots.txt is generated from your settings and points at the sitemap.
Nothing, normally. To keep a page out of the sitemap, open its SEO screen and switch off “In sitemap” — or select several pages on the Page SEO list and use the bulk action.
“In sitemap” and “Indexable” are two different switches
They are often confused, and they do different jobs:
In sitemapA suggestion
Removing a page only stops you advertising it. Google can still find and index it through a link.
IndexableAn instruction
Switching this off tells search engines not to show the page at all. This is the one you want for a thank-you or internal page.
Use the Indexation Coverage report to see, per website, how many pages sit in each state.
Write the page SEO
This is the work that actually moves rankings. Everything before it was preparation; everything after it is checking.
Open a page and write its SEOسيو الصفحات
MarketerSEO › Page SEO › (pick a page)/admin/seo-pages
1) Write the meta title and description — in BOTH languages. The live preview shows exactly how the result will look in Google, and warns you before the text is too wide to fit.
2) Set the focus keyword for each language: the one phrase this page should win.
3) Choose the social sharing image if this page deserves its own.
4) Leave “Indexable” and “In sitemap” on unless you have a reason not to.
The moment you save, the page’s <head> is rewritten and the cached copy cleared — the change is live. Arabic and English each get their own address advertised to Google, each pointing at itself, so neither language competes with the other.
Blog categories, tags and the blog index have their own SEO screens too — reach them from the tabs on the Page SEO list.
Write for both languages, always
Every score, keyword and description in this module is per page AND per language.
- ✓An English description does not help your Arabic page — it is a different result in a different search.
- ✓The page score is calculated twice, once per language. A page can be strong in one and weak in the other.
- ◐If you only have time for one, do the language your customers actually search in.
Score and fix a page
Twenty checks, a score out of 100, and a plain-language reason for every one you fail.
Analyze the page you are editing
MarketerSEO › Page SEO › (a page) › Analyze/admin/seo-pages
Press Analyze. Read the failing checks from the top — they are ordered by how much each is costing you. Fix, save, analyze again and watch the number move.
It renders the page exactly as a visitor sees it and checks twenty things: title and description length by real rendered width (not character count), your focus keyword in the title, description, opening paragraph, a heading and the address, keyword density, headings structure, paragraph length, image alt text, internal and outbound links, word count, readability, and whether the page contradicts itself by being hidden from search while also claiming to be the original.
Readability is judged differently in Arabic — Arabic runs shorter per sentence at the same level of clarity, so the module does not apply an English yardstick to it.
Work the whole site from the audit listفحص الموقع
MarketerSEO › Site Audit/admin/seo-audit
Sort by the English or Arabic score column and start at the bottom. Each row links straight into that page’s SEO screen, and can be re-scored in place without leaving the list.
A scheduled job re-scores every published page weekly, so the list stays current without anyone pressing anything.
Structured data
The machine-readable summary that earns you stars, prices and FAQ dropdowns in the results.
Let the page describe itself
AutomaticSEO › Page SEO › (a page)/admin/seo-pages
It reads the blocks you already built the page from and writes the matching structured data: an FAQ block becomes a question-and-answer summary, a pricing block becomes offers, testimonials become reviews, a team block becomes people, a course list becomes courses, a video becomes a video entry, and contact details become a business listing with its address. You built the page; the description of it is free.
Open the “Structured data on this page” panel in the SEO editor to see exactly what the page emits, and whether any block has a problem. A red finding means search engines will ignore that block entirely; an amber one means the result will show but less richly.
Add a template for anything extraقوالب البيانات المنظّمة
MarketerSEO › Schema Templates/admin/seo-schema-templates
Build a template with the visual editor — no code — and either attach it to specific pages or apply it site-wide. Useful for a legal service, a job posting, a rental listing or an organization profile that the page blocks do not already cover.
Find what is broken
A crawl walks your published site the way a search engine would, and reports what it could not reach.
Run a crawl and work the findingsزحف الموقع
MarketerSEO › Site Crawl/admin/seo-crawl
Press Crawl now, then work down the findings — errors first. A broken link offers an “Add redirect” button that takes you straight to the fix with the dead address already filled in. Mark each one resolved as you go.
It finds broken internal links, pages nothing links to, pages buried too many clicks from the home page, duplicate titles and descriptions, images with no alt text, and insecure resources. It runs weekly on its own. Anything you fix simply disappears from the list at the next crawl — you do not have to tidy up after yourself.
See which pages nothing links toالروابط الداخلية
MarketerSEO › Internal Links/admin/seo-links
Open the Orphans tab. Every page listed there is invisible to search engines following links — add a link to it from a page that already ranks, usually the most relevant hub page.
It counts how many pages link to each one and how many clicks it sits from your home page. Anything past four clicks is hard for search engines to reach; ∞ means they cannot reach it by following links at all.
Redirects & 404s
Every address you ever published should still lead somewhere.
Clear the 404 listمراقبة 404
MarketerSEO › 404 Monitor/admin/seo-not-found
Sort by hits and start at the top — the most-visited dead address is costing you the most. Press “Create redirect” on a row to send it to the right page. Dismiss the ones that are just bots probing for things you never had.
It records every missing address a visitor asks for, counts the hits and remembers when it first and last happened. When you rename a published page it creates the redirect for you automatically, so an address you already advertised never simply dies.
Dismissed rows are kept rather than deleted, so the same bot noise does not reappear tomorrow as if it were new.
A redirect cannot point at the admin area
The module refuses two things on purpose, and will show you an error rather than accept them:
- ✗A rule whose source is an app address such as /admin or /portal — it would lock you out of your own dashboard.
- ✗A destination on a website you do not control, unless it has been explicitly allowed — otherwise your address could be used to send visitors somewhere hostile.
This applies to spreadsheet imports too, not just the form.
Keywords & rankings
Optional — needs a Google Search Console account connected. Without it, everything above still works.
Connect Search Console
Needs a Google accountSettings › Integrations › Search Console/admin/settings/integrations
Either sign in with Google — the quicker route, and it lets you pick your site from a real list — or paste a service-account key if your IT team prefers a credential that never expires and belongs to no individual.
It submits your sitemaps for you, and from then on records what you rank for every day.
Track the terms you care aboutالكلمات المفتاحية
MarketerSEO › Keywords/admin/seo-keywords
Add the terms your customers actually type, one row each, and name the page that should win each one. Then check the Winners and Losers tabs weekly — that is the whole routine.
It records your position every day and draws it as a small trend line, where a rising line means you are climbing. It also flags cannibalisation — when several of your own pages compete for the same term, or when the page ranking is not the one you nominated.
Google reports about two days behind, and only for terms your site actually appeared for — a brand-new keyword showing nothing is normal, not a fault.
If you run more than one website
One Search Console account covers every website in your install, so the headline numbers are the total for all of them together. The stored trend can be narrowed:
- ✓On the Search Performance screen, the trend chart has a scope selector — “All websites” for the account total, or a single website for its own share.
- ✓A single website’s numbers are worked out by matching each address Google reports to the website that owns that part of the address.
A single website’s totals are a floor, not an exact figure: they are added up from the busiest addresses Google returns each day, so a large site with a long tail will show a little less than it truly earned. The screen tells you when that is the case. For an exact total, use “All websites”.
Reports & bulk edits
What to show a manager, and how to change fifty pages without opening fifty screens.
Pull the reportsتقارير السيو
MarketerSEO › SEO Reports/admin/seo-reports
Pick a report, set the date range, and export to Excel or PDF. Score Trend answers “are we improving?”; Score Distribution answers “how much of the site is weak?”; Indexation Coverage answers “what can actually appear in search?”; 404 Trends answers “what broke this month?”.
Score history is recorded by the weekly audit, so the trend starts filling in from the first time it runs — a short line early on means “we just started measuring”, not “the site collapsed”. Each screen tells you the date measurement began.
Change many pages at onceبحث واستبدال
MarketerSEO › Page SEO › Find & Replace/admin/seo-pages/find-replace
Type what to find and what to replace it with, choose which fields to touch, and press Preview. Read the before-and-after list carefully — then, and only then, apply. Use it for a rebrand, a changed tagline, or a typo repeated across the site.
Nothing is written until you confirm. The preview shows every field that would change and warns you when a replacement would make a title too wide to display in full.
There is no undo. The preview is not a formality — read it.
Let the assistant draft it (optional)
If an AI provider is connected in Integrations, the SEO editor can draft for you:
- ✓A meta title and description in either language, already inside the length Google will show.
- ✓Question-and-answer pairs taken from what the page actually says.
- ✓A short brief on what the page is missing for its keyword, and concrete fixes for the checks it fails.
- ✓Alt text for pictures that have none — a short description of what the image shows, for visitors using a screen reader. Listed one image at a time so you can see which picture each line describes before you accept it.
Nothing the assistant writes reaches your page until you accept it — every suggestion waits for your review, and you can reject it. Alt text is the one item that needs a provider able to READ images: the assistant looks at the picture itself, because describing a photo it has never seen would be guesswork, and that text is read aloud to someone who cannot check it. If your provider cannot read images the panel says so instead of offering the button.
Page speed (Core Web Vitals)
Optional — needs a PageSpeed Insights key. Measures how your pages felt to real visitors, not to a test machine.
Connect PageSpeed Insights
Needs a Google accountSettings › Integrations › Page Speed/admin/settings/integrations
Paste a PageSpeed Insights API key from a Google Cloud project. The key only counts how many measurements you make — it gives Google no access to your site or your data, so it is not an account login.
A Web Vitals screen under SEO, and a nightly job that measures a batch of your pages.
Without this key nothing else changes — every other part of the module keeps working exactly as before.
Read the three numbersمؤشرات الويب
MarketerSEO › Core Web Vitals/admin/seo-vitals
LCP — how long until the main thing on the page appears.
INP — how quickly the page answers the first tap or click.
CLS — how much the page jumps about while it loads.
Each one is rated Good, Needs improvement, or Poor. A page is judged by its WORST number, because that is how Google judges it: one bad measure is enough to fail a page, however good the other two are.
Work the list from the top — it is sorted worst first. Switch between Mobile and Desktop; they are measured separately because they rarely perform the same, and Mobile is the one Google indexes with.
These come from your actual visitors using Chrome over the last month — not from a simulated test. That is what makes them worth acting on, and also why a quiet page may have none.
“Not enough data” is an answer, not a failure
Two things about this screen surprise people, and both are working as intended:
- ✓A page with few visitors shows “Not enough data” and dashes instead of numbers. Google will not report on a page too few people have opened. That is not a slow page and not a broken measurement — it is an unmeasured one, and we would rather say so than print a zero you might read as perfect.
- ✓Not every page is measured at once. Each measurement makes Google load the page for real, which takes time and counts against a daily allowance, so the nightly job takes a batch — pages never measured first, then the ones that were doing badly, then the oldest. Coverage builds up over a few nights. The screen tells you how many are still waiting.
You can also measure one page immediately from its row when you want to check a fix — but remember the field numbers move slowly, because they are an average of the last month of real visits.
The weekly loop
Once setup is done, this is the whole job — about twenty minutes a week.
Which screen answers which question
| The question | The screen | How often |
|---|---|---|
| Which pages are weakest? | Site Audit | Weekly |
| What is broken or unreachable? | Site Crawl · Internal Links | Weekly |
| What are visitors failing to find? | 404 Monitor | Weekly |
| Are we climbing or slipping? | Keywords › Winners & Losers | Weekly |
| What do I show my manager? | SEO Reports | Monthly |
| Can search engines see everything? | Indexation Coverage | Monthly |
What runs without you
Scheduled jobs keep the module current whether or not anyone logs in:
- ✓Every published page is re-scored weekly, and the score history recorded.
- ✓Every site is crawled weekly for breakage.
- ✓Sitemaps are submitted weekly, and old 404 noise is pruned nightly.
- ◐If Search Console is connected, rankings and traffic are pulled every night.
You can trigger any of these by hand from the buttons on the matching screen — you never have to wait for the schedule.