1. Before You Start
You will need:
Admin access to your Dazos CRM instance.
Your Google Ads integration already authenticated under Settings → Google Ads Integration.
At least one Conversion Rule already configured under a Google Ads Customer ID.
(Optional) A live call-tracking provider connected, typically CTM (Call Tracking Metrics).
Only users with permission to view Settings can verify or change the mapping below. End users (sales reps, intake agents) do not need to take any action.
Note: If the new note described in section 4 is not visible on your Google Ads Settings page, contact Dazos support to confirm the latest release has been deployed to your instance.
2. What Changed
Before this release, when a record triggered an offline conversion and you had matching rules configured under more than one Google Ads Customer ID, the CRM sent the conversion to every matching customer at once. Google credited the one that actually owned the click and rejected the rest with an UNAUTHORIZED_CUSTOMER error. That worked, but it polluted Google's diagnostics and was flagged as "low quality" over time.
After this release, the CRM looks at the GACID field on the record (the Google Ads Campaign ID, captured automatically from your call-tracking webhook). It asks Google's API which customer account owns that campaign, and sends the conversion to only that one account.
Tip: If a record has no GACID (e.g., legacy data, manual form fills, or a tenant that hasn't enabled call-tracking), the system falls back to the previous behavior. Nothing breaks—you just don't get the precision benefit until GACID is populated.
3. Verify the GACID Field Mapping
For targeted routing to work, GACID must be receiving the Google Ads Campaign ID from your call-tracking webhook payload, not the Google Analytics Client ID it used to hold.
In most call-tracking integrations (CTM, CallRail, etc.), the Campaign ID arrives in the webhook payload under the paid > campaign_id key.
"paid": {
"source": "google",
"medium": "cpc",
"ad_group_id": "0000000000",
"campaign_id": "1234567890"
}
After the release deploys, the field mapping is updated automatically for every existing CTM-enabled tenant—no admin action is required.
To verify on your own instance:
Open a recent Lead created from a call-tracking webhook.
In the Web Traffic block, locate the GACID field.
The value should look like a long integer (e.g., 1234567890), not a number with a decimal point.
Important: If GACID still shows the old decimal shape (e.g., 123.456789...) after the release deploys, contact Dazos support—the migration may not have run for your instance yet.
4. Confirm the Setup in Google Ads Settings
Navigate to Settings → Google Ads Integration. Scroll to the bottom of the Instructions section. You should see a new bold note explaining the GACID requirement, ending with an example payload snippet.
A closer look at the note itself:
If you can see this note on your Google Ads Settings page, the new routing logic is active for your instance.
5. How Routing Now Works
Here is what happens when a conversion fires on a record (e.g., an Intake Opportunity Probability or Sales Stage change):
Stage | What the CRM Does |
1. Match rules | Finds every Conversion Rule whose Module + Field + Condition matches the change. |
2. Read GACID | Reads the GACID field from the record (or from the parent Intake Opportunity for VOBs / Pre-Assessments). |
3. Resolve owner | Asks the Google Ads API which Customer Account owns the campaign in GACID. |
4. Filter rules | Keeps only the rule under that single owning Customer ID. |
5. Send | Posts one Offline Conversion to that Customer Account. |
If any step in stages 2 through 4 fails—GACID is empty, looks invalid, or doesn't match any configured Customer—the system falls back to the previous behavior of sending to every matching customer. You can audit every routing decision via the API Activity Logs (Settings → Other Settings) and the application logs filtered to the google-ads service.
What gets logged for every conversion event:
Log field | What it tells you |
routing_path | "campaign_match" (single targeted send) or "fallback_fanout_*" (legacy fan-out, with a reason suffix). |
matched_count | How many rules would have fired under the old behavior. |
firing_count | How many actually fired (should be 1 for campaign_match). |
google_ads_customer_id | The Customer ID that received the conversion (only shown when exactly one). |
gacid | The campaign ID value used for the routing decision. |
gclid | The Google Click ID sent in the conversion payload. |
Tip: When troubleshooting a missing conversion in Google Ads, search the application log with "service:google-ads" and the record ID. The routing_path value tells you immediately whether the system attempted a targeted send or fell back.
6. Frequently Asked Questions
Q: Do I need to re-create my existing Conversion Rules?
No. Your existing rules under each Customer ID continue to work exactly as before. The routing change happens automatically at conversion-send time.
Q: What if the call came in before this release deployed?
That older record likely has an empty or out-of-shape GACID. The conversion will fall back to the previous fan-out behavior, which is the same as it would have done before this release. No regression.
Q: My CRM uses CallRail, not CTM. Does this work for me?
The same mechanism applies, but the CallRail webhook payload format differs from CTM. The CallRail field mapping for GACID may need a manual adjustment on your instance—check with Dazos support during onboarding to confirm.
Q: Will this affect what's shown to my sales reps or intake agents?
No. The GACID field on the Lead / Contact / Intake Opportunity record is read-only and was already invisible from day-to-day workflows. End users see no UI change.
Q: Can I disable this feature for a specific instance?
The new routing is gated on GACID being populated and resolvable. Records without GACID continue to use the previous behavior. There is no separate enable/disable toggle—the system self-falls-back when GACID isn't usable.
Q: How do I know targeted routing actually worked for a given conversion?
Check the API Activity Logs (Settings → Other Settings). For a record that previously generated multiple parallel POST calls (with UNAUTHORIZED_CUSTOMER errors), you should now see exactly one POST returning HTTP 200. The application log entry for that send will show "routing_path: campaign_match".
Q: What happened to the Google Analytics Client ID that GACID used to hold?
It is no longer captured. If you need it back for a future feature (such as Performance Max conversion fallback), Dazos support will add a separate field for it.
7. Need Help?
If conversions appear to still be fanning out, or routing decisions look unexpected:
Open the record (Lead, Intake Opportunity, etc.) and confirm GACID is populated with a campaign-id-shaped value (a single long integer).
Search the application log filtered to "service:google-ads" and the record ID. The routing_path field will tell you exactly which path was taken and why.

