Meta Ads Specialist for HVAC Replacement Campaigns (Part-Time, Long-Term)

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

TYPE OF WORK

Part Time

SALARY

$5/hour

HOURS PER WEEK

TBD

DATE UPDATED

Oct 23, 2026

JOB OVERVIEW

Hi, Visionary Labs is looking for a self motivated individual to work with.

We are looking for a Meta (Facebook and Instagram) ads specialist to build and run the campaigns for our HVAC clients, helping HVAC companies book more full system replacements.

Summary:
The goal is simple: homeowners with old systems fill out a form or call, and my clients’ calendars fill up with estimates for $10k+ replacement jobs. We care about booked estimates and closed jobs, not clicks or cheap leads.

What you’ll do:
- Build and launch Meta lead campaigns for 1 to 3 HVAC clients.
- Write or brief ad creative and copy aimed at homeowners with aging systems.
- Set up tracking so every lead can be tied to a closed job (we use GoHighLevel).
-Check results weekly, cut what’s wasting spend, and scale what’s working.
-Send me a short weekly report: spend, leads, cost per lead, booked estimates

You’re a good fit if:
-You’ve run Meta ads for local service businesses (HVAC, roofing, plumbing, solar, or similar), and can show results.
-You know the difference between a cheap lead and a lead that books.
-You can explain your process in plain language
You’re comfortable working with a small, new agency and giving direct feedback.
-You can overlap some hours with US Pacific time

Bonus: GoHighLevel experience, or experience with call tracking.

How we’ll work
Part-time to start, with room to grow as clients are added. I pay for a paid test project first (one campaign setup), and we go from there if it goes well. I’m friendly and direct, and I’ll tell you what I need and what’s working.

To apply, answer these 3 questions:

Describe one Meta campaign you ran for a local service business. What was the cost per lead, and how many leads turned into booked jobs?

A client’s leads are cheap but none are answering the phone. What do you check first?

What’s your hourly rate or monthly rate for managing 1 client, and how many hours a week would you expect that to take?

Start your application with the word “HVAC” so I know you read this.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0100
Total Execution Time  0.0114
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,486,472 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Meta-Ads-Specialist-for-HVAC-Replacement-Campaigns-Part-Time-Long-Term-1753663
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0050 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1753663
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 1012027
 LIMIT 1 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1753663
AND `misc`.`id` IS NULL 
0.0005   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-10-26',ej.date_added) duration_days, DATEDIFF('2026-10-26',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-10-26',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1753663' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1753663 
0.0007   UPDATE employer_jobs SET hit_counts = '***Oct-21-2026=4***Oct-22-2026=261***Oct-23-2026=712***Oct-24-2026=33***Oct-25-2026=7***Oct-26-2026=3' WHERE job_id= '1753663'  
0.0006   UPDATE employer_jobs SET monthly_hits = '***Oct-2026=1020' WHERE job_id= '1753663'  
0.0003   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1753663' 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` = 1753663 
0.0003   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '1012027'
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)