On this page
- 01 · What you are building
- 02 · Confirm that the calls can be matched
- 03 · Turn on call reporting and forwarding numbers
- 04 · Create the paid-customer conversion action
- 05 · Save the exact fields in the CRM
- 06 · Prove the match with one controlled upload
- 07 · Automate the smallest reliable workflow
- 08 · Move the outcome into bidding carefully
- 09 · Frequently asked questions
What you are building
Google Ads can count a phone call, but your CRM knows whether that caller became a paying customer. This setup closes the gap. It connects the original ad-driven call to the later sale, then returns the real outcome and value to Google Ads for reporting and, once the data is reliable, bidding.
The recommended route
For calls handled through Google forwarding numbers, use Google Ads’ native Import call conversions workflow. Match the caller’s phone number and exact call start time to the customer record in your CRM, then upload only the calls that reach the outcome you care about.
Quick answer: turn on call reporting, use Google forwarding numbers for calls from ads and your website, save the caller ID and call start time in the CRM, create a “paid customer” call-upload conversion, test one row, automate a daily upload, and keep the action secondary until the counts and values reconcile.
Step 1
Confirm that the calls can be matched
Native call imports only work when Google can recognise the original call. The call must have used a Google forwarding number, and your CRM or phone system must preserve the same caller number and start time that Google recorded.
| Situation | Best starting route | Why |
|---|---|---|
| Google forwarding number call; caller ID and start time are in the CRM | Native call conversion import | It is the most direct match between Google’s call record and the CRM sale. |
| Website lead has GCLID or consented email/phone | Enhanced conversions for leads through Data Manager | It matches a click-led CRM journey and can supplement GCLID with first-party data. |
| CRM cannot store the caller ID or exact call time | Call-tracking platform with dynamic number insertion | A provider such as Delacon, WildJar, CallRail or another suitable platform can own the call-to-CRM join. |
| Direct, organic or repeat call did not use a Google forwarding number | Keep it in CRM reporting | Do not force it into the native Google call-import path; Google cannot reliably attribute it to an ad call. |
Run a readiness check
- Open Campaigns → Insights and reports → Report editor → Call details.
- Find a recent call longer than 15 seconds. Google makes caller phone numbers available for most qualifying forwarding-number calls.
- Find the same call in the CRM or phone system.
- Confirm the caller number and start time agree, including timezone and daylight-saving handling.
- Confirm the CRM can mark the record paid and store the actual sale or job value.
If this five-point check fails, repair the data path before creating an automation. A successful API connection cannot compensate for a missing caller ID or an unreliable timestamp.
Step 2
Turn on call reporting and forwarding numbers
Australia supports local and toll-free Google forwarding numbers. They sit between the customer and your business number, route the call normally, and give Google the call record required for matching.
- In Google Ads, open Admin → Account settings → Call reporting, turn it on and save.
- Make sure the relevant campaigns have an approved call asset or call ad. Calls from ads need a Google forwarding number.
- For website calls, create the website-call setup and add Google’s generated phone snippet wherever the tracked business number appears.
- If the Google tag for the same Ads account already exists, do not install a second base tag. Add or verify the Ads configuration and the generated phone snippet.
- Replace both the visible number and the clickable
tel:destination on mobile. Test every header, footer, sticky button and contact module that exposes the number.
Follow Google’s current website call tracking instructions for the exact snippet generated by your conversion action. The number displayed in your site code must match the format configured in Google Ads.
Step 3
Create the paid-customer conversion action
Google’s labels can vary slightly between account interfaces. The documented route is normally Goals → Conversions → Summary → Create conversion action → Import → Manual import from API or upload → Track conversions from calls. Some accounts show the same option as Calls via uploads.
| Setting | Starting point | Decision rule |
|---|---|---|
| Name | Paid Customer – Phone Call | Keep the spelling and capitalisation fixed; the upload must match it exactly. |
| Category | Purchase or Converted lead | Use Purchase for a paid job or booking; use Converted lead for a sales-stage outcome. |
| Value | Use different values | Upload the actual sale value in AUD where it is reliable; otherwise document a defensible fixed value. |
| Count | One | Use Every only when separate transactions from the same ad interaction should each count. |
| Window | Match the real sales cycle | Call imports support up to 90 days; do not choose a longer window than the business needs. |
| Goal use | Secondary during validation | Move it to Primary only after upload coverage, values and duplicates are under control. |
Step 4
Save the exact fields in the CRM
Create controlled fields before you automate. Preserve the original call details even if a contact later changes their phone number, and use a stable internal key so retries do not create a second commercial record.
| Field | Format | Purpose |
|---|---|---|
| Caller phone number | E.164, for example +61412345678 | Primary call-match input. |
| Call start time | Exact timestamp with timezone | Primary call-match input. Use Australia/Melbourne or an explicit offset. |
| CRM call ID | Unique, immutable text | Internal reconciliation and idempotency. |
| Customer status | Controlled value such as Paid | Defines when the conversion becomes eligible. |
| Conversion time | Timestamp after call start | When the paid outcome actually occurred. |
| Conversion value | Non-negative number | Actual or documented value sent to Google Ads. |
| Currency | AUD | Keeps value reporting consistent. |
| Upload status and key | Pending, accepted or failed | Prevents duplicate work and supports retries. |
Phone numbers are personal information. Restrict access, keep them out of URLs and analytics event parameters, and provide the disclosures and consent required for your business. Do not send raw phone numbers to GA4.
Step 5
Prove the match with one controlled upload
Wait at least four hours after creating the conversion action. Then download Google’s current phone-call template from Goals → Conversions → Uploads → View templates. Use the supplied template rather than inventing headers from memory.
- Choose one real, clearly labelled paid call that appears in both Call details and the CRM.
- Enter the caller number, call start time, exact conversion name, conversion time, value and
AUD. - Use a named timezone such as
Australia/Melbourneso daylight-saving changes do not require manual offset logic. - Open Uploads, select the file and choose Preview. Resolve every error before applying it.
- Apply the file once. Imported conversions cannot simply be removed, so do not test with a fabricated customer record.
- Check the upload result, then allow reporting time before reconciling the Ads conversion with the CRM record.
Expected columns
Caller's Phone Number,Call Start Time,Conversion Name,Conversion Time,Conversion Value,Conversion Currency,Ad User Data,Ad Personalization Google recommends overlapping recurring uploads by an extra day because very recent calls may still be processing; duplicate rows are not counted twice. Keep your own upload key and status anyway, because internal idempotency makes failures much easier to diagnose.
Step 6
Automate the smallest reliable workflow
Start with the lowest-complexity method that can run on schedule, retain an audit trail and retry failures without changing the original call data.
| Method | Best when | Control to add |
|---|---|---|
| Manual CSV | You are proving the data model or upload only a small volume. | Named owner, preview-before-apply and a reconciliation log. |
| Scheduled Google Sheet | The CRM can populate a controlled sheet safely. | Protected columns, restricted sharing and a daily refresh check. |
| Scheduled HTTPS or SFTP file | Your CRM can export a secure, stable file. | Credential rotation, row-level status and freshness alerts. |
| Google Ads API | You need direct, monitored CRM integration at scale. | Consent field, partial_failure=true, batching, retries and error storage. |
Google currently documents UploadCallConversions for caller-number and call-start matching. Its broader offline-lead guidance is moving click-led and enhanced-conversion uploads towards Data Manager, so confirm the current call-specific endpoint with Google before commissioning a new custom API build.
Automation rule
Trigger only when the CRM record first becomes eligible, for example Customer status changes to Paid. Build the upload row from the preserved call fields, submit it, store the response against the CRM call ID, and retry only failed rows. Do not trigger on every edit to a paid record.
Step 7
Move the outcome into bidding carefully
A clean conversion action is not automatically a useful bidding goal. First prove that it arrives consistently, reflects real customers, and has enough volume for the campaign to learn from.
- Upload daily, or on the shortest reliable schedule your CRM supports.
- Keep the action Secondary through at least one or two normal sales cycles.
- Reconcile CRM paid customers, accepted upload rows, conversion values and unexplained gaps.
- Review hidden caller IDs, calls under 15 seconds, timezone errors and forwarding-number coverage separately.
- When the signal is stable, make the paid-customer action Primary and move the raw call action to Secondary for the same campaigns.
- If paid outcomes are too infrequent or arrive too late, optimise to a more frequent, well-defined qualified-call stage while continuing to measure paid revenue.
Use All conversions (by conversion time) when comparing with CRM sales by the date they closed. Standard conversion reporting attributes the outcome back to the original ad interaction date, so the two views answer different questions.
Frequently asked questions
Can we upload every customer who called the business?
No. Native call imports need a call that Google recorded through a forwarding number. Direct, organic and untracked repeat calls should remain in CRM reporting unless another authorised attribution method can identify their ad interaction.
Do we need to replace our permanent business number?
No. Google dynamically shows an eligible forwarding number and routes it to the real business number. Google owns that forwarding number and may change it, so do not publish it as the permanent contact number.
What if the caller ID is hidden?
The native match will usually be unavailable because the caller number is one of the required inputs. Track the sale in the CRM, record the coverage gap and avoid fabricating a match.
Should the raw phone call and paid customer both be Primary?
Usually not for the same call and campaign. Doing so can double-count one journey for reporting and bidding. Keep the raw call secondary when the paid-customer action becomes the trusted primary goal.
Can a Google Sheet automate the upload?
Yes. Google Ads supports scheduled imports from Google Sheets, HTTPS and SFTP. Protect access to raw phone data, refresh the file reliably and monitor the upload results.
Should we use GA4 for the phone number match?
No. Send the paid call outcome to Google Ads through the call-import workflow. Do not put raw phone numbers into GA4, page URLs, UTMs or analytics event parameters.
When should we use enhanced conversions for leads instead?
Use that path for click-led CRM journeys where you retained GCLID and/or consented first-party identifiers from the website. It can complement call imports, but it does not make an untracked phone-only call matchable.

