Experienced Google Ads Media Buyer - E-commerce (Search, Shopping & Performance Max)

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

TYPE OF WORK

Part Time

SALARY

Hour wage + bonus tied to ROAS

HOURS PER WEEK

TBD

DATE UPDATED

Jun 9, 2026

JOB OVERVIEW

We're a growing e-commerce brand selling to the US market via Shopify. We're looking for a Google Ads media buyer who has actually scaled e-commerce stores profitably not a generalist who has "run some campaigns." If you live and breathe ROAS, this is for you.
What you'll do:

Build, launch, and optimize Google Ads campaigns: Performance Max, Shopping, Search, and YouTube
Manage and troubleshoot Google Merchant Center and product feeds
Scale ad spend while maintaining/improving target ROAS
Run structured testing (creatives, audiences, bidding strategies, feed optimization)
Monitor accounts daily and report on key metrics (ROAS, CPA, conversion rate, spend)
Work closely with our team on product and seasonal strategy

What we're looking for (proven experience required):

A real track record managing e-commerce / dropshipping Google Ads accounts
Deep hands-on experience with Performance Max and Shopping campaigns
Strong understanding of Merchant Center, feed management, and conversion tracking
Comfortable making data-driven decisions on budget and bidding
Excellent written English
Reliable internet and overlap with US/EU business hours

How to apply read carefully:

Start your application with the word "SCALE" so we know you read the full post.
Attach screenshots from Google Ads accounts you've personally managed showing spend, ROAS, and conversions
Tell us: What is the highest monthly ad spend you've personally managed, and what ROAS did you maintain?
Answer this: For a new store with little or no conversion history, how would you structure your first Performance Max campaign, and how would you d ---------- on bidding strategy?

Applications that skip the word or the screenshots will not be reviewed.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0031
Controller Execution Time ( Jobseekers / Job )  0.0375
Total Execution Time  0.0424
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,479,696 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Experienced-Google-Ads-Media-Buyer-E-commerce-Search-Shopping-Performance-Max-1664864
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 15 (0.0268 seconds)  (Hide)
0.0027   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0023   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1664864
 LIMIT 1 
0.0016   SELECT *
FROM `employers`
WHERE `employer_id` = 875833
 LIMIT 1 
0.0039   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1664864
AND `misc`.`idIS NULL 
0.0007   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1664864
AND `misc`.`idIS NULL 
0.0009   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-09-02',ej.date_added) duration_daysDATEDIFF('2026-09-02',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-09-02',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1664864' 
0.0024   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1664864 
0.0033   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1664864
AND `misc`.`idIS NULL 
0.0011   UPDATE employer_jobs SET hit_counts '***Jun-09-2026=228***Jun-10-2026=45***Jun-11-2026=33***Jun-12-2026=24***Jun-13-2026=1***Jun-14-2026=3***Jun-15-2026=7***Jun-16-2026=5***Jun-18-2026=2***Jun-19-2026=1***Jun-23-2026=2***Jun-24-2026=1***Jun-25-2026=6***Jun-26-2026=1***Jun-28-2026=3***Jun-29-2026=1***Jun-30-2026=1***Jul-01-2026=3***Jul-02-2026=3***Jul-03-2026=1***Jul-12-2026=1***Jul-13-2026=1***Jul-15-2026=4***Jul-16-2026=4***Jul-22-2026=2***Jul-23-2026=2***Jul-24-2026=2***Jul-25-2026=4***Jul-28-2026=3***Jul-31-2026=1***Aug-02-2026=1***Aug-03-2026=1***Aug-09-2026=2***Aug-10-2026=1***Aug-16-2026=1***Aug-19-2026=2***Aug-20-2026=1***Aug-24-2026=1***Aug-25-2026=1***Sep-02-2026=1' WHERE job_id'1664864'  
0.0015   UPDATE employer_jobs SET monthly_hits '***Jun-2026=363***Jul-2026=31***Aug-2026=11***Sep-2026=1' WHERE job_id'1664864'  
0.0016   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1664864' AND status LIKE 'sent%' ORDER BY id DESC  
0.0005   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1664864 
0.0022   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '875833'
AND `date_added` >= '2022-06-08' 
0.0016   select from teasers 
0.0004   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)