Draft call conversion upload
draft_upload_call_conversionsDraft an offline CALL-conversion upload from a CSV — returns a PREVIEW.
Instructions
Draft an offline CALL-conversion upload from a CSV — returns a PREVIEW.
Uploads call conversions via ConversionUploadService.UploadCallConversions,
matching the call against the ad click by the caller's phone number.
The CSV must have columns: Caller's Phone Number,
Call Start Time, Conversion Name, Conversion Time, Conversion Value,
Conversion Currency. The Conversion Name must match an existing
UPLOAD_CALLS-type conversion action — verified against the account while
drafting, so a typo fails here rather than after the upload. Optional
Ad User Data and Ad Personalization columns carry consent per row.
The CSV comes from csv_path (a file on the machine running AdLoop) or from upload_id (a file uploaded with upload_conversion_csv, the only way on AdLoop Cloud). An uploaded file is deleted once the draft has read it.
PII: the caller phone number is required RAW by Google (it cannot be
hashed), so it lives in the plan's apply-only payload — the preview shows
redacted ids and counts, the audit log and plan.changes show neither.
Apply uploads exactly what you previewed (no CSV re-read).
Phone numbers are normalized with libphonenumber semantics: a number
carries no country code needs default_region, an extension is dropped,
and the German trunk marker in "+49 (0)89 …" is handled. Rows whose number
stays unusable are skipped and reported in skipped_rows instead of being
uploaded to no effect.
Rows that repeat inside one file are named in dedup_warnings. A call
upload has no dedup key at Google, so each of them still goes out as its
own conversion — the warning is the only place that says so.
Returns a preview with a plan_id, the row counts, the consent the rows
actually carry (consent_summary) and the skipped rows; nothing is
uploaded until that preview is confirmed.
Google Ads API: https://developers.google.com/google-ads/api/docs/start
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| consent | No | Consent signals for GDPR/EEA, as an object with "ad_user_data" and/or "ad_personalization", each "GRANTED", "DENIED" or "UNSPECIFIED". None sends UNSPECIFIED. A row whose own "Ad User Data" / "Ad Personalization" columns are filled in overrides this for that row; empty cells fall back to it. | |
| csv_path | No | Path of the CSV file holding the upload rows, read on the machine that runs AdLoop. Refused on the hosted server; use upload_id there. | |
| upload_id | No | Id of a CSV uploaded with upload_conversion_csv (up_...), instead of csv_path. | |
| customer_id | No | Google Ads customer ID (digits, e.g. "1234567890"). Empty uses the configured default account. | |
| default_region | No | ISO 3166-1 alpha-2 country assumed for phone numbers that carry no country code, e.g. "DE" for "0151 12345678". Empty leaves such numbers unusable and the row is skipped. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||