injury-law/miami-pharmacy-malpractice-lawyer · Gallardo Law Firm · Audited 2026-08-26, recounted 2026-08-27 after the optimisation pass · En / article.cshtml + articlemetas.cshtml + FaqEntities.xml + ServiceEntities.xml + VideoEntities.xml + 3 other pages
<title>, the meta description, og:title, og:description, twitter:title, the twitter image alt and the targetedkeyword in ServiceEntities.xml. Meanwhile «pharmacy error lawyer» and «pharmacy error attorney» — 170 volume each at KD 0, already drawing 30 and 28 impressions at positions 29.3 and 32.5 — appeared zero times in the copy. The «miami » prefix is what kills it: unprefixed, «pharmacy malpractice lawyer» is 140 vol / KD 5 / CPC $7.32, and «pharmacy malpractice attorney» is 140 vol / KD 5 with 49 impressions.
<title> only — it is kept on og:title and twitter:title, which have no display limit.
@* TITLE — 75 chars -> 55. The old exact phrase has Semrush volume 0 and zero GSC impressions. Retargeted onto "miami pharmacy error lawyer" (VOL 50, 91 impr, pos 12.1) and the pharmaceutical negligence cluster (95 + 84 impr). *@
@* was: Miami Pharmacy Malpractice Lawyer - Prescription Errors | Gallardo Law Firm *@
<title>Miami Pharmacy Error & Pharmaceutical Negligence Lawyer</title>
@* DESCRIPTION — 163 chars -> 155, on ALL THREE surfaces. Two reasons, not one. (a) the old copy said "We specialize in", which Fla. Bar Rule 4-7.14 ties to board certification or objectively verifiable substantial involvement — replaced rather than adjudicated. (b) the new copy covers 453 impressions of query tokens against the old 243. *@
@* was: Seek justice with a Miami pharmacy malpractice lawyer ... We specialize in cases of pharmaceutical errors ... *@
<meta name="description" content="Harmed by a prescription filled wrong in Miami? Our pharmacy error lawyers handle medication error and pharmaceutical negligence claims. Free consultation." />
@* SOCIAL IMAGE — the URLs were SITE-RELATIVE. OpenGraph does not resolve relative paths, so every share of this page rendered with NO IMAGE AT ALL. Separately, 375x211 is below Facebook's 600x315 threshold for a large card, so fixing only the URL would still have produced a small thumbnail. The 903x530 asset was verified to EXIST ON DISK before being pointed at. *@
<meta property="og:image" content="https://gallardolawyers.com/themes/gallardo/images/services/903x530/miami-pharmacy-malpractice-lawyer.jpg" />
@* summary -> summary_large_image; follows from the 903x530 asset above. *@
<meta name="twitter:card" content="summary_large_image" />
@* CANONICAL — unchanged and VERIFIED. Matches the WebPage "url" in the JSON-LD and the BreadcrumbList leaf. *@
<link rel="canonical" href="https://gallardolawyers.com/injury-law/miami-pharmacy-malpractice-lawyer" />
@* article:modified_time — LEFT UNCHANGED at client instruction. Worth recording that it is a MINOR tag: an OpenGraph property consumed by social platforms, not a Google ranking or freshness input. Google's documented date sources are the visible date and the structured data — both of which this page now carries. *@
@* MAINTENANCE — the description is applied IDENTICALLY to name="description", og:description and twitter:description. THREE SURFACES. If one changes, change all three. *@
The target phrase was NOT restored to the metas — that was a decision, not an omission. «miami pharmacy malpractice lawyer» fell 7 → 1 when the metas were rewritten, and six occurrences were put back into the body instead, one per section. Restoring them to the metas would have undone both the truncation fix and the Bar Rule 4-7.14 fix in order to chase a phrase with no demand.
Where the original 7 actually were: six were the same string repeated across the six meta fields, and the seventh was the H1. The body never contained it once. And the real reason the six were restored is nesting, not the target phrase — each addition also lifts «pharmacy malpractice lawyer» (VOL 140, 14 impressions) and «miami pharmacy malpractice». The target phrase on its own would not have been worth the ink.
ONE MISTAKE MADE AND CAUGHT IN THIS PASS: the first attempt reworded a sentence from plural to singular and silently killed «pharmacy malpractice lawyers» — VOL 110, 20 GSC impressions. It was caught because on-page presence came back 99 instead of 100. Reverted to the plural while keeping «Miami», so the sentence now carries both phrases.
| Keyword / query | Impr | Pos | Vol | KD | CPC | Was | Now | Δ | Note |
|---|---|---|---|---|---|---|---|---|---|
| miami pharmacy malpractice lawyer | 0 | — | 0 | 7 | — | 7 | 7 | = | ⚠ THE PAGE'S OWN TARGET. Title, H1, all 6 meta fields, ServiceEntities targetedkeyword — and volume 0, impressions 0. Moved out of the metas and into the body; net unchanged |
| pharmaceutical negligence lawyer miami | 95 | 21.4 | 40 | 3 | — | 0 | 0 | = | HIGHEST-IMPRESSION query on the URL, and the exact string is still absent. Served by the pharmaceutical-negligence section, not by the phrase |
| miami pharmacy error lawyer | 91 | 12.1 | 50 | 3 | — | 0 | 5 | +5 | ⭐ ENTERED THE PAGE — and it is the best position on the whole URL (12.1). This is what the new title targets |
| prescription error lawyer miami | 88 | 31.6 | 40 | 0 | — | 0 | 0 | = | GAP — KD 0 at position 31.6. Word order is the obstacle; «prescription error» itself went 0 → 9 |
| medication error lawyer miami | 87 | 62.0 | 40 | 0 | — | 0 | 0 | = | GAP — KD 0. «medication error» went 0 → 18, which is the winnable half of this |
| prescription error attorney miami | 87 | 33.9 | 40 | 2 | — | 0 | 0 | = | GAP — commercial intent, KD 2 |
| medication error attorney miami | 84 | 66.1 | 40 | 0 | — | 0 | 0 | = | GAP — KD 0 at position 66 |
| pharmaceutical negligence attorney miami | 84 | 19.7 | 40 | 2 | — | 0 | 0 | = | GAP — already position 19.7 without the phrase appearing once |
| pharmacy error lawyer | 30 | 29.3 | 170 | 0 | — | 0 | 10 | +10 | ⭐ THE BIGGEST WIN. 170 vol at KD 0, ranking 29.3 with the phrase appearing zero times. Now in the metas 3×, body 5×, FAQs 2× |
| pharmacy error | — | — | 10 | 17 | — | 1 | 52 | +51 | ⭐ LARGEST GAIN ON THE PAGE. Root of the whole KD 0 cluster; the page previously used only the plural, once, in an H2 |
| pharmacy error attorney | 28 | 32.5 | 170 | 0 | — | 0 | 2 | +2 | ⭐ 170 vol at KD 0 — the «attorney» half of the same free win |
| pharmacy malpractice attorney | 49 | 32.6 | 140 | 5 | 3.53 | 1 | 1 | = | 2nd-highest commercial query. Unprefixed form has real volume where the Miami-prefixed form has none |
| pharmacy malpractice lawyer | 14 | 43.7 | 140 | 5 | 7.32 | 7 | 7 | = | held at 7 by the six body restorations — it nests inside the target phrase |
| pharmacy malpractice | — | — | 50 | 5 | 6.56 | 21 | 42 | +21 | the page's core term. Best competitor rank in the gap set: 19 |
| medication error | — | — | 720 | 34 | — | 0 | 18 | +18 | ⭐ HIGHEST-VOLUME winnable term on the page, and it was at ZERO. Closed by the NCC MERP definition section |
| prescription error | — | — | 20 | 29 | — | 0 | 9 | +9 | ENTERED — the page had only ever used the plural |
| pharmacy negligence | — | — | 40 | 0 | 14.48 | 0 | 7 | +7 | ⭐ KD 0 at CPC $14.48 — competitors pay for this. Was absent; best competitor rank 6 |
| pharmacy negligence lawyer | 62 | 43.1 | 30 | 3 | — | 0 | 1 | +1 | ENTERED — 62 impressions at position 43.1 |
| pharmacy negligence attorney | 23 | 17.8 | 40 | 3 | 8.07 | 0 | 1 | +1 | ENTERED via a FAQ. Best competitor rank 37 — a thin SERP |
| pharmacy malpractice lawyers | 20 | 54.7 | 110 | 5 | 4.12 | 0 | 1 | +1 | ENTERED — the plural nearly lost to a singular rewrite; see the Measurement Discipline section |
| pharmacist malpractice | — | — | 50 | 1 | 5.54 | 0 | 2 | +2 | ENTERED — «pharmacist malpractice lawyer» draws 22 impressions at position 63.7 and the word was absent |
| pharmaceutical negligence | — | — | 20 | 0 | — | 2 | 12 | +10 | now carried by the metas 6× — the cluster the new title targets |
| pharmaceutical malpractice | — | — | 50 | 0 | — | 3 | 6 | +3 | KEPT DELIBERATELY. An earlier instruction in the audit said to collapse onto «pharmacy»; that was reversed |
| pharmacist | — | — | 49500 | 77 | 2.51 | 6 | 39 | +33 | the liability section — pharmacist vs. pharmacy — did this |
| can i sue a pharmacy | — | — | 70 | 0 | — | 0 | 1 | +1 | ENTERED via FAQ. KD 0; best competitor rank 27 |
| can you sue a pharmacy for negligence | — | — | 30 | 0 | 45.42 | 0 | 1 | +1 | ⭐ CPC $45.42 at KD 0 — the highest-value phrase in the whole set. Entered via a FAQ written for it |
| pharmacy malpractice cases | 28 | 13.1 | 70 | 1 | — | 0 | 3 | +3 | ENTERED — position 13.1, best competitor 10 |
| pharmacy malpractice settlements | 2 | 12.0 | 50 | 2 | — | 0 | 1 | +1 | ENTERED — the settlement section, written without a single dollar figure |
| statute of limitations | — | — | 60500 | 87 | 4.07 | 1 | 2 | +1 | ⭐ THE REAL FIND — the page has always run a full deadline section using «deadline» 11× and the actual search term zero times |
| claim | — | — | 49500 | 70 | 6.94 | 14 | 84 | +70 | largest absolute gain on any single row |
| malpractice | — | — | 22200 | 80 | 11.74 | 38 | 70 | +32 | grew slower than the page did — density fell, which is the intended direction |
| miami | — | — | 450000 | 100 | 0.66 | 9 | 50 | +41 | GEO DENSITY — 31% of these SERPs show a Local pack. Was 3× in 1,392 body words and 0× in 447 FAQ words |
| product liability | — | — | 2900 | 58 | 10.03 | 0 | 4 | +4 | added only to ROUTE the reader away — the term belongs to product-liability-attorney-miami |
| drugs | — | — | 74000 | 100 | 8.28 | 13 | 4 | −9 | DOWN ON PURPOSE — the four drug-centric FAQs were removed. KD 100 and not winnable here |
| compensation | — | — | 49500 | 65 | 4.04 | 9 | 2 | −7 | fell because the metas got tighter. KD 65, not winnable on this URL |
| side effects | — | — | 49500 | 78 | 0.63 | 6 | 2 | −4 | drug-side-effect content is product liability, not dispensing liability |
| over-the-counter | — | — | 2900 | 73 | 1.17 | 1 | 0 | −1 | KNOWN COST, ACCEPTED — the OTC FAQ was removed as off-topic. Intended outcome, not damage |
| dangerous drugs | — | — | 1600 | 31 | 4.66 | 2 | 0 | −2 | same — the «dangerous drugs on the market» FAQ pulled the page toward a different practice area |
| fda | — | — | 110000 | 92 | 3.12 | 2 | 0 | −2 | navigational intent, KD 92. Left to fall |
| medical malpractice attorney miami | — | — | 880 | 22 | 10.63 | 0 | 0 | = | LEFT ALONE DELIBERATELY — the 10,980-volume medical-malpractice cluster belongs to its own page |
| prescription errors lawyers coral gables | 3 | 52.3 | 320 | 5 | — | 0 | 0 | = | ⚠ SUSPECT DATA — 8× the volume of the equivalent Miami query (40). Not plausible for a smaller market. No heading was built on it |
targetedkeyword in ServiceEntities.xml — the single most repeated phrase on the page, 7 occurrences, 6 of them in metas.
The unprefixed forms DO have demand: pharmacy malpractice lawyer 140 / KD 5 / $7.32 (14 impr) · pharmacy malpractice attorney 140 / KD 5 / $3.53 (49 impr) · pharmacy malpractice 50 / KD 5 / $6.56. The «miami » prefix is what kills it. Miami belongs in the copy for local relevance — it is now there 50 times against 9 — but the page should not be BUILT on the prefixed phrase, and after this pass it no longer is.
| Keyword | Vol | KD | CPC | GSC impr | Pos | On page now |
|---|---|---|---|---|---|---|
| pharmacy error lawyer | 170 | 0 | $0.00 | 30 | 29.3 | 0 → 10 |
| pharmacy error attorney | 170 | 0 | $0.00 | 28 | 32.5 | 0 → 2 |
| wrong medication lawyer | 210 | 3 | $0.00 | 8 | 48.9 | 0 → 0 |
| prescription errors lawyers | 170 | 3 | $0.00 | 1 | 38.0 | 0 → 0 |
| pharmaceutical malpractice lawyers | 170 | 5 | $10.22 | 4 | 16.5 | 0 → 1 |
| pharmacy malpractice lawyers | 110 | 5 | $4.12 | 20 | 54.7 | 0 → 1 |
| pharmacy negligence | 40 | 0 | $14.48 | — | — | 0 → 7 |
| pharmacy negligence attorney | 40 | 3 | $8.07 | 23 | 17.8 | 0 → 1 |
| Feature | Count | Share | What it forced |
|---|---|---|---|
| People also ask | 158 | 93% | Question-format headings are near-mandatory. The highest-frequency feature on the entire set — every new H2/H3 that could be a question, is one |
| AI Overview | 89 | 52% | Answers must be short, direct and extractable. This is what raised the FAQ rewrite to top priority and why the page now carries tables and a «what not to do» list — the two most liftable formats |
| Local pack | 52 | 31% | Google Business Profile and geo-anchoring carry real weight. The page said «Miami» 3× in 1,392 body words and 0× in 447 FAQ words, and carried no NAP at all |
| Reviews | 94 | 55% | Noted, acted on nowhere — aggregateRating on a service page is a Google structured-data policy violation |
@* … *@) at the exact point of the edit in En/article.cshtml — 46 such blocks. They are server-side and never render. This section is the index to them. Sources are listed per entry and consolidated in the Source Index at the foot of this report.
language="en". The Spanish twin of this page has not been touched at all in this workstream.
<Service id="…"/> reference into the full entity recursively, with no cycle guard — a loop throws a stack overflow at startup, before routing exists, so every page on the site goes down rather than just this one.
miami-medical-malpractice-attorney ALREADY lists this page, so pointing back at it would have closed a 2-cycle immediately. All six chosen destinations are LEAF nodes — none has a ServicesRelated block of its own — so no cycle of any length is possible through them. A three-colour DFS over all 15 nodes and their edges was run and passed before writing, not after.<a href> is inert and can point anywhere, while a <Service id> is followed at startup and must never loop. Two different link types, two different rules.
target="_blank" rel="noopener", and NOT nofollow — these are authoritative primary sources, and nofollow is for untrusted or paid links. flsenate.gov is already linked 35 times site-wide, so the pattern was found, not invented.
One link per source, first mention only. No source is linked twice. Eight domains: flsenate.gov · nccmerp.org · pmc.ncbi.nlm.nih.gov · pubmed.ncbi.nlm.nih.gov · health.gov · caselaw.findlaw.com · jud11.flcourts.org · floridabar.org. The full list is in the Source Index below.
<a href="…"> — inert. Any number, any direction, reciprocal is fine. Cannot break the build.<Service id="…"/> — followed recursively at startup. Must never form a loop back to the current page.
FLAG FOR THE FIRM — the underlying defect is in the parser, not in the data. It should carry a visited-set guard. A single bad entry in an XML data file can take down the entire site at startup, with a stack trace that names no service and no file.
<title>provider references @id …/#organization, which is defined only on the homepage and therefore resolves to nothing hereduration="T40S" → "PT40S". ISO 8601 durations must begin with P, so Google was reading a malformed recommended VideoObject property. Validity hygiene, not ranking.| # | Was | Now | Why |
|---|---|---|---|
| 1 | «found the three high-risk classes above behind» | «…were behind» | no verb |
| 2 | «an infant medication error that would barely register in an adult» | recast so the comparison holds | self-contradictory as written; the phrase was worth keeping, the sentence was not |
| 3 | «Division of Eleventh Judicial Circuit» | «…of THE Eleventh Judicial Circuit» | the court's actual name |
| 4 | counselling | counseling | US spelling — and it sits outside the quoted statute, so changing it is safe |
| 5 | «in hospital» | «in the hospital» | US usage |
| 6 | intro «were injured» vs. CTA «has been injured» | matched to the closing form | the two ends of the page disagreed with each other |
| Phrase | Vol | What was done |
|---|---|---|
| statute of limitations | 60,500 | ⭐ THE REAL FIND, and NOT a regression from this week — the page has always run a full deadline section using «deadline» 11 times and the actual search term zero times. Placed twice |
| drug interactions | 33,100 | plural restored; the page had the singular 3× only |
| incorrect dosage | 20 | swapped from «incorrect dose» |
| medical malpractice lawsuit | 1,300 | the page had «claim» 4× and never «lawsuit» |
miami-pharmacy-malpractice-lawyer-improvements.txt as a matter of course, without being asked — and mirrored as a Razor comment at the exact point of the edit in En/article.cshtml, 46 blocks so far. Each pass appends its own CHANGE LOG section below the previous one in the established format: WHAT changed, the SOURCE or rule relied on, the KEYWORDS reinforced with their volume/KD data, and the updated open-items list carried forward. To refresh the keyword table after the next round: re-fetch the page, confirm freshness by string match rather than byte size, then re-run the counter — «WAS» must keep meaning 2026-08-26 no matter how many times it runs.