Monday morning in a Singapore B2B account: Search and Performance Max look healthy on form fills and WhatsApp enquiries, CPCs sit in a familiar SGD band, and Smart Bidding is chasing volume. Sales closes the week with three paid deals from Central and East leads. Google Ads still thinks the winners were the same as the tyre-kickers who never answered a call. That gap is the job this guide finishes.
Offline conversion tracking (often called offline conversion import) is how you push CRM closed-won outcomes - signed SOWs, paid deposits, booked jobs after a site visit - back into Google Ads with the original click identifiers. Done properly, bidding optimises toward revenue and qualified pipeline in SGD, not raw lead count. “Done” means a repeatable export, matched GCLID (or enhanced conversion identifiers), a conversion action reserved for real closes, and a weekly upload cadence your finance or sales ops can sustain without heroics.
This is a Singapore-native how-to for marketing leads who already run Google Ads and own the cost-per-qualified-lead number. You will set prerequisites, walk a numbered import path, and see where SG accounts usually ship a broken version of the same setup.
What must already be true before any CRM row hits Google Ads
Skip the plumbing and the upload “succeeds” while Smart Bidding still learns on junk. Confirm these before you touch Tools and settings.
Google Ads access and conversion hygiene. You need admin or standard access on the Google Ads account that generated the clicks - usually the same MCC child account spending SGD in Singapore Search. Create (or reserve) a conversion action whose category and counting method match closed revenue or closed-won deals, not “Submit lead form”. Primary conversions used for bidding should not mix form fills and closes in one action. If form fills remain a primary goal, keep closes as a separate primary or as a secondary that you later promote once volume is stable.
Click identifiers on every paid lead. Offline import only works when the CRM row can be tied back to the Google click. That means GCLID captured on the landing page (and ideally wbraid/gbraid where Google provides them), stored on the lead or opportunity, and never overwritten on nurture updates. Enhanced Conversions for leads (hashed email/phone) help when GCLID is missing, but they are a complement, not a substitute for clean click IDs on high-intent Search traffic. Singapore traffic is heavily mobile; WhatsApp and PayNow-style handoffs often strip query strings if your redirect or chat widget drops UTMs and GCLID. Fix capture before you celebrate an upload.
CRM fields sales actually fills. At minimum you need: Google click ID (GCLID), conversion time of the close (timezone-aware, usually Asia/Singapore), conversion value in SGD if you bid to value, and a stable conversion name that matches the Google Ads action exactly. Closed-won stage, opportunity ID, and owner help you audit mismatches later. If SDRs mark “won” when a meeting is booked, your bidding will chase meetings, not revenue - align the definition with finance.
Consent, PDPA, and first-party honesty. You are sending business outcome data tied to ad clicks. Keep the data minimised to what Google’s import needs, hash PII when you use enhanced conversions, and make sure your privacy notice covers advertising measurement. Do not invent customer emails to force a match.
Landing and form path that can hold the ID. Dedicated landing pages with server-side or GTM-captured GCLID into hidden fields beat homepage forms. If Instant Forms or third-party widgets are in the mix, plan how the lead lands in CRM with the click ID intact. When post-click proof is weak - long forms, buried CTAs, slow INP - you will import fewer true closes even with perfect uploads; session behaviour tools like HeyLead Insights help you see where qualified intent drops before sales ever gets a row worth exporting.
If tracking foundations are still messy, start with a clean conversion setup review rather than forcing offline imports on top of broken web tags. HeyLead’s offline conversion tracking for SEM / Google Ads in Singapore work sits on that same stack: click ID capture, CRM stage truth, and bidding that can finally see closes.
Wire CRM closes into Google Ads: Singapore how-to
Follow this sequence end to end once. After the first successful matched upload, turn it into a weekly ops habit rather than a one-off project.
How-to
-
Freeze the conversion definition. In Google Ads, open Goals → Conversions → Summary. Create a new conversion action for offline closes (name it plainly, e.g. CRM_Closed_Won_SGD). Set source to import / offline, counting to One (a deal closes once), and attribution to a data-driven model when eligible. If you optimise to value, enable value and decide whether GST-inclusive revenue or net is the number sales and finance both accept. Do not reuse the website “form submit” action for this.
-
Confirm GCLID (and related IDs) land in CRM. Click a live Search ad with a test query, complete the form or WhatsApp handoff path you actually use, and inspect the CRM lead. You should see a long GCLID string stored on create - not blank, not truncated. If the lead arrived via a multi-step redirect (payment page, calendar, chat), fix the parameter passthrough before step 3. Document the field API name so exports do not drift.
-
Build the export view sales will not break. In HubSpot, Salesforce, Dynamics, or your SG-friendly CRM, create a saved view: stage = closed-won (or paid deposit), original source contains Google / CPC, GCLID is not empty, close date in the last 7-90 days depending on your sales cycle. Include conversion_time as the actual close timestamp in SGT, conversion_value in SGD, and order_id or opportunity_id for dedupe. Exclude internal test deals and partner referrals that never had a paid click.
-
Map columns to Google’s import template. Download the offline conversion template from Google Ads (or use the Data Manager / scheduled upload path your account supports). Required columns typically include Google Click ID, Conversion Name (exact match to the action name), Conversion Time (with timezone offset or explicit timezone), and optionally Conversion Value and Currency code SGD. One mismatched conversion name and the whole file rejects or silently fails to attribute.
-
Normalise time and money. Conversion time must fall after the click time and within Google’s allowed lookback. Singapore teams often break this by exporting “close date” at midnight without timezone, or by using the lead-created time instead of won time. Use Asia/Singapore consistently. Values should be the revenue figure you want bidding to prefer - if half your “wins” are SGD 0 placeholders, strip them or Smart Bidding learns the wrong lesson.
-
Run a small test upload first. Take 5-15 real closed rows with known GCLIDs from the last fortnight. Upload via Conversions → Uploads (or your linked Data Manager connection). Wait for processing, then check Diagnostics: matched vs unmatched, errors, and which conversion action received credit. Open a converted click path in Google Ads and confirm the offline conversion appears against the expected campaign and keyword or asset group.
-
Reconcile against CRM, not against the platform’s vanity CPA. For the test week, list closed-won deals from Google-sourced opportunities and tick which ones show in Google Ads. Expect some unmatched rows (expired click windows, missing IDs, iOS friction). Your target is a high match rate on GCLID-backed Search leads, not 100% of all revenue in the company. Note the unmatched reasons in a simple sheet so sales ops can fix capture upstream.
-
Decide bidding role for the new action. Once match quality looks solid, set CRM_Closed_Won_SGD as a primary conversion for the campaigns that should optimise to closes (often high-intent Search first; Performance Max only after you trust volume). Keep lead-form conversions as observation or secondary if they still flood the account. Give Smart Bidding enough conversion history before you judge ROAS - Smart Bidding needs roughly 30-50 offline conversions per month per campaign to exit learning mode reliably - if your SG close volume is below that, consider consolidating campaigns before switching primary goals.
-
Schedule the cadence and ownership. Weekly uploads suit most SG mid-market cycles; longer B2B cycles may batch every 3-7 days with a rolling lookback so late closes still land. Assign one owner (marketing ops or the agency pod) and one backup. Automate CSV generation from CRM if you can; manual spreadsheet edits are where conversion names and timezones rot. Log each upload file name and row count so you can audit a bad week.
-
Protect the rest of the measurement stack. Keep Enhanced Conversions and consent mode configured on site tags so browser-side leads still enrich when possible. Use consistent UTM discipline on non-Google channels so CRM source fields stay trustworthy when you filter Google-only closes. Re-check landing page speed and form completion - mobile still drives a large share of paid clicks while converting softer than desktop, so a slow SG-hosted page quietly starves the offline pipeline.
-
Review search terms and negatives with close data in view. After two to four weeks of imports, pull search terms and asset-group reports sliced by the offline conversion. Kill queries that create cheap forms but never close. This is where offline tracking pays rent: 20-30% of SEM budgets often leak to irrelevant queries and weak landing match until close data makes the waste obvious.
-
Document the runbook for the next hire. One page: field map, conversion action name, upload path, who approves value rules, and what “won” means. Singapore teams rotate agencies and internal owners; undocumented offline setups die in the first handoff and bidding quietly reverts to form spam.
Free tools - try these yourself
When the handoff from ad copy to page is the real leak - not the CSV - tighten message match and proof on the landing URL before you scale bids on offline closes. A short soft pass through Google Ads offline conversion tracking setup with a specialist beats another quarter of optimising to unqualified enquiries.
Get a free marketing audit - we review your search, ads, and landing pages and send back what to fix first.
Get a free audit
Where Singapore offline imports stall or quietly lie
Most failed programmes still produce green “upload successful” messages. The damage shows up weeks later when tCPA or tROAS targets look efficient in-platform and finance asks why pipeline did not move.
GCLID never stored, or stored on the wrong object. Lead captures the ID; opportunity create clones the record without it. Or the chat widget opens a clean WhatsApp thread and CRM only gets a phone number. You upload beautiful SGD values with empty click IDs and match rate collapses. Fix at form and middleware, not in the spreadsheet.
Conversion name drift. Someone renames the Google Ads action for “clarity” or exports a friendly label from CRM. Google requires an exact string match. One character off and rows error out. Lock the name in the runbook and in the CRM calculated field.
Timezone and lookback mistakes. Closes stamped in UTC while clicks are read in SGT flip sequences. Very late B2B closes fall outside the click lookback window - those deals still matter for reporting, but they will not train bidding. Separate “finance revenue from Google” analysis from “eligible offline conversions for import”.
Optimising to the wrong stage. Importing SQL or “proposal sent” floods Smart Bidding with optimism. Importing only cash-in may be too sparse for low-volume SG niches. Pick the earliest stage that still correlates tightly with revenue, then graduate toward closed-won value as volume allows.
Duplicate uploads and double counting. Re-exporting the same opportunity without a stable order ID can double-fire conversions depending on setup. Use unique IDs and understand whether your import path dedupes. Last-click thinking across tools already confuses CFOs; offline duplicates make it worse.
Mixing lead spam into the same primary goal. If Performance Max still bids primarily on cheap Instant Form fills while you occasionally upload closes, the algorithm follows the denser signal. Demote or separate lead actions when closes become trustworthy.
Privacy and match quality theatre. Hashing the wrong email field, sending test@ addresses, or skipping consent does not create durable signal. Enhanced Conversions help when implemented carefully; they do not repair a CRM that never saved the click.
In a typical remediation we see at HeyLead: a head of growth at a Singapore B2B services firm finds 41 closed-won opportunities tagged Google in a quarter, only 12 with GCLID, and zero offline conversions in Ads. They repair hidden-field capture on two landing pages, backfill 19 matched historical rows inside the allowed window, and only then flip Search campaigns to bid primarily on CRM_Closed_Won_SGD. Cost per qualified opportunity rises for 11 days while volume of junk forms drops - then stabilises because bidding stops paying for the tyre-kickers from broad queries that never closed.

What marketing leaders are seeing
“We finally stopped celebrating WhatsApp enquiry volume when we uploaded actual closed SGD values. Match rate sat around 68% until we fixed GCLID on the mobile form - after that, Search tCPA targets stopped looking ‘efficient’ on leads that sales never touched.” - Head of Growth, Singapore B2B services
“PMax was eating budget on form fills. Once closed-won was the primary action on brand-adjacent Search first, we cut the query clusters that never produced a signed proposal. The spreadsheet was ugly for two weeks; the pipeline quality was not.” - CMO, regional SaaS
FAQs
Do I need Google Ads API access to start offline conversion tracking in Singapore?
No. Many teams begin with manual or scheduled CSV uploads from CRM exports. API or partner connectors help when volume and cadence grow, but they do not replace clean GCLID capture and a correct conversion action. Start with a matched test file, then automate.
Can I import closes if the lead came through WhatsApp after a Google click?
Yes, if the CRM record still holds the GCLID (or enhanced conversion identifiers) from the original click and the close falls inside Google’s timing rules. The break is usually the handoff into chat without passing click IDs - fix that path before you blame the import tool.
Should Performance Max bid on offline closes immediately?
Usually after Search campaigns show stable match rates and enough weekly close volume for the algorithm to learn. Flipping every campaign on day one with sparse closes can starve delivery. Sequence: fix capture → test upload → Search primary → expand to PMax when signal density supports it.
What currency and tax treatment should conversion value use?
Use SGD consistently and align with how leadership reads margin - GST-inclusive revenue versus net. Most Singapore accounts upload ex-GST revenue so tROAS targets reflect net margin; if your finance team reports GST-inclusive, use that figure consistently - the key is that Google Ads value and your internal P&L use the same denominator. Mixing currencies or silently dropping value fields teaches bidding the wrong preference. Document the rule next to the conversion action name.
How is this different from enhanced conversions alone?
Enhanced Conversions improve match rates for online and lead events using hashed first-party data. Offline conversion import is how post-click CRM stages (especially closed-won) re-enter Google Ads for bidding and reporting. Strong accounts use both: better on-site matching plus explicit close uploads.
Putting it to work
Execution sprint
This week
- Pull 30-90 days of performance for how to send crm closes back to google ads (Search Console, ads, CRM, or call logs - whatever you have).
- Flag the top leak: wrong intent, weak page, slow response, or dirty conversion tracking.
- Ship one fix on the highest-traffic money path (page, campaign split, or response rule).
- Run the free tools below on that same URL or account and log the findings.
Free tools for this sprint
Next 30 days
- Expand the fix to the next one or two money paths only after the first one shows cleaner bookings.
- Align creative, keywords, or content with the same offer the page now states.
- Review booked outcomes weekly; cut anything that still only produces unqualified volume.
This week
-
List every primary conversion action in the SG Google Ads account and mark which ones are true closes versus form fills or calls.
-
Click-test your main landing path and confirm GCLID is written to CRM on create.
-
Create or rename a dedicated offline closed-won conversion action with SGD value rules.
-
Export 10 recent Google-sourced wins and attempt a test upload; record match rate and error codes.
-
Write the one-line definition of “won” that sales, finance, and marketing share.
-
Run your key landing URLs through a Core Web Vitals check so mobile paid traffic can actually convert before you import anything.
Next 30 days
-
Automate the weekly CRM view → template → upload path with a named owner.
-
Promote offline closes to primary on high-intent Search once match quality holds.
-
Rebuild negatives and query themes using close-backed search term data.
-
Separate reporting for “eligible offline conversions” versus full Google-influenced revenue.
-
If capacity is tight, book a focused setup rather than living on form-fill CPA.
Pull your last 60 days of Google-sourced closed-won rows, score how many still have a usable GCLID, and fix capture on the highest-traffic landing path before another month of Smart Bidding trains on enquiries that never paid. When you want that click-to-CRM-to-Google Ads loop owned end to end - identifiers, offline import hygiene, and bidding that sees real SGD closes - HeyLead can run the operational load with you; reach out on Chat with us on WhatsApp.
Free marketing audit, or reach Martin directly:
Get a free audit Chat with us on WhatsApp · [email protected]