Local SEO

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Part Time

SALARY

N/A

HOURS PER WEEK

10

DATE UPDATED

Aug 23, 2026

JOB OVERVIEW

About the work

We manage digital marketing for a family dental practice in Gilbert, Arizona. The practice has a strong local reputation, over 358 Google reviews at a 4.9 average, and a Google Business Profile that performs well.

The problem is specific. The website ranks at position 1.7 for the practice name and almost nowhere for the services people actually search: dental implants, extractions, fillings, oral surgery. Those keywords generate hundreds of impressions per month at positions 30 to 50 and produce close to zero clicks.

This is a long term role, not a one off project. We want someone who takes ownership of local SEO and citations and keeps improving them month after month.

What you will do

Citations, ongoing (a core part of this role)

Audit and correct existing listings. There are currently at least four incorrect phone numbers and one incorrect suite number published across the web
Build new citations every month on dental, medical, and local directories such as Healthgrades, Zocdoc, Vitals, WebMD, and relevant Arizona and Gilbert directories
Find and resolve duplicate or unclaimed listings
Re check listings on a regular schedule, because directories change data without warning
Keep a running tracker of every listing, its status, and the exact name, address, and phone published on it

On-page SEO in WordPress

Write and set title tags, meta descriptions, and Open Graph tags using Rank Math
Fix missing H1 headings on service and contact pages
Set up 301 redirects for pages that changed URLs
Find and fix broken internal links
Resolve duplicate URL variants (for example /reviews and /reviews/)

Google Business Profile

Optimize categories, services, business description, Q&A, and photos
Deploy and validate LocalBusiness and Dentist schema markup on the website

Reporting

Track keyword position changes in Google Search Console
Report every week on what was completed, what changed, and what you recommend next
What we need from you
2 or more years doing local SEO for US-based businesses
Real citation building and cleanup experience, including handling duplicate listings
Comfortable working inside WordPress with the Elementor page builder
You have used Rank Math or Yoast for real client work, not just tutorials
You can read Google Search Console and Google Business Profile data and explain what it means
Clear written English. You will be reporting your own work, so we need to understand you
You finish things. This matters more to us than anything else on this list
Nice to have
Experience with WP Rocket caching and Cloudflare
Experience with healthcare or dental clients
Basic HTML and CSS for small page edits
Familiarity with the Medicross WordPress theme
About finishing

Our biggest problem with past work has not been skill. It has been tasks that were 80 percent done and called finished.

A page went live but had no title tag. A broken link was fixed on the homepage but no redirect was created, so the old URL still returned a 404. A new page was published but was never added to the site navigation, so nobody could find it.

For us, a task is done when: the change is live, the metadata is set, internal links point to it, redirects exist if a URL changed, and you have verified it yourself in a logged out browser with the cache cleared.

If you check your own work before calling it complete, you will do well here and we will keep you busy long term.

What this is not

This is not a link building or content writing role. We write our own content. We do not want private blog networks, purchased links, bulk directory spam, or AI generated filler pages. We are a real practice with real patients and we are building this properly.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0166
Total Execution Time  0.0179
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,492,104 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Local-SEO-1715152
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0106 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0010   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1715152
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 625323
 LIMIT 1 
0.0021   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1715152
AND `misc`.`id` IS NULL 
0.0004   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-09-27',ej.date_added) duration_days, DATEDIFF('2026-09-27',e.rebill_date) duration_rebill, ej.*, e.deactivate FROM employers e, employer_jobs ej WHERE e.employer_id = ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id = '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-09-27',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1715152' 
0.0007   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1715152 
0.0006   UPDATE employer_jobs SET hit_counts = '***Aug-23-2026=204***Aug-24-2026=362***Aug-25-2026=98***Aug-26-2026=66***Aug-27-2026=40***Aug-28-2026=16***Aug-29-2026=9***Aug-30-2026=3***Aug-31-2026=6***Sep-01-2026=16***Sep-02-2026=15***Sep-03-2026=7***Sep-04-2026=8***Sep-05-2026=7***Sep-06-2026=4***Sep-07-2026=4***Sep-08-2026=8***Sep-09-2026=6***Sep-10-2026=2***Sep-11-2026=16***Sep-12-2026=2***Sep-13-2026=1***Sep-14-2026=4***Sep-15-2026=1***Sep-16-2026=2***Sep-17-2026=2***Sep-18-2026=3***Sep-19-2026=3***Sep-20-2026=3***Sep-21-2026=9***Sep-22-2026=5***Sep-23-2026=4***Sep-24-2026=2***Sep-25-2026=2***Sep-26-2026=4***Sep-27-2026=2' WHERE job_id= '1715152'  
0.0005   UPDATE employer_jobs SET monthly_hits = '***Aug-2026=803***Sep-2026=142' WHERE job_id= '1715152'  
0.0015   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1715152' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1715152 
0.0016   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '625323'
AND `date_added` >= '2022-06-08' 
0.0003   select * from teasers 
0.0002   SELECT * FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)