Google Ads Specialist (Lead Generation – Roofing & Solar)

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

TYPE OF WORK

Any

WAGE / SALARY

$5.50-$7.50 plus performance bonus

HOURS PER WEEK

40

DATE UPDATED

Apr 13, 2026

JOB OVERVIEW

We are a growing roofing and solar company based in Vancouver, Canada.
Our goal is to dominate North & West Vancouver and expand into surrounding areas.

We’re looking for a Google Ads specialist focused on lead generation, not clicks.

This is a long-term role starting with a full campaign build, followed by ongoing optimization and scaling.

What You'll Be Doing

Phase 1 – Build & Launch (2–3 weeks)

Build call-focused search campaigns
High-intent local keyword research
Ad copy creation & testing
Negative keyword strategy
Conversion tracking setup (calls + forms)
Coordinate landing page improvements

Phase 2 – Ongoing Optimization (Long-Term)

Reduce cost per lead
Improve lead quality
Expand into new service areas
Ongoing testing and scaling
We’re Looking For Someone Who
Has 3+ years Google Ads experience
Has generated real leads for service businesses
Understands local campaign structure
Focuses on calls and conversions
Can show before/after results
Comfortable working long-term

Experience with home services (roofing, HVAC, solar, etc.) is a strong advantage.

Compensation
Hourly: $8–$12 CAD (depending on experience)
Long-term role
Performance bonuses based on:
Cost per lead
Lead volume
Campaign performance
To Apply, Please Include
Years of Google Ads experience
Example of a lead-gen campaign you've worked on
Typical cost per lead you've achieved (if available)
Monthly budgets you've managed
Experience with local service businesses (if any)
Your hourly rate
Your timezone

Optional but helpful:

Screenshots
Case studies
Landing pages

We are looking for someone who wants to build a long-term system and scale campaigns, not just manage ads.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0407
Total Execution Time  0.0420
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,514,152 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/google-ads-specialist-lead-generation-roofing-solar-1616920
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0352 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1616920
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 916142
 LIMIT 1 
0.0270   SELECT COUNT(DISTINCT t.id) as cnt
FROM 
`t_thread` `t`
INNER JOIN `t_message` `mON `t`.`id` = `m`.`thread_id`
INNER JOIN `t_message_employer` `eON `m`.`id` = `e`.`message_id`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1616920
AND `misc`.`idIS NULL 
0.0006   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-28',ej.date_added) duration_daysDATEDIFF('2026-06-28',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_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-06-28',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1616920' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1616920 
0.0018   UPDATE employer_jobs SET hit_counts '***Apr-04-2026=315***Apr-05-2026=69***Apr-06-2026=46***Apr-07-2026=26***Apr-08-2026=8***Apr-09-2026=7***Apr-10-2026=3***Apr-11-2026=5***Apr-12-2026=1***Apr-13-2026=424***Apr-14-2026=13***Apr-15-2026=17***Apr-16-2026=11***Apr-17-2026=5***Apr-18-2026=4***Apr-19-2026=5***Apr-20-2026=3***Apr-21-2026=6***Apr-22-2026=6***Apr-23-2026=3***Apr-24-2026=3***Apr-25-2026=3***Apr-26-2026=2***Apr-27-2026=4***Apr-28-2026=3***Apr-29-2026=3***Apr-30-2026=3***May-01-2026=4***May-02-2026=3***May-03-2026=2***May-04-2026=1***May-05-2026=7***May-06-2026=5***May-07-2026=2***May-09-2026=2***May-10-2026=3***May-11-2026=1***May-12-2026=1***May-13-2026=4***May-14-2026=1***May-15-2026=2***May-16-2026=2***May-17-2026=2***May-19-2026=1***May-20-2026=2***May-21-2026=4***May-22-2026=3***May-23-2026=1***May-24-2026=2***May-25-2026=2***May-26-2026=3***May-27-2026=1***May-28-2026=1***May-29-2026=1***May-30-2026=1***Jun-02-2026=1***Jun-05-2026=1***Jun-08-2026=1***Jun-10-2026=2***Jun-11-2026=5***Jun-12-2026=2***Jun-14-2026=5***Jun-17-2026=1***Jun-19-2026=2***Jun-20-2026=3***Jun-21-2026=1***Jun-22-2026=2***Jun-23-2026=2***Jun-26-2026=2***Jun-28-2026=1' WHERE job_id'1616920'  
0.0007   UPDATE employer_jobs SET monthly_hits '***Apr-2026=986***May-2026=64***Jun-2026=31' WHERE job_id'1616920'  
0.0002   SELECT date_sent
                FROM 
`jobseeker_sent_emails`
                
WHERE jobseeker_id NULL
                  
AND job_id 1616920
                  
AND status LIKE 'sent%'
                
ORDER BY id DESC
                LIMIT 1 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1616920 
0.0016   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '916142'
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)