Locate Campaign Member ID in SFDC | Community
Skip to main content
JimmySpencer_
New Participant
June 17, 2022
Solved

Locate Campaign Member ID in SFDC

  • June 17, 2022
  • 1 reply
  • 3548 views

We are attempting to assign campaign members and their associated campaign statuses to campaigns within SFDC.

 

We're looking for the campaign member ID because this is a requirement for the API call to succeed. Sort of a chicken or egg dilemma. How do we send a campaign member ID for a record that is not associated with the SFDC campaign yet?

 

This leads me to believe this is two-step process where an ID gets generated first and then we can make the update. Anyone have experience they can share?

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by SanfordWhiteman

The crazy part, it would seem, is that the upsert function for campaign members requires this campaign member ID. So I don't understand how that is ever usable for a new campaign member.

The upsert() function does require the CM ID for records that already exist, which means it functions somewhat differently from, say,a MERGE insert in SQL Server.

 

Since you need to know which people you’ll be updating in advance, it’s not an intelligent upsert, but more of a “bundle insert calls and update calls in one request” feature.

 

You can’t avoid querying for existing Campaign Members to get their IDs.

1 reply

SanfordWhiteman
New Participant
June 17, 2022

As you seem to have already figured out, this is a pretty strange request!

 

You can’t know the Campaign Member ID before someone is a member of a Campaign — that’s impossible. The Campaign Member is a junction object. The creation of that object is the only way a person is added to a Campaign!

 

So let’s take a step back. We may have a significant XY Problem. What are the requirements you’re trying to meet? Please be as detailed as possible. Don’t think about “what is the Campaign Member ID” but about your true goals.

JimmySpencer_
New Participant
June 17, 2022

Hey Sanford,

 

So desired outcomes would be for a Marketo record that is synced to SFDC (custom integration):

  • If contact is not a member of SFDC campaign X, insert as a campaign member
  • If contact is already a member of SFDC campaign X (or after they have been added) update SFDC campaign member status
    • Note: We have no concern for the the campaign status. We only care about the campaign member status (which aligns with marketo program statuses).

We have data for ContactID, CampaignID, and various attributes, but are missing this "Id" which for this sobject seems to be the campaign member ID. Chicken and egg, no Id exists for an insert. 

 

Currently we are attempting to do all of this in a single job. My assumption is that this must be a two-part process where we

  1.  create a campaign member sans campaign status, and then
  2. run a subsequent job(s) to collect the campaign member ID from SFDC and then perform a campaign member status update based on Marketo program status.  

The crazy part, it would seem, is that the upsert function for campaign members requires this campaign member ID. So I don't understand how that is ever usable for a new campaign member.

--Just a guy who knows enough to get into trouble--
SanfordWhiteman
SanfordWhitemanAccepted solution
New Participant
June 17, 2022

The crazy part, it would seem, is that the upsert function for campaign members requires this campaign member ID. So I don't understand how that is ever usable for a new campaign member.

The upsert() function does require the CM ID for records that already exist, which means it functions somewhat differently from, say,a MERGE insert in SQL Server.

 

Since you need to know which people you’ll be updating in advance, it’s not an intelligent upsert, but more of a “bundle insert calls and update calls in one request” feature.

 

You can’t avoid querying for existing Campaign Members to get their IDs.