My SF instance needs to get data and approvals from a lot of external users outside of the organisation. I would like to know what is the best solution to get data from these users without giving them a user license?

An example use case in my Opportunities, I have a number of fields that will need to be filled in by an external user. Once the Opportunity reaches a certain stage a notifcation will be sent via email to the user (containing Opportunity information) and requesting them to send us some relevant information, this includes a Work Order No. and a Contact Email Address (which should already be saved within the Contacts object). At this moment in time we have to use manually fill in these details ourselves after email to email correspondance.

I have looked at two options in which I could improve this process (although a little patchy) which are:

  1. Email Service: Have an apex button which sends them an email containing selected contents of the the Opportunity. Have the email sent from an Email Service which on reply will scrape the message contents and fill the required columns and could notify the Opportunity owner via Tasks.
  2. Visual Flow: SF User will click a button to generate email to external user which contains links or an online site. Using visual flow an online page will be in place where the external user fills in the Opportunity ID and their email address (for authentication) on login, and then is required to fill out the related content and submit. Although this sounds like a simple solution, I'm not sure to expose Visual Flow pages to users that have not logged into SF.

2 Answers 2


Without providing these external contacts with a Partner License and having either a Partner Portal or Partner Community available to them, you won't be able for them to directly access the Opportunity Object via any kind of Visual Flow.

Because of the limitation on access to Opportunities, of the two options you've provided, your Email Service solution would be the only one that's viable. You'll of course need to parse the inbound email to detect the fields, the answers you seek, then process them in whatever manner you desire. While you could do this through Tasks, you may find it possible to also call another class that could update Opportunity directly. It might be preferable to do the latter after creating a Task based on the inbound email.

How complex and completely automated you want to make this would of course be up to you and your organization's requirements/needs.


Another option that is slightly different than you options above 1. build a button to send the email as you describe with a link (with the opp id embedded into it) to a web to case page that would the user would fill out. It could be pre-populated with information from the opportunity. 2. the user submits the web to case page and it creates a case with the information supplied from the form including the oppty id 3. create a trigger on the case that would update the opportunity with the information in the case record.

Another option would be to do utilize FormAssembly instead of web to case. More information can be found in FormAssembly Salesforce integration and in prepopulating a form with Salesforce data

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .