One of our top use cases for CJA is being able to see journeys based on audience membership from RT-CDP. For example, the question is typically, "for people who were in my audience on x date when it was activated, how many visited x site or bought x product".
Our way of doing this involved creating an event dataset that tracks audience membership, so we get an event every time they enter or exit an audience. We then count entrances as 1, exits as -1, and sum them in a derived field. The people that sum to 1 were in the audience. We do this sum over a specific date range. For example, if the audience was created on 11/1, and we want to see the audience population on 12/1, then the date range set in the derived field would be 11/1, 12/1.
This is the problem. Since we need to set the date range in the derived field, no matter what the date range is in the panel is workspace, it will only show events between 11/1 and 12/1 since that was set in the derived field. This is rather useless, because if the audience was activated on 12/1, analysts want to see conversions that occurred after that.
Is this fixable? And if not, is there any other way people have done this use case in the past that I am not thinking of?
Thanks so much!
Views
Replies
Total Likes
Unfortunately, this cannot be “fixed” inside a Derived Field — CJA Derived Fields do not support dynamic date windows.
If you hard-code 11/1 → 12/1 inside the DF, CJA will always restrict the logic to that period, no matter what the panel date range is. That behavior is expected.
The solution is to stop using Derived Fields for audience membership calculations and instead shift the logic to event-level flags or a snapshot dataset, which do respect panel date ranges.
Recommended approach (used by most CJA teams)
Write a daily record for each user:
person_id, audience_id, audience_status = active/inactive, snapshot_date.
Then in CJA:
Filter the snapshot date to the day the audience was activated
Use that population to report conversions after any date
This gives complete flexibility:
“Who was in the audience on X date, and what did they do afterward?”
If your audience membership changes infrequently, set a profile field like:
audience_active = true
CJA will apply it forward in time for all subsequent events.
(But it will not show historical values — snapshots are better for time-sensitive audiences.)
They are static by design and cannot respond to panel date ranges, which is why your current setup is stuck.
Hi Samuel,
Thank you so much for the response! A daily audience snapshot sounds like it would solve all my problems, I'm concerned that would put a massive strain on our contracted CJA row limit. If we are getting an event for every unique person id/audience ID combination every day, that could be a massive number of daily events.
Let me know your thoughts!
Views
Replies
Total Likes
Great question and yes, a daily snapshot can get heavy if you have many audiences and a large population. But the good news is: you don’t need a full daily snapshot for every audience/person. There are two lighter options that solve the problem without blowing up your row count.
Instead of writing a record every day, only write a snapshot on the activation date (or any key milestone date you care about).
Example: audience activated on 12/1 → store one row per person with status active.
This lets analysts ask:
“Who was in the audience on activation day, and what did they do afterward?”
Zero need for daily updates.
Extremely low row usage.
If your use case only needs to know current state (e.g., “in audience yes/no”), send it as a profile field from RT-CDP → CJA connection.
Profile attributes don’t consume event rows at all.
Then analysts can build:
segments (“audience_active = true”)
breakdowns
post-activation journeys
This is the lowest-cost option.
Only when you truly need historical membership over time (e.g., “Who was in the audience on any given day in the past 60 days?”).
Most teams don’t need this level of granularity.
Views
Replies
Total Likes