1

TLDR; Is there a way to build a joint object between the campaign member and account objects? If not, what are some other methods to design the SFDC database to capture the specific individuals that referred someone.


We have a few referral programs which are captured as campaigns. We use both Person Accounts and Standard Account/Contact. We have referral programs where a Standard Account can refer a Person Account or a Person Account can refer another Person Account. We want to know the Standard Account or Person Account that referred someone.

I would think the best way to do this is to have a campaign which references the referrer (the Standard Account or Person Account) - however that seems like an administrative nightmare and isn't scale-able (ie. if we have 5000 individuals that can refer someone, that would be 5000 separate campaigns).

The next solution we were thinking was create a generic 'Referral' campaign and have a joint object between the campaign member the Account table to specify the referring Standard/Person Account. After looking into this, we found SFDC doesn't support master-detail to Campaign Member.

We currently have a lookup field on the campaign member to reference the account that referred them, but we can only capture the first referral - which would be nice to have, although not a requirement.

I'm looking for best practice on how to build the database to record multiple referral programs or if there is anyway to create a joint object between the Campaign Member object and the Account object.

  • 2
    The answer can differ based on what your use case is. How many referrers do you usually have? If the max number of referrers is 3 or 4 then I would just create 3 or 4 lookups from the Campaign Member to the Account called "1st Referrer", "2nd Referrer", etc. That won't scale if more than a few referrals can be on a Campaign Member. In that case you will need to create a partner object to Campaign Member, which can then join to a junction object. That is cumbersome though and standard UI will be painful. – CoryCowgill Jan 27 '15 at 19:39
  • Thanks @CoryCowgill, that's definitely a consideration to improve what we are doing today. As you mentioned it does have its downside, but we might be able to work with it. I'm not quite sure what you are meaning by a 'create a partner object to Campaign Member'. We attempted to join the campaign member to the account, but we couldn't relate the join because there was no master-detail to reference the campaign member. – zainogj Jan 27 '15 at 19:44
  • You can setup a lookup FROM campaign member to a new custom object called "Campaign Member Referrer". Then create a JUNCTION object between Account and Campaign Member Referrer. Then you could use Formula Field to bring down the data to the Campaign Member. – CoryCowgill Jan 27 '15 at 21:02
  • 1
    Added an answer so that I could give you image. – CoryCowgill Jan 27 '15 at 21:05
1

The answer can differ based on what your use case is. How many referrers do you usually have? If the max number of referrers is 3 or 4 then I would just create 3 or 4 lookups from the Campaign Member to the Account called "1st Referrer", "2nd Referrer", etc. That won't scale if more than a few referrals can be on a Campaign Member.

In that case you will need to create a parent object to Campaign Member, which can then join to a junction object. That is cumbersome though and standard UI will be painful. Here is a schema of what that would look like if you want to pursue it. You could use Formula Fields / Cross Object Workflow to bring in the names from the junction object for reporting / display.

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.