Skip to main content
Conversion actions tell Google Ads what counts as a valuable outcome — a sign-up, a purchase, a qualified lead — and feed the conversion-based bidding strategies (MAXIMIZE_CONVERSIONS, TARGET_CPA, and friends). They live at the account level in their own section (conventionally conversions.toml) because they change rarely and are shared across every campaign.
Conversions are not exclusively owned by your config. apply only creates and updates the entries you declare — it never archives a conversion just because it’s absent from TOML. Deleting a block simply stops Adjar from managing that action; to actually remove a conversion, use the Google Ads UI. Adjar also only manages conversions whose type it can create (see type below); conversions created by Google or another product (a GA4 import, Smart campaign goals, Firebase) are deliberately left out of config and untouched.

Full Example

[[conversions]]
name = "Book a Demo"
category = "BOOK_APPOINTMENT"
type = "WEBPAGE"
primary_for_goal = true
counting_type = "ONE_PER_CLICK"

[[conversions]]
name = "Newsletter Signup"
category = "SIGNUP"
type = "WEBPAGE"
status = "ENABLED"

[[conversions]] Fields

name
string
required
The conversion action’s display name as it appears in Google Ads. Must be unique within the account.
name = "Book a Demo"
category
string
default:"DEFAULT"
The semantic bucket the conversion belongs to. Must be one of Google’s ConversionActionCategory values that Adjar supports:DEFAULT, PAGE_VIEW, PURCHASE, SIGNUP, LEAD, DOWNLOAD, SUBMIT_LEAD_FORM, CONTACT, BOOK_APPOINTMENT, REQUEST_QUOTE, ADD_TO_CART, BEGIN_CHECKOUT, SUBSCRIBE_PAID, QUALIFIED_LEAD, CONVERTED_LEAD.
category = "BOOK_APPOINTMENT"
type
string
default:"WEBPAGE"
How the conversion is recorded. This is set when the action is created and is immutable afterward — Google rejects any update that touches it.Adjar can create and fully manage these types:
ValueDescription
"WEBPAGE"Fired by the website tag on a page load
"UPLOAD_CLICKS"Click conversions imported offline
"UPLOAD_CALLS"Call conversions imported offline
"WEBSITE_CALL"Calls from a number on your website
An existing conversion of any other type is preserved as-is on import (so the round-trip is lossless), but Adjar will not try to mutate it.
type = "WEBPAGE"
status
string
default:"ENABLED"
Whether the conversion is actively counting.
ValueBehaviour
"ENABLED"The action records conversions
"HIDDEN"The action is kept but stops counting
status = "ENABLED"
counting_type
string
default:"ONE_PER_CLICK"
How many conversions to count per ad click.
ValueUse for
"ONE_PER_CLICK"Leads — one qualified action per click
"MANY_PER_CLICK"E-commerce — multiple purchases from one click should all count
counting_type = "ONE_PER_CLICK"
primary_for_goal
boolean
default:"false"
Whether this action counts toward the main “Conversions” column and feeds conversion-based bidding (MAXIMIZE_CONVERSIONS, TARGET_CPA, etc.). When false, the action is observation-only (a “secondary” conversion).Defaults to false — the safe, non-promoting default. Set it explicitly to true to make a conversion primary, rather than relying on an omitted field to silently promote it.
primary_for_goal = true

Conversion Value

Most lead conversions have no monetary value (which is why ROAS reads 0 until a value is configured). These optional fields attach a value to each conversion.
default_value
number
The value to record for each conversion, in default_currency.
default_value = 50
default_currency
string
The currency for default_value (ISO 4217, e.g. "USD"). Defaults to the account currency if omitted.
default_currency = "USD"
always_use_default_value
boolean
default:"false"
When true, every conversion records default_value rather than a per-event value sent by the conversion tag.
always_use_default_value = true

  • Campaigns — the bid_strategy field, including the conversion-driven strategies these actions feed
  • Account Root — how the conversions file is imported