Offline Conversion Tracking with ActiveCampaign
ActiveCampaign is built for email, not attribution. Here is how to bolt on click ID capture and send outcomes back to your ads.

This post covers how to bolt offline conversion tracking onto ActiveCampaign, which was built for email automation rather than attribution, and still does the job perfectly well once you add a few fields.
If your pipeline lives in ActiveCampaign deals and your ads are optimising toward newsletter signups, this is the fix.
When this fits
You use ActiveCampaign for contacts and deals.
You run ads that generate signups or enquiries.
Some of those become customers and your ad platform has no idea which ones.
What you will build
Custom contact fields for click IDs and UTMs.
Form wiring that fills them.
An automation that fires when a deal reaches a stage.
A webhook that feeds Google Ads and Meta.
Let’s implement it
Step 1: create the fields
In Contacts, then Fields, add text fields for Google Click ID, gbraid, wbraid, fbclid, and first and last touch UTMs.
ActiveCampaign stores these on the contact rather than the deal. If a contact can have several deals over time, also copy the click ID onto the deal at creation so old attribution is not reused.
Step 2: get values into the form
ActiveCampaign forms support hidden fields mapped to custom fields.
If you use the hosted form, pass values in through the embed URL. If you use the inline embed on your own page, your script can fill the inputs directly. The inline embed is easier, so prefer it where you can: hidden UTM fields on any form.
Step 3: automation on stage change
Build an automation triggered by a deal stage change. Add a webhook action that posts the contact’s click ID, the stage name, the deal value and the timestamp.
Send that webhook to Make, Zapier, or your own endpoint, which then forwards to the ad platforms.
Step 4: pick the stages worth sending
Do not send every automation step. Pick the one or two that represent real money:
Qualified, valued at deal size times close rate
Won, with the real amount
The trap specific to ActiveCampaign
It is very easy here to end up optimising toward email list growth.
If your ad conversion is the form submit that adds someone to a nurture sequence, Google Ads will find you the cheapest possible list joiners. They are cheap for a reason.
Demote the signup to a secondary conversion and let the deal stages drive bidding. That one change usually shifts lead quality within a few weeks: tracking qualified leads, not form fills.
Before you finish
Real ad click, real form submission, click ID on the contact.
Move a test deal to a tracked stage and confirm the webhook fired.
Confirm the click ID copied to the deal at creation.
Check the upload match rate.
Confirm the signup conversion is secondary, not primary.
FAQ
Contact fields or deal fields?
Capture on the contact, copy to the deal. Contacts are where forms write, deals are where outcomes live.
Can I use ActiveCampaign’s site tracking instead?
Its site tracking tells you what contacts did on your site. It does not give you a click ID to upload. Different job, keep both.
What if the same person signs up twice?
Decide whether first or last click ID wins and configure it deliberately. Silent overwrites are the usual cause of attribution that looks random.
I do not have deals, only lists and tags.
Then fire the webhook on a tag being applied instead. Use a tag that means something real, like Became Customer, not one that means Downloaded PDF.
Need this built properly?
Email tools optimise toward list growth unless you tell them otherwise. I set up and repair tracking for ecommerce stores and lead generation businesses, so the numbers in your ad accounts match the money in your bank account.
Have a look at what I do, or book a call and we can go through your setup together.



















