SFDC Campaign Member Date for newly synced records to Marketo | Community
Skip to main content
Level 3
June 17, 2026
Question

SFDC Campaign Member Date for newly synced records to Marketo

  • June 17, 2026
  • 2 replies
  • 19 views

We continually sync new records from our SFDC to Marketo and when they are newly created, all their previous campaign membership history is also logged on the date they were synced (regardless of when they actually became a member of that campaign). Marketo confirms that is expected behavior. We want to be able to score people with engagements within the last 30 days (Responded date last 30 days in a marketing SFDC Campaign). Marketo support recommends creating lead/contact fields in SFDC to pass last campaign membership details over and when it syncs to Marketo we could use the data to narrow down last 30 days. However, we sometimes do bulk loads into SFDC Campaigns where a record could be a member of multiple campaigns during that specific load, and we wouldn’t want to overload the feed or cause misalignment between campaign and date updates.

Marketo also confirmed, that Member Date isn’t visible in Marketo or we must know the exact SFDC Campaign (which we don’t always know ahead of time).

Has anyone come across this scenario or have any other options we could use to try to have SFDC Campaign membership and date available post sync to Marketo and we can narrow down the specific membership date in Marketo,

    2 replies

    Level 2
    June 18, 2026

    This is a classic native sync limitation. Because Marketo views the initial sync of historical records as a brand-new creation event, it overwrites your true timeline.

    Since you don't know the campaign names ahead of time (which rules out standard Campaign Member filters) and need to prevent bulk-load overwrites, here are two scalable options:

    Option A: The SFDC "Last Touch" Timestamp 

    Best if you can add just one field to the Lead/Contact object. It bypasses campaign names entirely.

    • The SFDC Setup: Create a custom date field on the Lead/Contact called Last_True_Campaign_Engagement_Date__c. Have your SFDC Admin build a Record-Triggered Flow on the Campaign Member object. Whenever a member status changes to 'Responded', the Flow queries all their memberships, grabs the Maximum (newest) Responded Date, and writes it to that Lead/Contact field.

    • The Bulk-Load Safe Edge: If a lead is dropped into 5 campaigns simultaneously, the Flow evaluates them together and updates the field once with the absolute newest date—preventing a sync queue overload or data misalignment.

    • Marketo Scoring Filter: Last True Campaign Engagement Date ➡️ in last 30 days.

    Option B: Explore Custom Activities via Integration

    If your admin team has a strict freeze on adding Lead/Contact fields, but you have a custom integration tool in place (like Adobe Workfront Fusion), you can explore passing these engagements as Marketo Custom Activities instead.

    You can configure your integration tool to monitor your Salesforce Campaign Members, capture the true 30-day response signals, and write them directly to the person's Marketo activity log via API. Because Custom Activities act as an immutable timeline ledger, simultaneous bulk loads will create individual activity entries instead of overwriting each other.

    Help Me Understand

    To help tailor this, what is the broader business use case behind these types of operations (e.g., list buys, system migrations, or offline events)? Understanding the upstream data source can help us provide an even tighter deployment plan for you!

    SanfordWhiteman
    Level 10
    June 18, 2026

    Agreed, some more background on when and why someone can be exposed to the sync API user would be good.

     

    Another approach I’d throw in is a webhook-compatible service hitting the SFDC API:

    • Call the webhook on every Added to SFDC Campaign. Send the current value of a Last Campaign Member Date field. The service looks up the corresponding Campaign Member in SFDC and returns the Member Date for the triggering campaign only if it’s later than the currently stored value. (Or it could always scan all CMs for the person and grab the latest, though that query is somewhat more resource-intensive.)
    • Straightforward enough to just trigger on Add, but the prob (as with any approach that doesn’t take into account CM removal) is it will no longer represent the latest CM Date if someone is removed from a campaign or if the campaign itself is deleted. If you need that field to reflect the true state in SFDC at all times, you’d have to trigger on Removed from SFDC Campaign as well and query all CMs in that case.

    This kind of thing is a last resort if you (a) can’t get SFDC admins interested in the problem at all, but (b) can get an SFDC API user (or already know the credentials). We have a couple Marketo instances that do things like this with webhooks to SFDC, though not exactly this.