We audit dozens of Google Ads accounts for Singapore businesses every quarter. The single most common problem? Missing or broken conversion tracking. Without it, you are paying for clicks with no idea which ones become customers.
That is not a minor oversight. In a market where CPCs regularly hit S$5 to S$15+ per click for competitive keywords, every untracked conversion is money you cannot account for. Worse, Google's Smart Bidding strategies rely entirely on conversion data. No tracking means no optimisation, which means your campaigns are flying blind.
This guide walks you through Google Ads conversion tracking setup from start to finish: choosing the right tracking method, configuring Google Tag Manager, tracking WhatsApp clicks (critical for Singapore businesses), setting up enhanced conversions, and making it all work on static sites. Whether you are setting up tracking for the first time or fixing a broken implementation, everything you need is here.
New to Google Ads entirely? Start with our beginner's Google Ads guide for Singapore SMEs first, then come back here to set up tracking.
What is conversion tracking and why Singapore businesses cannot afford to skip it
Conversion tracking tells you what happens after someone clicks your ad. Did they fill in your contact form? Click your WhatsApp button? Call your office? Buy something? Without tracking, all you see is clicks and spend. With it, you see the full picture: which keywords, ads, and campaigns actually generate business.
For Singapore businesses, skipping conversion tracking is especially costly because of three factors:
- High CPCs: Singapore is one of the most expensive Google Ads markets in Southeast Asia. At S$3 to S$8 per click for most service industries, even a small campaign burns through S$1,500 to S$3,000 per month. If you cannot prove which clicks convert, you cannot justify the spend.
- Smart Bidding dependency: Google's best bidding strategies (Target CPA, Target ROAS, Maximise Conversions) require conversion data to function. Without it, you are stuck on manual CPC or Maximise Clicks, both of which optimise for volume, not value.
- WhatsApp-dominant market: Unlike Western markets where most conversions happen through forms and checkouts, a huge share of Singapore business enquiries happen via WhatsApp. If you are not tracking WhatsApp clicks as conversions, you are massively under-reporting your results.
The bottom line: conversion tracking is not optional. It is the foundation of every profitable Google Ads campaign. For a broader look at measuring digital marketing ROI in Singapore, that guide covers the full picture beyond just ads.
Google Ads tag vs GA4 import: which tracking method to use
Before you set anything up, you need to make a decision. Google gives you two ways to track conversions:
- Google Ads conversion tag: A dedicated tracking tag that fires directly from your website when a conversion happens. Data goes straight to Google Ads.
- GA4 import: You track events in Google Analytics 4 (as "key events"), then import those events into Google Ads as conversions.
Both work. But they are not interchangeable, and the choice affects your campaign performance.
When to use the Google Ads tag (recommended for primary conversions):
- More accurate for Smart Bidding. Google's own data shows the native tag captures 10 to 20% more conversions than GA4 imports because it uses first-party cookies tied directly to the Google Ads click ID (GCLID).
- Better for short conversion windows. If most of your leads convert within 7 days (common for Singapore service businesses), the native tag is more responsive.
- Supports enhanced conversions natively (more on this later).
When to use GA4 import (recommended for secondary conversions and cross-channel view):
- Useful for tracking micro-conversions like page scroll depth, video views, or time on site.
- Gives you a unified view across all traffic sources in GA4, not just Google Ads.
- Better for longer customer journeys where someone might click an ad, leave, and return through organic search before converting.
Our recommendation: Use both. Set up the Google Ads conversion tag for your primary conversions (form submissions, WhatsApp clicks, phone calls) because Smart Bidding works best with this data. Then import GA4 key events as secondary conversions for the softer engagement signals. This gives you the best of both worlds.
If you have not set up GA4 yet, follow our GA4 setup guide for Singapore businesses first.
Step-by-step: setting up conversion tracking with Google Tag Manager
Google Tag Manager (GTM) is the cleanest way to implement conversion tracking. It keeps all your tags in one place, requires no code changes after the initial install, and makes testing straightforward. Here is how to set it up from scratch.
Step 1: Install Google Tag Manager on your website
If GTM is not on your site yet, create a free account at tagmanager.google.com. Google gives you two code snippets: one goes in the <head> tag, the other immediately after the opening <body> tag.
For Astro or other static sites, add these snippets to your base layout file so they appear on every page. If you are on WordPress, use a plugin like "Google Tag Manager for WordPress" or add the snippets to your theme's header.php.
Step 2: Create a conversion action in Google Ads
In your Google Ads account, navigate to Goals > Conversions > Summary, then click + New conversion action. Choose Website as the conversion source.
Configure these settings carefully:
- Conversion name: Something descriptive. "Contact Form Submission" or "WhatsApp Click" is better than "Conversion 1."
- Value: For lead generation, assign an estimated value (e.g. S$50 per lead). For e-commerce, use dynamic values.
- Count: Choose "One" for lead-gen conversions (you only want to count one form submission per click). Choose "Every" for purchases.
- Click-through conversion window: 30 days is the default and works for most Singapore businesses. Shorten to 7 to 14 days if your sales cycle is fast.
- Attribution model: Data-driven is the default in 2026 and the best choice if you have enough conversion volume (30+ per month). Otherwise, use last click.
After saving, Google shows you a Conversion ID and Conversion Label. Copy both. You will need them in GTM.
Step 3: Create the Conversion Linker tag in GTM
This is a step many guides skip, and it causes tracking failures. The Conversion Linker tag stores click information (the GCLID) in first-party cookies so Google can attribute conversions back to the correct ad click.
In GTM, create a new tag with type Conversion Linker. Set the trigger to All Pages. That is it. No additional configuration needed. Publish this before anything else.
Step 4: Create the Google Ads Conversion Tracking tag
Create another new tag in GTM:
- Tag type: Google Ads Conversion Tracking
- Conversion ID: Paste the ID from step 2
- Conversion Label: Paste the label from step 2
- Conversion Value: Enter a static value or use a variable for dynamic values
For the trigger, do not use "All Pages" (unless you are tracking page views as conversions, which is rare). Instead, create a specific trigger for your conversion event. We cover the most common triggers in the next section.
Step 5: Test with GTM Preview mode and Tag Assistant
Before publishing, click Preview in GTM. This opens your website in debug mode where you can see exactly which tags fire on each action. Navigate to your site, trigger a conversion (submit a test form, click your WhatsApp link), and verify that:
- The Conversion Linker tag fires on page load
- The Google Ads Conversion Tracking tag fires when you perform the conversion action
- No tags show errors or "not fired" status
After confirming, publish your GTM container. Back in Google Ads, the conversion action status will change from "Unverified" to "No recent conversions" and eventually to "Recording conversions" once the first conversion comes in (allow 24 to 48 hours).
Tracking WhatsApp clicks as Google Ads conversions
This is the section you will not find in any global Google Ads guide, and it is arguably the most important one for Singapore businesses.
WhatsApp is used by over 74% of Singapore's population. For service businesses (clinics, salons, tuition centres, renovation firms, F&B), WhatsApp is often the primary enquiry channel. Customers see your ad, land on your site, and tap the WhatsApp button instead of filling in a form. If you are not tracking those clicks, you are massively under-counting your conversions and starving Smart Bidding of data.
Here is how to set it up in GTM, step by step.
Method 1: Track wa.me and api.whatsapp.com link clicks
This is the simplest method and works for any WhatsApp link on your site, whether it is a floating widget, a button, or a text link.
Step 1: Create a Click URL variable in GTM
Go to Variables > Built-In Variables > Configure and enable Click URL if it is not already active. This captures the URL of any link a user clicks.
Step 2: Create a trigger for WhatsApp clicks
Create a new trigger with these settings:
- Trigger type: Click - Just Links
- This trigger fires on: Some Link Clicks
- Condition: Click URL contains
wa.me
If your site also uses api.whatsapp.com URLs, add a second condition with OR logic: Click URL contains api.whatsapp.com.
Name this trigger something clear, like "Trigger - WhatsApp Click."
Step 3: Create the conversion tag
Create a new Google Ads Conversion Tracking tag using the Conversion ID and Label from a dedicated "WhatsApp Click" conversion action in Google Ads (follow step 2 from the previous section to create this). Set the trigger to the WhatsApp click trigger you just created.
Step 4: Test it
Open GTM Preview mode. Click your WhatsApp button on the site. In the debug panel, you should see:
- A "Link Click" event in the event timeline
- Your "Trigger - WhatsApp Click" trigger matched
- The Google Ads Conversion Tracking tag fired successfully
Method 2: Fire a custom dataLayer event on widget click
If your WhatsApp widget is a JavaScript-powered component (common on React or Astro sites), the link click trigger may not catch it because the widget might use window.open() instead of a standard anchor tag. In that case, push a custom event to the dataLayer when the widget is clicked:
// Add this to your WhatsApp widget click handler
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'whatsapp_click',
whatsapp_number: '+6581234567'
});Then in GTM, create a Custom Event trigger with the event name whatsapp_click and attach your conversion tag to it.
Going further: attributing WhatsApp leads back to specific ads
The limitation of click tracking is that you know someone clicked WhatsApp, but you do not know what they said or whether the conversation became a real lead. To bridge this gap, consider appending a reference to the WhatsApp message itself.
You can dynamically add the GCLID (Google Click ID) or a UTM-based reference code to the pre-filled WhatsApp message. When a lead messages you with "Hi, I'm interested in your web design services [Ref: GC-abc123]," you can manually match that back to the Google Ads click. This is not fully automated, but for Singapore SMEs handling 10 to 50 enquiries per month, it is practical and highly valuable.
For a deeper look at using WhatsApp for business growth, read our WhatsApp marketing guide for Singapore businesses.
Tracking phone calls and form submissions
WhatsApp is not the only conversion channel. Here is how to track the other two common conversion types for Singapore businesses.
Phone call tracking (+65 numbers)
There are two ways to track calls from Google Ads:
Google Ads call extensions and call-only ads: If you use call extensions in your ads, Google can track calls directly. These work with Singapore +65 numbers. In your Google Ads account, go to Goals > Conversions > New conversion action > Phone calls and choose "Calls from ads using call extensions." Set a minimum call duration (we recommend 30 seconds for Singapore service businesses, since shorter calls are often misdials).
Website call button clicks: For calls initiated from your website (tapping a "Call Now" button), use GTM to track clicks on tel: links. Create a trigger identical to the WhatsApp setup above, but with the condition: Click URL starts with tel:. Attach a Google Ads Conversion Tracking tag to this trigger.
One limitation: tracking tel: link clicks tells you someone tapped the button, not that a call actually connected. For most Singapore SMEs, this is accurate enough. True call tracking with dynamic number insertion (where Google replaces your number with a forwarding number) has limited availability in Singapore.
Form submission tracking
Form submissions are the most straightforward conversion to track. There are two reliable methods:
Thank-you page method (simplest): If your form redirects to a dedicated thank-you page (e.g. /thank-you), create a Page View trigger in GTM that fires only when the page URL equals your thank-you page path. Attach your conversion tag to this trigger. Simple, reliable, and hard to break.
Form submission event method (more flexible): If your form does not redirect (e.g. it shows a success message on the same page), you need to fire a custom event. Push to the dataLayer when the form submits successfully:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'form_submission',
form_name: 'contact_form'
});In GTM, create a Custom Event trigger for form_submission and attach your conversion tag.
If you are using a third-party form service like Web3Forms, Formspree, or Typeform, the thank-you page method is usually the most reliable option since you may not have control over the form's JavaScript events.
Enhanced conversions: recovering lost data in a privacy-first world
Browser privacy changes are eroding cookie-based tracking. Safari blocks third-party cookies entirely. Chrome is rolling out Privacy Sandbox. Ad blockers are everywhere. The result: conversion tracking misses an increasing number of actual conversions.
Enhanced conversions fix this. When a user converts, enhanced conversions capture first-party data (email address, phone number, name) from your form, hash it using SHA-256, and send the hashed data to Google. Google matches this against signed-in user data to attribute the conversion even when cookies are blocked or expired.
Google reports that enhanced conversions recover 5 to 15% of previously untracked conversions. For a Singapore business spending S$5,000 per month on ads, that could mean 5 to 15 additional conversions per month being properly counted and fed into Smart Bidding.
Setting up enhanced conversions in GTM
- Enable in Google Ads: Go to Goals > Conversions > Settings > Enhanced conversions. Turn it on and select "Google Tag Manager" as the implementation method.
- Configure your Google tag in GTM: Open your Google Ads Conversion Tracking tag. Under "Include user-provided data from your website," turn this on and select "New variable."
- Map your form fields: Create a User-Provided Data variable that maps your form fields to Google's expected data points: email, phone number, first name, last name, street address, city, country. At minimum, map the email field. Each additional field improves match rates.
- Test: In GTM Preview mode, submit a test form. Check that the conversion tag fires and that the user-provided data variable populates with hashed values (you will see SHA-256 hashes, not plain text).
PDPA considerations for Singapore businesses
Singapore's Personal Data Protection Act (PDPA) requires businesses to obtain consent before collecting and using personal data. Enhanced conversions use hashed first-party data, which is still considered personal data under PDPA.
To stay compliant:
- Include a clear privacy notice on your forms explaining that data may be used for advertising measurement
- Add a consent checkbox if your form collects data beyond what is necessary for the enquiry
- Update your privacy policy to mention conversion tracking and data hashing
- Keep records of consent (your form submission logs serve as evidence)
The good news: because enhanced conversions hash the data before it leaves the browser, Google never sees the raw email or phone number. This is a privacy-friendly approach, but the PDPA obligation to inform and obtain consent still applies.
For a broader overview of website compliance, see our PDPA compliance guide for Singapore websites.
Conversion tracking on static sites (Astro, Next.js, JAMstack)
Most conversion tracking guides assume you are on WordPress or Shopify. If your site is built on a modern static framework like Astro, Next.js, or any JAMstack architecture, there are a few extra considerations.
The challenge
Static sites do not have traditional server-side form processing. Forms either submit to third-party APIs or use serverless functions. Page navigation may be handled client-side (view transitions) rather than full page reloads. This means thank-you page triggers and standard form submission events may not work out of the box.
Solution 1: GTM handles everything client-side (recommended)
Add the GTM snippet to your base layout file (in Astro, that is BaseLayout.astro; in Next.js, _app.tsx or your root layout). GTM fires on every page load and listens for events regardless of how the site is built. For most static sites, this is all you need.
Solution 2: dataLayer push events for custom conversions
If your site uses React components for forms (common in Astro + React hybrid setups), fire a dataLayer event from the component's success handler:
// Inside your React form component
const handleSubmit = async (data) => {
const response = await fetch('/api/contact', {
method: 'POST',
body: JSON.stringify(data),
});
if (response.ok) {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'form_submission',
form_name: 'quote_request',
});
}
};GTM picks up this custom event and fires the conversion tag. This approach works regardless of whether the form redirects or shows an inline success message.
Solution 3: Handling view transitions
If your static site uses client-side navigation (Astro's View Transitions, Next.js App Router), GTM tags set to fire on "Page View" may not re-fire on subsequent navigations because the page does not fully reload. To fix this, push a virtual page view event after each navigation:
document.addEventListener('astro:page-load', () => {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'virtual_page_view',
page_path: window.location.pathname,
});
});In GTM, create a Custom Event trigger for virtual_page_view and use it alongside your All Pages trigger to ensure tags fire on every navigation.
Performance tip: Partytown for offloading GTM
GTM adds roughly 80 to 100 KB of JavaScript to your site. On a performance-optimised static site, that matters. Partytown is a library that moves third-party scripts (including GTM) into a web worker, keeping them off the main thread. Astro has a built-in Partytown integration. This preserves your Core Web Vitals scores while keeping full tracking functionality.
Troubleshooting: why your conversions are not tracking
You have set everything up, but conversions are not appearing in Google Ads. Here are the most common causes and how to fix them.
"No recent conversions" status
- Conversion Linker tag is missing: This is the number one cause. Without the Conversion Linker, Google cannot attribute conversions back to ad clicks. Check GTM and make sure this tag exists and fires on All Pages.
- Tag is not firing: Open GTM Preview mode and trigger your conversion action. If the tag does not fire, your trigger configuration is wrong. Double-check the trigger conditions (URL match, click URL, event name).
- Conversion ID or Label is wrong: A single mistyped character will break tracking. Copy the values directly from Google Ads instead of typing them manually.
- Allow 24 to 48 hours: New conversion actions take time to start recording. If you just set it up today, check again tomorrow.
Duplicate conversions
- Multiple tags firing for the same action: If you have both a Google Ads tag and a GA4 import tracking the same conversion, and both are set as primary conversions, you will get double-counted data. Set one as primary and the other as secondary.
- Count setting is wrong: For lead-gen conversions (forms, calls, WhatsApp clicks), set the count to "One." The "Every" setting counts each repeat action from the same user, inflating your numbers.
- Missing transaction ID: For e-commerce, always pass a unique transaction ID with each conversion. This lets Google deduplicate if the same conversion fires twice (e.g. if a customer refreshes the thank-you page).
Google Ads and GA4 showing different conversion numbers
This is normal, not a bug. The two platforms count conversions differently:
- Attribution models: Google Ads uses data-driven attribution by default; GA4 uses last-click. The same conversion may be attributed to different channels.
- Conversion windows: Google Ads defaults to a 30-day click-through window; GA4 defaults to 30 days but measures differently.
- Reporting dates: Google Ads attributes conversions to the click date, not the conversion date. If someone clicks on 1 March and converts on 10 March, Google Ads shows it under 1 March. GA4 shows it under 10 March.
Expect a 10 to 20% variance between platforms. If the gap is larger, check for missing tags or duplicate tracking.
Conversions not feeding Smart Bidding
If your Smart Bidding campaigns are not optimising despite having conversion data:
- Check primary vs secondary: Only primary conversions feed Smart Bidding. Go to Goals > Conversions and verify your main conversion actions are set as primary.
- Volume threshold: Smart Bidding needs roughly 30 conversions per month per campaign to work well. If you are below this, consider consolidating campaigns or using a broader conversion action (e.g. "All enquiries" instead of separate actions for forms and WhatsApp).
- Budget constraints: If your daily budget runs out by midday, Smart Bidding cannot learn properly. For more on budgeting, see our Google Ads cost breakdown for Singapore.
If you have followed this guide, you now have proper conversion tracking in place: a Conversion Linker tag, dedicated conversion actions for forms, WhatsApp clicks, and phone calls, enhanced conversions for privacy-resilient data, and a setup that works on static sites.
That is the foundation. The next step is using this data to optimise. With conversion tracking feeding accurate data into Google Ads, you can switch to Smart Bidding strategies like Target CPA or Maximise Conversions and let Google's machine learning find you more customers at a lower cost. You can build remarketing audiences from converters, test different ad copy against actual conversion rates, and finally answer the question every business owner asks: "Is my Google Ads spend actually working?"
Use our free Google Ads ROI calculator to model what proper tracking and optimisation could mean for your bottom line. Or if you want someone to handle the technical setup and ongoing management, learn about our Google Ads management service for Singapore businesses.
Written by
Terris
Founder & Lead Strategist
Terris has over 8 years of experience in digital marketing strategy for Singapore businesses. From Google Ads to SEO to content marketing, he helps SMEs maximise their online presence and generate qualified leads.
Want to see these strategies in action? Browse our portfolio or get in touch to discuss your project.