Mystery Contact Id field on Opportunity
Matthew noticed that when you create an advanced formula on an Opportunity, you see a field called ContactId:

It doesn’t show up in the Admin interface, though. And when Matthew tried to use it, it didn’t have anything in it.
Does anyone know what this lookup field is?
Here’s my optimistic speculation: they are building functionality that will automatically put the Primary Contact Role’s Contact Id in this field. Having that field on the opp would let us do more things more easily using cross-object formulas. Maybe the field made it through QA for Summer ‘08 but the rest of the functionality didn’t make the schedule.
Another speculation is that this field would work the other way–if you create an Opp with a Contact Id in this field they will get a contact role.
Another speculation? It’s neither and I’m just making stuff up. But if that’s the case, why is this field semi-visible? Where did it come from?
Update: This doesn’t appear to be related to the relatively new functionality to connect a new opportunity from a contact to the most recent campaign that contact is member of.

June 25th, 2008 at 10:35 am
It could be a field from the lead conversion process, so it would be populated with the Contact that was created during the conversion process at the same time as the Opportunity. I just checked and didn’t see the field when doing a SObject Describe call through the API, so I would guess it’s just linked back to the Lead’s ConvertedContactId field. It’s hard to say, though.
June 25th, 2008 at 10:51 am
Yes, that’s an interesting possibility. But we’ve had lead conversion from Lead to Contact and Opp and I don’t think we’ve ever had this field before.
It is nearly invisible, isn’t it.
June 26th, 2008 at 6:21 am
Steve, I just some time with this yesterday. I read many posts that reference sending emails to the primary contact listed on an opportunity. Here’s an example: http://community.salesforce.com/sforce/board/message?board.id=practices&message.id=4509&query.id=123116
My goal was to create an auto-email that would send notify the rep’s manager when an opp was lost- this email would have a link to email the primary contact and pre-populate a template. Nothing I’ve tried has worked to populate the contact, and I’m beginning to think it can’t be done without code.
This field exists on all other objects (eg. case.contactid) will give you the ID of the person the case is associated with. With Summer08, this isn’t needed as you use a lookup formula.
What they should do is create a hidden lookup field called “primary contact” that is automatically populated/updated when the primary contact role changes. SF does so many things so well, but I find myself on occasion thinking “wtf?!”… this doesn’t seem that hard! While I’m thinking of it I tossed out the idea: http://ideas.salesforce.com/article/show/10089945/Primary_contact_lookup_on_opportunity?skin=null
Regards,
John
July 10th, 2008 at 3:09 pm
Hi Steve,
You have stumbled upon a bug (one that is not dangerous, but is definitely confusing) — the Opportunity ContactID field is an internal detail that should not be exposed in the formula merge field picker UI. We have plans to remove it in a maintenance release. If you do have formulas that reference this field, please remove the reference (since it is not returning anything anyway).
From John’s comment, however, it does seem like there is an interesting feature request that this highlights. I support voting for John’s idea on IdeaExchange.
Note: The community board post that John links to is similar but not the same as the ContactID merge field issue. That post is using the {!Contact.Id} merge field, not {!Opportunity.ContactId}. Opportunity.ContactId is not available in the Buttons and Links editor.
Thanks,
Mary Scotton
Force.com Product Manager