Quarry Rentals (ONeill Media LLC)
Quarry Rentals operates a dumpster and portable sanitation rental business serving Southern California. We provide temporary waste management solutions to contractors, homeowners, and businesses through our website quarryrents.com.
We use Google Ads to generate leads for rental inquiries, primarily through:
We only advertise for our own business (quarryrents.com) and do not manage advertising for any other companies or clients.
This API tool will be used exclusively by internal employees at Quarry Rentals for:
Our internal system will provide:
Reporting Dashboard - Internal web interface showing:
AI-Powered Insights - Automated analysis to identify:
Automated Sync - Daily synchronization script that:
┌─────────────────────────────────────────────────────────────┐
│ Google Ads API │
└────────────────────────┬────────────────────────────────────┘
│
│ OAuth 2.0 Authentication
│ Daily API Calls (backfill-capable)
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Quarry Rentals Rails Application │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Google Ads Sync Service (Daily Scheduled Job) │ │
│ │ - Fetches campaign/keyword/geo performance │ │
│ │ - Idempotent upserts (refresh if re-run) │ │
│ │ - Supports 30-60 day backfill │ │
│ │ - Triggers AI analysis │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ PostgreSQL Database │ │
│ │ - google_ads_campaigns │ │
│ │ - google_ads_keywords │ │
│ │ - google_ads_daily_reports │ │
│ │ - companies (customer data) │ │
│ │ - orders (sales data) │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Admin Dashboard (Internal Web UI) │ │
│ │ - Campaign performance & anomalies │ │
│ │ - Keyword analysis & negatives │ │
│ │ - Geo performance │ │
│ │ - AI recommendations display │ │
│ │ - ROI tracking (ad spend vs revenue) │ │
│ │ - Manual sync & date-range backfill │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────┐
│ Authorized Staff │
│ (Internal Access) │
└─────────────────────┘
Daily Data Sync (Automated Background Job)
User-Initiated Reports (On-Demand)
Weekly AI Analysis (Automated)
We will use the following Google Ads API services:
Purpose: Retrieve campaign and keyword performance data
Resources Accessed:
campaign - Campaign names, IDs, status, location targetsad_group - Ad group names and IDsad_group_criterion (keywords) - Keyword text, match type, performancemetrics - Cost, clicks, impressions, conversions, CTRQuery Example:
SELECT
campaign.id,
campaign.name,
ad_group.id,
ad_group.name,
ad_group_criterion.keyword.text,
metrics.cost_micros,
metrics.clicks,
metrics.impressions,
metrics.conversions
FROM keyword_view
WHERE segments.date DURING LAST_7_DAYS
ORDER BY metrics.cost_micros DESC
Call Frequency: Once daily
Purpose: Retrieve account-level information and settings
Data Accessed:
Call Frequency: Once per session (cached)
Purpose: Analyze performance by location (Los Angeles, Orange County, etc.)
Data Accessed:
Call Frequency: Once daily
Daily Scheduled Sync: ~5-10 API calls per day
On-Demand Reports: ~0-5 API calls per day
Total Estimated API Calls: 10-15 per day
Scenario: Management reviews last week's advertising performance every Monday.
Process:
Scenario: Identify keywords that are wasting budget.
Process:
Scenario: Determine which campaigns should receive more/less budget.
Process:
Scenario: Understand how advertising effectiveness changes by season.
Process:
┌──────────────────────────────────────────────────────────────┐
│ Quarry Rentals - Advertising Performance Dashboard │
├──────────────────────────────────────────────────────────────┤
│ │
│ Date Range: [Last 7 Days ▼] │
│ │
│ ┌─────────────┬─────────────┬─────────────┬──────────────┐ │
│ │ Total Spend │ Clicks │ Conversions │ CPA │ │
│ ├─────────────┼─────────────┼─────────────┼──────────────┤ │
│ │ $3,245 │ 892 │ 24 │ $135.21 │ │
│ └─────────────┴─────────────┴─────────────┴──────────────┘ │
│ │
│ Campaign Performance: │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Campaign │ Spend │ Conv │ CPA │ Status│ │
│ ├───────────────────────┼────────┼──────┼────────┼───────┤ │
│ │ LA Dumpster Rental │ $1,450 │ 12 │ $120 │ 🟢 │ │
│ │ OC Roll-Off Service │ $1,100 │ 8 │ $137 │ 🟢 │ │
│ │ Porta-Potty Rental │ $695 │ 4 │ $173 │ 🟡 │ │
│ └───────────────────────┴────────┴──────┴────────┴───────┘ │
│ │
│ 🤖 AI Insights: │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ • Campaign "LA Dumpster Rental" outperforming by 15% │ │
│ │ → Recommend budget increase │ │
│ │ │ │
│ │ • 8 keywords with $500+ spend and 0 conversions │ │
│ │ → Review negative keyword recommendations │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────┐
│ Keyword Performance - Optimization Opportunities │
├──────────────────────────────────────────────────────────────┤
│ │
│ Filter: [High Spend, Low Performance ▼] │
│ │
│ Negative Keyword Candidates: │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Keyword │ Spend │ Clicks │ Conv │ Action │ │
│ ├───────────────────────┼───────┼────────┼──────┼────────┤ │
│ │ cheap dumpster │ $340 │ 48 │ 0 │ [−] │ │
│ │ dumpster rental free │ $285 │ 62 │ 0 │ [−] │ │
│ │ trash pickup │ $180 │ 31 │ 0 │ [−] │ │
│ └───────────────────────┴───────┴────────┴──────┴────────┘ │
│ │
│ 🤖 AI Recommendation: │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Add these 3 keywords as negative keywords: │ │
│ │ • "cheap" (attracts price shoppers, low conversion) │ │
│ │ • "free" (not our service model) │ │
│ │ • "trash pickup" (different service category) │ │
│ │ │ │
│ │ Estimated Monthly Savings: $805 │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────┐
│ Performance by Location │
├──────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Location │ Spend │ Conv │ CPA │ Revenue │ │
│ ├───────────────────┼────────┼──────┼────────┼──────────┤ │
│ │ Los Angeles │ $1,890 │ 15 │ $126 │ $7,500 │ │
│ │ Orange County │ $1,055 │ 7 │ $150 │ $3,200 │ │
│ │ San Bernardino │ $300 │ 2 │ $150 │ $950 │ │
│ └───────────────────┴────────┴──────┴────────┴──────────┘ │
│ │
│ 🤖 AI Insight: │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Los Angeles shows best ROI (3.97x) │ │
│ │ → Consider increasing LA budget by 25% │ │
│ │ │ │
│ │ San Bernardino has limited volume but good CPA │ │
│ │ → Maintain current budget, monitor for growth │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────┘
This tool complies with:
We do not:
Company: ONeill Media LLC / Quarry Rentals Primary Website: https://quarryrents.com API Contact Email: robert@quarry.app Google Ads Manager Account ID: 623-323-9884
Technical Contact: Robert O'Neill robert@quarry.app
This document describes our planned internal use of the Google Ads API for business intelligence and advertising optimization purposes only. All usage will be in compliance with Google Ads API policies and terms of service.