📢 Google Ads Training Guide
Complete step-by-step guide to running Google Search Ads — from account setup to conversion tracking, with real code examples from the 69dynamics implementation.
1 What is Google Ads?
Google Ads is a pay-per-click (PPC) advertising platform where you bid on keywords so your ad appears at the top of Google Search results. You only pay when someone clicks your ad.
| Term | Meaning |
|---|---|
| PPC | Pay-Per-Click — you pay only when someone clicks |
| CPC | Cost Per Click — the amount you pay per click |
| CTR | Click-Through Rate — clicks ÷ impressions × 100 |
| Impression | One time your ad is shown on a search result page |
| Conversion | A valuable action (form submit, call, purchase) |
| Quality Score | Google's 1-10 rating of your ad + keyword + landing page relevance |
| Ad Rank | Quality Score × Max CPC — determines your position |
2 How Search Ads Work
When someone searches on Google, an instant auction happens:
User searches: "web design coimbatore"
↓
Google finds all ads bidding on that keyword
↓
Each ad gets an Ad Rank = Quality Score × Max CPC
↓
Ads are ordered by Ad Rank (highest = position 1)
↓
Top 1-4 ads shown ABOVE organic results
↓
You only pay when someone CLICKS (not when shown)
What Users See
┌──────────────────────────────────────────────────────┐
│ Sponsored │
│ 69dynamics.in │
│ Professional Website in 7 Days | Low Cost Websites │ ← Headlines
│ Get a custom website with SEO, mobile-ready design. │ ← Description
│ Free Consultation · 30 Days Free Support │ ← Callout Extensions
│ [Website Design] [Pricing] [Portfolio] [Contact] │ ← Sitelink Extensions
└──────────────────────────────────────────────────────┘
│ Sponsored ← Competitor Ad │
│ ... │
├──────────────────────────────────────────────────────┤
│ Organic Result #1 (free, ranked by SEO) │
│ Organic Result #2 │
└──────────────────────────────────────────────────────┘
3 Account Setup
Step-by-Step
1 Go to ads.google.com and sign in with Google account
2 Click "New Google Ads Account" → choose "Switch to Expert Mode" at the bottom (never use Smart Mode)
3 Select "Create an account without a campaign" to set up billing first
4 Set your Country: India, Currency: INR, Time Zone: IST
5 Add billing details (credit card / debit card / UPI)
Our Account Details
| Setting | Value |
|---|---|
| Account Name | 69 Dynamics |
| Account ID | 872-364-8500 |
| Conversion Tag | AW-8723648500 |
| Lead Form Tag | AW-16486891557 |
| GA4 Property | G-MHBHJR0F1G |
| GTM Container | GTM-WBBTFDBJ |
4 Billing & Budget
| Budget Level | Daily Budget | Monthly Spend | Best For |
|---|---|---|---|
| Starter | ₹300-500 | ₹9K-15K | Testing keywords, getting initial data |
| Growth | ₹500-1000 | ₹15K-30K | Consistent lead flow, multiple ad groups |
| Scale | ₹1000-3000 | ₹30K-90K | Aggressive growth, Smart Bidding with data |
5 Creating a Campaign
1 Click + New Campaign → Goal: Leads
2 Campaign type: Search (never Display for lead gen)
3 Select your conversion goal (e.g., "Submit lead form")
4 Campaign name: Use a descriptive format: [Service] - [Location] - [Network]
Example: Web dev - Coimbatore - Search
5 Uncheck "Include Google search partners" and "Include Google Display Network" — Search only
Campaign Settings
| Setting | Recommended | Why |
|---|---|---|
| Networks | Google Search ONLY | Display wastes budget for lead gen |
| Locations | Coimbatore + 30km radius | Focus spend on serviceable area |
| Language | English + Tamil | Capture all local searchers |
| Bid Strategy | Manual CPC (low budget) | Full control over spend per keyword |
| Ad Schedule | Mon-Sat, 8 AM - 9 PM | No one converts outside business hours |
| Ad Rotation | Optimize: Prefer best performing | Let Google pick winners automatically |
6 Ad Groups & Keywords
An ad group contains a set of related keywords and ads. The key principle: one theme per ad group.
Bad vs Good Structure
❌ BAD: One ad group with everything
Ad Group: "All Services"
Keywords: web design, logo design, SEO, CRM, mobile app
→ Ad headlines can't be specific → Low Quality Score → High CPC
✅ GOOD: Tight themed ad groups
Ad Group: "Web Design Coimbatore"
Keywords: web design coimbatore, website design coimbatore, web designer coimbatore
→ Ad headline: "Professional Web Design in Coimbatore"
→ Landing page: /lp/google (matches exactly)
→ Quality Score: 8-10 → Low CPC
Our 13 Ad Groups
| # | Ad Group | Theme | Keywords |
|---|---|---|---|
| 1 | Web Design - Coimbatore | Local design queries | 10 |
| 2 | Web Development - Coimbatore | Local dev queries | 10 |
| 3 | Business Website | Generic business site | 10 |
| 4 | E-Commerce | Online store seekers | 10 |
| 5 | Low Cost Website | Budget-conscious | 10 |
| 6 | Landing Page & Fast Delivery | Speed/urgency | 10 |
| 7 | CRM ERP Software | Quantum queries | 10 |
| 8 | Digital Marketing | Marketing services | 10 |
| 9 | Branding & Design | Logo/brand | 10 |
| 10 | Tamil Nadu Geo | Nearby cities | 10 |
| 11 | Web App & SaaS | Software dev | 10 |
| 12 | High Intent - Buy Now | Ready to purchase | 10 |
| 13 | Exact Match - Top Priority | Best converters | 15 |
7 Keyword Match Types
| Match Type | Syntax | Example Keyword | Triggers On |
|---|---|---|---|
| Broad Match | web design | web design | website creation, page building, UI design (loosely related) |
| Phrase Match | "web design" | "web design coimbatore" | best web design coimbatore, web design in coimbatore (must contain meaning) |
| Exact Match | [web design] | [web design coimbatore] | web design coimbatore, coimbatore web design (same intent only) |
- Start with Phrase Match for most keywords — good balance of reach vs control
- Use Exact Match for your top 10-15 converting keywords — maximum precision
- Avoid Broad Match on low budgets — wastes money on irrelevant searches
8 Negative Keywords
Negative keywords prevent your ad from showing on irrelevant searches. This is the #1 way to stop wasting budget.
Must-Add Negatives (Campaign Level)
free
template
tutorial
course
learn
download
job
salary
interview
wordpress theme
wix
squarespace
github
udemy
w3schools
pdf
youtube
samples
meaning
what is
How to Add
1 Go to Keywords → Negative Keywords tab
2 Click + → add at Campaign level (applies to all ad groups)
3 Paste keywords (one per line) → Save
4 Check Search Terms report weekly → add new negatives for irrelevant searches
9 Writing Effective Ads
Google Responsive Search Ads allow up to 15 headlines and 4 descriptions. Google mixes and matches them to find the best combination.
Headlines (max 30 characters each)
| # | Headline | Strategy |
|---|---|---|
| 1 | Web Design in Coimbatore | Keyword match (Quality Score) |
| 2 | Website in 7 Days | Speed USP |
| 3 | Starting at ₹25,000 | Price anchor |
| 4 | 100% Custom Design | Quality proof |
| 5 | Free Consultation Today | CTA + urgency |
| 6 | First Month FREE | Offer hook |
| 7 | Rated 5/5 by Clients | Social proof |
| 8 | Mobile-Ready & SEO Built | Technical benefit |
| 9 | 50+ Projects Delivered | Credibility |
| 10 | 24/7 Support Included | Risk reversal |
Descriptions (max 90 characters each)
| # | Description |
|---|---|
| 1 | Custom websites built for growth. SEO-optimized, mobile-ready. Get started today! |
| 2 | From design to launch in 7 days. First month hosting free. WhatsApp us now. |
| 3 | Professional web design starting ₹25K. Free consultation. 30 days free support. |
| 4 | India's talent-driven digital studio. 50+ projects. 100% satisfaction guaranteed. |
10 Ad Extensions (Free CTR Boost)
Extensions add extra information below your ad at no extra cost. They increase ad real estate and CTR by 10-20%.
| Extension | What It Shows | Example |
|---|---|---|
| Callouts | Short text highlights | Low cost websites · Website in 7 Days · Free Consultation · 30 Days Free Support |
| Sitelinks | Clickable links to subpages | Pricing | Portfolio | Contact Us | Our Services |
| Call | Phone number with click-to-call | Your business phone |
| Structured Snippets | Predefined categories | Services: Web Design, E-Commerce, CRM, SEO, Branding |
| Location | Business address + map | Coimbatore, Tamil Nadu |
| Price | Service pricing | Starter ₹25K | Growth ₹60K | Quantum ₹9K/mo |
11 Why Track Conversions?
Without conversion tracking, Google Ads is just an expensive traffic source. With it, Google knows which clicks lead to actual leads and optimizes for them.
| Without Tracking | With Tracking |
|---|---|
| You see clicks and spend | You see cost per lead |
| Optimize for clicks (useless) | Optimize for leads (valuable) |
| No idea which keywords convert | Exact keywords that bring leads |
| Smart Bidding doesn't work | Smart Bidding fully effective |
12 Global Site Tag (gtag.js)
The global site tag is the foundation. It goes on every page of your website.
The Code
<!-- GA4 + Google Ads gtag.js -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-MHBHJR0F1G"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
// GA4 — Analytics
gtag('config', 'G-MHBHJR0F1G');
// Google Ads — Primary Account (872-364-8500)
gtag('config', 'AW-8723648500');
// Google Ads — Lead Form Conversion
gtag('config', 'AW-16486891557');
</script>
Where This Lives
| Page | File | Status |
|---|---|---|
| Main Website | public/index.html | ✅ Installed |
| Pricing Page | public/pricing.html | ✅ Installed |
| Google LP | public/lp/google.html | ✅ Installed |
| Meta LP | public/lp/meta.html | ✅ Installed |
| Quantum LP | public/lp/quantum.html | ✅ Installed |
| Google LP (B) | public/lp/google-b.html | ✅ Installed |
gtag('config', 'ID') tells Google to load that tag. Multiple configs = multiple tracking systems from one script. GA4 tracks analytics, AW tracks ads.
13 Conversion Actions
A conversion action defines what counts as a valuable action. We have two types:
Type 1: GA4-Imported Conversion
// This event fires on form submit. GA4 records it.
// Google Ads imports it as a conversion action.
gtag('event', 'ads_conversion_Sign_up_1', {
send_to: 'G-MHBHJR0F1G', // Send to GA4
value: 1.0,
currency: 'INR'
});
// Setup: Google Ads → Goals → Import → GA4 → ads_conversion_Sign_up_1
Type 2: Direct Manual Conversion
// This fires a conversion directly to Google Ads.
// Faster reporting (3-6 hours vs 24-48 hours for GA4 import).
gtag('event', 'conversion', {
send_to: 'AW-16486891557/YOUR_LABEL', // Replace YOUR_LABEL from Google Ads → Goals → Conversions
value: 1.0,
currency: 'INR'
});
// Setup: Google Ads → Goals → New → Manual → "Submit lead form"
Our Conversion Map
| Action | Type | Event Name | Trigger |
|---|---|---|---|
| Contact form submit | GA4 Import | ads_conversion_Sign_up_1 | Form submit on any page |
| LP form submit | GA4 Import | ads_conversion_Sign_up_1 | Landing page form submit |
| Pricing view | GA4 Import | ads_conversion_Sign_up_1 | #pricing section viewed |
| Submit lead form | Direct Manual | conversion | AW-16486891557 |
14 Enhanced Conversions
Enhanced Conversions send hashed user data (email, phone) to Google Ads. This improves conversion attribution by 15-30%, especially when cookies are blocked.
Our Implementation
// Step 1: Define the function (in index.html <head>)
function setEnhancedConversionData(email, phone) {
if (typeof gtag !== 'function') return;
var data = {};
if (email) data.email = email.trim().toLowerCase();
if (phone) data.phone_number = phone.trim().replace(/\s/g, '');
gtag('set', 'user_data', data);
}
// Step 2: Call it on form submit (before conversion event)
// In the form handler:
var ecEmail = form.querySelector('[name="email"]').value.trim().toLowerCase();
var ecPhone = form.querySelector('[name="phone"]').value.trim();
gtag('set', 'user_data', { email: ecEmail, phone_number: ecPhone });
// Step 3: Then fire the conversion event
gtag('event', 'ads_conversion_Sign_up_1', {
send_to: 'G-MHBHJR0F1G', value: 1.0, currency: 'INR'
});
Enable in Google Ads
1 Go to Goals → Settings
2 Click Enhanced conversions → Turn ON
3 Select "Global site tag" as the method
4 Google will detect the gtag('set', 'user_data', ...) call from your code
15 GA4 Imported Conversions
Instead of adding conversion snippets to every page, you can fire a GA4 event and import it into Google Ads as a conversion.
Setup Steps
1 Fire a GA4 event on your site: gtag('event', 'ads_conversion_Sign_up_1', {send_to: 'G-MHBHJR0F1G'})
2 In Google Ads, go to Goals → Summary → + New conversion action
3 Select "Import" → "Google Analytics 4 properties"
4 Select your GA4 property (G-MHBHJR0F1G → 69dynamics)
5 Find ads_conversion_Sign_up_1 in the events list → Import
6 Set attribution: Data-driven, 90-day click-through
16 Our Tag Setup (Code Reference)
This is the exact tag setup on the 69dynamics website. Copy this pattern for any new pages.
Head Tags (add to every new page)
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-WBBTFDBJ');</script>
<!-- GA4 + Google Ads -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-MHBHJR0F1G"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-MHBHJR0F1G');
gtag('config', 'AW-8723648500');
gtag('config', 'AW-16486891557');
</script>
<!-- Meta Pixel -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '534810852968772');
fbq('track', 'PageView');
</script>
17 Our Landing Pages
| Page | URL | Traffic Source | Key Feature |
|---|---|---|---|
| Google LP | /lp/google | Google Search Ads | "Website in 7 Days" + form |
| Google LP (B) | /lp/google-b | A/B test variant | Different headline/layout |
| Meta LP | /lp/meta | Instagram/Facebook Ads | Instagram-optimized design |
| Quantum LP | /lp/quantum | CRM/ERP queries | Quantum product showcase |
| Main Site | / | Brand/organic | Full website with all services |
| Pricing | /pricing | Price comparison queries | Package comparison + CTA |
18 Form Submission Tracking (Full Code)
Every form submission fires multiple tracking events. Here's the complete flow:
// COMPLETE FORM SUBMIT TRACKING FLOW
// (from lp/google.html — same pattern on all forms)
lpForm.addEventListener('submit', async (e) => {
e.preventDefault();
// 1. Get UTM data (captured on page load)
const utm = getUTMParams();
// 2. Save lead to Firestore
await db.collection('inquiries').add({
name: form.querySelector('[name="name"]').value.trim(),
email: form.querySelector('[name="email"]').value.trim(),
phone: form.querySelector('[name="phone"]').value.trim(),
service: form.querySelector('[name="service"]').value,
source: 'landing-page-google',
utm: utm, // Full UTM data attached
timestamp: firebase.firestore.FieldValue.serverTimestamp()
});
// 3. Enhanced Conversions — hash user data for Google Ads
var email = form.querySelector('[name="email"]').value.trim().toLowerCase();
var phone = form.querySelector('[name="phone"]').value.trim();
gtag('set', 'user_data', { email: email, phone_number: phone });
// 4. GA4 Lead Event
gtag('event', 'generate_lead', {
event_category: 'conversion',
event_label: utm.utm_campaign || 'google-lp',
value: 1,
currency: 'INR'
});
// 5. GA4 Imported Conversion (→ Google Ads)
gtag('event', 'ads_conversion_Sign_up_1', {
send_to: 'G-MHBHJR0F1G',
value: 1.0,
currency: 'INR'
});
// 6. Meta Pixel Lead Event
fbq('track', 'Lead', {
content_name: utm.utm_campaign || 'google-lp',
content_category: form.querySelector('[name="service"]').value
});
// 7. Log to Cloud Function for admin analytics
fetch('/api/logConversionEvent', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
type: 'form_submit',
label: 'landing-page',
page: window.location.pathname
})
});
});
19 UTM & Click ID Capture
Every page automatically captures UTM parameters and advertising click IDs from the URL.
What Gets Captured
| Parameter | Source | Example |
|---|---|---|
utm_source | Traffic source | google, facebook, newsletter |
utm_medium | Channel | cpc, social, email |
utm_campaign | Campaign name | web-dev-cbe-mar26 |
utm_term | Keyword (auto) | web design coimbatore |
utm_content | Ad variation | headline-a, headline-b |
gclid | Google Click ID | Auto-appended by Google Ads |
gbraid | Google (iOS) | Privacy-safe iOS attribution |
wbraid | Google (web) | Web-to-app attribution |
fbclid | Meta Click ID | Auto-appended by Meta Ads |
The Capture Code
function captureUtmParams() {
const params = new URLSearchParams(window.location.search);
const utmKeys = ['utm_source','utm_medium','utm_campaign','utm_term','utm_content'];
const hasUtm = utmKeys.some(k => params.get(k));
if (hasUtm) {
const utmData = {};
utmKeys.forEach(k => { if (params.get(k)) utmData[k] = params.get(k); });
utmData.landing_page = window.location.pathname;
utmData.captured_at = new Date().toISOString();
// Google Click IDs
if (params.get('gclid')) utmData.gclid = params.get('gclid');
if (params.get('gbraid')) utmData.gbraid = params.get('gbraid');
if (params.get('wbraid')) utmData.wbraid = params.get('wbraid');
// Meta Click ID
if (params.get('fbclid')) utmData.fbclid = params.get('fbclid');
sessionStorage.setItem('utm_data', JSON.stringify(utmData));
}
}
// Called on every page load in app.js
20 Admin Google Ads Dashboard
All lead data flows into the admin panel under Campaigns → Google Ads tab.
What It Shows
| Component | Data |
|---|---|
| 6 KPI Cards | Total Ads Leads, Avg Score, Hot Leads, This Month, gclid Captured, Conversion Rate |
| Line Chart | Leads over time (daily/weekly) |
| Doughnut Chart | Lead source breakdown (Google vs Meta vs Direct) |
| Bar Chart | Leads per campaign (utm_campaign) |
| Bar Chart | Lead score distribution (Hot/Warm/Cold) |
| Leads Table | All Google Ads leads with filters, search, CSV export |
How Leads Are Detected as "Google Ads"
// A lead is classified as Google Ads if ANY of these are true:
const isGoogleAd = (lead) => {
return lead.gclid || // Google Click ID present
lead.gbraid || lead.wbraid || // iOS/web click IDs
lead.utm_source === 'google' || // UTM source is google
(lead.utm && lead.utm.gclid) || // UTM object has gclid
(lead.utm && lead.utm.utm_source === 'google');
};
21 Quality Score (The #1 Lever)
Ad Rank = Quality Score × Max CPC. A QS of 10 means you pay ~50% less than a competitor with QS 5 for the same position.
| Factor | Weight | How to Maximize |
|---|---|---|
| Expected CTR | ~39% | Specific headlines matching search intent, numbers, CTAs |
| Ad Relevance | ~22% | Keyword appears in headline AND description |
| Landing Page | ~39% | Fast load (Firebase CDN), mobile-friendly, content matches ad |
22 Bidding Strategies
| Strategy | Best For | Requirements |
|---|---|---|
| Manual CPC | Low budget (₹300-500/day) | None — full control |
| Enhanced CPC | Medium budget | Some conversion data |
| Maximize Clicks | New campaigns | Set max CPC cap (₹20-25) |
| Maximize Conversions | Scaling | 30+ conversions/month |
| Target CPA | Mature campaigns | 50+ conversions/month + known CPA |
Suggested Bids Per Ad Group
| Ad Group | Suggested CPC | Reasoning |
|---|---|---|
| High Intent - Buy Now | ₹20-25 | Highest conversion probability |
| Exact Match - Top Priority | ₹18-22 | Precise targeting, less waste |
| Low Cost Website | ₹12-18 | Price-sensitive but ready |
| Tamil Nadu Geo | ₹8-12 | Low competition |
| All Others | ₹8-15 | Test and adjust |
23 Low Budget Domination Strategy
Top Ad Position = (Quality Score × Bid) > Competitors
Your Play:
┌────────────────────────────────────────────────┐
│ 1. High Quality Score (8-10) │
│ 2. Long-tail keywords (₹5-15 CPC) │
│ 3. Tight ad groups (1 theme each) │
│ 4. Fast landing pages (Firebase CDN <1s) │
│ 5. All extensions enabled (+15% CTR) │
│ 6. Aggressive negative keywords (save 30%) │
│ 7. Geo + schedule targeting (focused spend) │
│ = TOP 1-3 at ₹8-15/click │
│ while competitors pay ₹30-50+ │
└────────────────────────────────────────────────┘
24 Ad Schedule & Geo Targeting
| Setting | Value | Why |
|---|---|---|
| Location | Coimbatore + 30km | Focus on serviceable area |
| Extra Locations | Erode, Tirupur, Salem, Pollachi | Nearby cities, low competition |
| Schedule | Mon-Sat 8 AM - 9 PM | Business hours only |
| Mobile Bid | +20% | Most local searches are mobile |
| Desktop Bid | -20% | Lower conversion rate on desktop |
25 A/B Testing Ads
We have two Google landing pages: /lp/google (A) and /lp/google-b (B).
What to Test
| Element | Version A | Version B |
|---|---|---|
| Headline | "Website in 7 Days" | "Professional Web Design" |
| CTA Button | "Get Free Quote" | "Start My Project" |
| Social Proof | Star rating | Client count |
| Form Length | 5 fields | 3 fields |
How to Run A/B Test
1 Create 2 ads in the same ad group with different Final URLs (/lp/google vs /lp/google-b)
2 Set Ad Rotation to "Do not optimize" for even distribution
3 Run for 2-4 weeks until sufficient data (100+ clicks per variant)
4 Compare: CTR, Conversion Rate, Cost Per Conversion
5 Pause the loser, iterate on the winner
26 Keyword Research
Free Tools
| Tool | URL | Use For |
|---|---|---|
| Google Keyword Planner | Inside Google Ads → Tools | Search volume, CPC estimates, competition |
| Google Autocomplete | Type in Google Search | Real-time suggestion mining |
| Google "People also ask" | In search results | Question-based keywords |
| AnswerThePublic | answerthepublic.com | Question mapping around topics |
| Ubersuggest | neilpatel.com/ubersuggest | Keyword ideas + competitor analysis |
Finding High-Value Keywords
- Start with your services: "web design", "CRM software", "e-commerce"
- Add location: "web design coimbatore", "web design tamil nadu"
- Add modifiers: "best", "affordable", "professional", "near me"
- Add intent words: "cost", "price", "hire", "quote", "company"
- Check Keyword Planner for volume and CPC
- Pick keywords with 100-1000 monthly searches and CPC under ₹30
27 Key Metrics Glossary
| Metric | Formula | Good Target |
|---|---|---|
| CTR | Clicks ÷ Impressions × 100 | 3-8% for Search |
| CPC | Total Cost ÷ Clicks | ₹8-25 (India local) |
| Conversion Rate | Conversions ÷ Clicks × 100 | 5-15% for landing pages |
| Cost Per Lead | Total Cost ÷ Conversions | ₹100-500 for services |
| ROAS | Revenue ÷ Ad Spend | 3x+ (₹3 revenue per ₹1 spent) |
| Quality Score | Google's proprietary score | 7+ (aim for 8-10) |
| Impression Share | Your impressions ÷ eligible impressions | 60%+ on top keywords |
| Search Impression Share (Top) | Times shown in top positions ÷ eligible | 50%+ for brand terms |
28 Launch Checklist
Before Launch
- ☐ Conversion tracking verified (Google Ads Tag Assistant)
- ☐ Enhanced Conversions enabled
- ☐ All ad extensions added (callouts, sitelinks, call, structured snippets)
- ☐ Negative keywords added (20+ campaign-level negatives)
- ☐ Ad schedule set (business hours only)
- ☐ Location targeting set (Coimbatore + radius)
- ☐ Display Network UNCHECKED
- ☐ Search Partners UNCHECKED
- ☐ Landing pages tested on mobile
- ☐ UTM parameters verified in Firestore
Weekly Maintenance
- ☐ Review Search Terms → add negatives
- ☐ Check Quality Score per keyword → optimize low scores
- ☐ Compare ad variations → pause underperformers
- ☐ Review geographic performance → exclude low-ROI areas
- ☐ Check device bids → adjust mobile/desktop split
- ☐ Review admin dashboard → Google Ads tab for lead quality
29 Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
| Ads not showing | Low bids, low QS, or budget exhausted | Increase bid, improve ad relevance, check daily budget |
| High CPC | Low Quality Score or competitive keywords | Improve QS (landing page + ad relevance), use long-tail keywords |
| Low CTR | Ad copy not compelling | Test new headlines, add numbers ("7 Days", "₹25K"), add urgency |
| Clicks but no conversions | Landing page mismatch or form too long | Match LP to ad promise, shorten form, add trust signals |
| Conversions not tracking | Tag not firing | Use Google Tag Assistant to debug, check gtag('config') is present |
| "Limited by budget" | Daily budget too low for keywords | Reduce keywords, focus on top performers, increase budget |
| Irrelevant search terms | Missing negative keywords | Check Search Terms weekly, add negatives aggressively |
| Google Ads leads not in admin | UTM/gclid not captured | Verify captureUtmParams() runs on landing page |