An English academy with 40 locations had 18 URLs competing for “job interview in English” and had lost 76% of its clicks in a year (from 3,968 to 966). In three days it moved to a 6-piece architecture —5 content pages and one landing page—, with 26 planned 301 redirects (16 applied because they were already 404s), 1,243 posts audited, 27 internal links fixed and 0 broken links. Every piece was published with a quick answer, a visible FAQ and its own JSON-LD; the ranking recovery is measured at 30, 60 and 90 days.
| Client | English academy with 40 locations |
| Confidentiality | Client name and links are omitted under our confidentiality agreement. The images are diagrams or crops of sections with no branding. |
| Industry | Education · language schools |
| Service | SEO and GEO |
| Stack | WordPress, Elementor, Custom theme, Yoast SEO, Redirection, WP Rocket, ACF, JSON-LD, REST API, nginx |
| Duration | 3 days |
| Our role | Cluster audit in Search Console, content architecture, publication of the pieces, internal link audit across the whole blog, 301 redirects, structured data and verification. |
| Published | October 22, 2026 |
An English academy with 40 locations had 18 URLs fighting over the same query: “job interview in English”. In one year the cluster's clicks had dropped 76%, from 3,968 to 966, and the best-ranked page was getting less and less traffic even as it climbed the ranking. The problem was not writing more: it was deciding what stayed and what stopped competing.
The work was done in three days: six published pieces (five content pages and one commercial landing page), 16 live redirects, a link audit across the blog's 1,243 posts and a structured-data layer for every piece. Under our confidentiality agreement the academy is not named and its URLs are not linked; the screenshots show sections with no branding.
The problem: 18 URLs fighting over the same query
The diagnosis came from Search Console, not from a hunch: 76,600 impressions and 966 clicks in three months, with a 1.3% CTR and an average position of 13.5. The cluster did not have a content problem, it had an architecture problem.
The drop was not about position, it was about architecture
The pillar had improved from position 12 to 7.3 and yet its CTR fell from 3.3% to 1.5%. Rewriting the title no longer fixes that: 5,150 impressions in the cluster came from AI features, which answer inside the result and take the click. When the user does not come in, the only lever left is earning the citation or stopping the dilution across seven URLs.
Seven URLs for a single keyword
Seven different pages ranked for the main query. Each had its own version of the answer, its own internal links and its share of authority, and Google did not know which one to show. The “questions” page sat at position 44 while the pillar held 9.8 with a dedicated URL stuck at 67: money spent on two fronts.
Fifteen broken variants still collecting impressions
Besides the 18 live URLs, 15 misspelled slugs returned a 404 and were still accumulating impressions, several in positions 1 and 2 and cited by AI assistants. A 404 with impressions is traffic lost at the last door, and nobody sees it because it never shows up in the pages report.
The decision: 6 pieces and 26 redirects
The final architecture was designed before writing a single line: one piece per search intent, a pillar that absorbs, satellites that specialise and a landing page that converts. Everything else is redirected, not deleted.
One piece per intent
Five content pages remained: the pillar (guide and dialogue), the questions satellite, the preparation one, the PDF page and the one on adjectives in English. A course landing page that used to be a 404 was added, and a seventh piece was left out of the cluster, refocused on CVs without touching its URL because it already ranked for a different query.
What gets redirected and what does not
The map holds 26 permanent 301s: 18 to the pillar, 4 to questions, 3 to preparation and 1 to adjectives. Ten are live pages merged into another piece, 15 are broken variants and 1 is a legacy link with an .html extension. All permanent, none 302, no chains, and nothing deleted from the database for three months in case a rollback is needed.
The order matters more than the list
First the landing page, so it gets indexed before the commercial queries arrive. Then the rewritten pillar and three to seven days of crawling. Then the satellites, the internal links and only then the redirects. Applying them the same day as the rewrite sends traffic to a page that does not yet cover what was promised, and bounce spikes.
How it was published in WordPress without touching the template
The site runs WordPress with a custom theme and a builder on top. The rule was not to break anything that already worked: content goes in through the editor, new CSS is appended at the end and the landing page uses the course template the theme already had.
Verbatim content and CSS at the end
The copy was pasted exactly as delivered, without reinterpretation: 13,737 characters in the pillar, 9,513 in questions and 7,655 in preparation. The only theme file touched was the stylesheet, with new rules appended at the end —quick-answer blocks, question cards, dialogue and scrollable tables— without modifying a single existing one. The landing page was built with the theme's standard template and its image fields, not with a newly designed page.
One schema per type of piece
The same JSON-LD does not work for everything. The pillar carries Article, Person, Organization and FAQPage with its six questions. Preparation adds HowTo with the five steps from the visible table. The PDF page carries DigitalDocument and the landing page Service with FAQPage. In all of them the author is a real person with a profile page, and the schema FAQ matches the visible FAQ, which is the only way Google accepts it.
The GEO layer: making it citable
Every piece opens with a 40 to 70 word quick answer that makes sense on its own, without the rest of the article. Tables are real HTML, not images, because an assistant cannot read a JPG. English expressions are set in italics inside the Spanish copy, and the brand does not appear until the final third: someone looking up how to prepare for an interview does not want an ad in the first paragraph.
Every piece opens with the quick answer: 40-70 words that resolve the query without depending on the rest of the article.
The audit almost nobody does: 1,243 posts and 8,318 links
Changing a URL without checking who links to it just moves the problem somewhere else. Before enabling redirects the whole blog was audited, not only the cluster.
REST API instead of exporting and hoping
The 1,243 posts were downloaded through the REST API in batches of 25 and their 8,318 internal links were cross-checked against the redirect CSV. The result: only 24 posts linked to a URL that was about to die, with 27 links in total. The other ten dead links were in posts that were also disappearing, so there was nothing to fix there.
27 links, two different fixes
Six links had a generic anchor and only needed the new href. The other 21 sat in “related posts” blocks with the old title as the anchor text and attributes from a spreadsheet that had gone stale: there we changed the link, the text and cleaned the attributes. After saving, each one was verified: zero links to dead URLs across the 1,243 posts and zero internal links with .html.
16 redirects verified with a single hop
The 16 redirects for the broken variants were created through the redirect plugin's API and checked with direct requests: 16 out of 16 answer with a 301 to a 200 URL, in exactly one hop and with no chains. The ten merges of live pages were left for after the pillar was crawled, which is what the plan itself recommends.
Results and baseline
What was delivered can be verified today. What cannot be claimed yet is the recovery in rankings: the rollout finished on 22 October and measurement is agreed at 30, 60 and 90 days.
| What was measured | Before | After |
| Cluster URLs | 18 live, 7 for the main query | 6 pieces, one per intent |
| Broken internal links | 27 across 24 posts | 0 across the 1,243 posts |
| Internal links to .html | 1 legacy | 0 |
| 404 variants with impressions | 15 plus 1 legacy | 16 single-hop 301 redirects |
| Pillar | 806 words, no author in schema | 2,650 words and Article + Person |
| Questions | 12 cards without structured data | 12 cards and FAQPage with 5 answers |
| PDF page | 7,834 characters and third-party CTAs | 297 words, DigitalDocument and a consent popup |
| Course landing page | 404 | Published with Service and FAQPage |
What depends on crawling is still open: the ten live-page merges, sitemap regeneration, the noindex on tags with a single post and the 30, 60 and 90-day measurement cuts. Publishing this case as “recovered” would mean inventing the most important number.
The lesson from the cluster is uncomfortable: for a year new content was written for a query that already had seven pages competing. The work that moved the needle was not adding, it was removing.
What to check before rewriting a cluster
If your blog has several pages for the same search, these are the points we always review:
- Count URLs, not articles. If three posts answer the same query, you do not have three assets: you have three halves.
- Look at 404s with impressions. A broken slug that still shows in Search Console is traffic lost at the last step, and nobody audits it.
- Decide before writing. Architecture comes first: what absorbs, what specialises and what gets redirected.
- Audit internal links before redirecting. Changing a URL without checking who links to it creates a new problem somewhere else.
- Separate rewriting from redirecting. Let Google crawl the absorbing page before sending traffic to it.
- Make the schema match what is visible. A FAQPage with questions that are not on the page is not accepted, however well written it is.
- Measure with a baseline and dates. Without the starting picture and the exact rollout day, any improvement is an opinion.
If you are in that situation, our WordPress development page explains how we approach content architecture, and if you prefer to review your own case you can get in touch.
Frequently asked questions
Why redirect instead of deleting the surplus URLs?
Because a URL with impressions, links or AI citations still carries value: the 301 transfers it to the piece that stays. Deleting the page throws that history away and leaves a 404 to explain. Nothing was deleted from the database here: the ten live pages being merged can be rolled back during the following three months.
Why not apply the 26 redirects the same day as the rewrite?
Because redirected traffic lands on the absorbing page, and if Google has not crawled it yet, it does not cover what it promises. The plan separates both moments: the pillar is published and left to be crawled for three to seven days, and then the redirects for the live pages are enabled. The 16 that were already 404s went live earlier because there was nothing to lose.
How many URLs should compete for the same query?
One, two at most: a main piece and, if needed, a second one with a different intent. Seven URLs for the same keyword are not seven opportunities, they are seven diluted signals. The metric we track is not the cluster's average position but how many URLs rank for the main query: here it was seven and the goal is one or two.
How do you audit 1,243 posts without exporting the database?
With the WordPress REST API: posts are downloaded in batches of 25, the internal links of each one are stored and cross-checked against the list of URLs that are going to change. In this blog there were 8,318 links and only 24 posts pointed to a URL that was about to die. Then you fix them in the editor and verify again with the same cross-check.
When do results show up?
The first two weeks can bring a temporary drop in impressions, the architecture consolidates between weeks three and six and position recovers between weeks six and twelve. That is why this case does not announce an improvement: it sets the baseline (966 clicks, 76,600 impressions, 1.3% CTR) and the 30, 60 and 90-day measurement cuts.
