IF( NOT(ISNULL(Submission__c.DPM_Project__c)), ahttps://url.aspx?PROJECTID={!Opportunity.Name}&LOCATIONID={!Opportunity.Location__c}&INNCODE={!Opportunity.Inn_Code__c}&BRANDCODE={!Opportunity.Brand_Items__c}, ahttps://url.aspx?PROJECTID={!Lead.Name}&LOCATIONID={!Lead.Location__c}&INNCODE={!Lead.Inn_Code__c}&BRANDCODE={!Lead.Future_Brand__c})

I've had this formula in my custom button. But when saving, it appears to have an error.

{!IF( NOT(ISNULL(Submission__c.DPM_Project__c)), "ahttps://url.aspx?PROJECTID={!Opportunity.Name}&LOCATIONID={!Opportunity.Location__c}&INNCODE={!Opportunity.Inn_Code__c}&BRANDCODE={!Opportunity.Brand_Items__c}", "ahttps://url.aspx?PROJECTID={!Lead.Name}&LOCATIONID={!Lead.Location__c}&INNCODE={!Lead.Inn_Code__c}&BRANDCODE={!Lead.Future_Brand__c}")}

But for this one it doesn't have an error but when clicking the custom button, the link has a salesforce link before the link in the formula. Is there something wrong in my condition on both scenario? Thanks in advance.

NOTE: Don't mind the letter a before the https because i need to have at least 10rep to post more than 2 links. Thanks again.

  • what is the error you are getting while trying to save first version? You could try :IF( NOT(ISNULL({!Submission__c.DPM_Project__c})), "url.aspx?PROJECTID={!Opportunity.Name}&LOCATIONID={!Opportunity.Location__c}&INNCODE={!Opportunity.Inn_Code__c}&BRANDCODE={!Opportunity.Brand_Items__c}", "url.aspx?PROJECTID={!Lead.Name}&LOCATIONID={!Lead.Location__c}&INNCODE={!Lead.Inn_Code__c}&BRANDCODE={!Lead.Future_Brand__c}")
    – Anisa
    Jul 7, 2017 at 6:36
  • What is the error you are getting? It would save us s lot of time
    – Eric
    Jul 7, 2017 at 6:40
  • @Anisa sfdcfox gave me the answer already. Thank you for the help and time.
    – JMRAF69
    Jul 7, 2017 at 8:39

1 Answer 1


Merge fields start with {! and end with }. You don't use them in the middle of a formula. To merge in the middle of the formula, you want to use the concatenation operator, &. However, doing it the way you are doing it might break on some inputs.

I'd avoid possible encoding errors by using URLFOR, instead. Symbols such as &, =, and %, can cause parameters to get screwed up/misinterpreted, etc.

  URLFOR("https://url.aspx", null, 
    [PROJECTID=Lead.Name, LOCATIONId=Lead.Location__c,
     INNCODE=Lead.Inn_Code__c, BRANDCODE=Lead.Future_Brand__c]),
  URLFOR("https://url.aspx", null,
    [PROJECTID=Opportunity.Name, LOCATIONId=Opportunity.Location__c,
     INNCODE=Opportunity.Inn_Code__c, BRANDCODE=Opportunity.Brand_Items__c])

(Note: I reversed the true/false values to avoid the unnecessary extra NOT function, but this is mostly just a matter of preference).

  • This works smoothly @sfdcfox. Thank you very much.
    – JMRAF69
    Jul 7, 2017 at 8:38
  • how can i replace the link with a custom label? Will I put $label before the PROJECTID? Thanks.
    – JMRAF69
    Jul 7, 2017 at 8:43
  • @JMRAF69 You can replace "https://url.aspx" with $Label.LabelForUrl (no quotes if you're using a label).
    – sfdcfox
    Jul 7, 2017 at 12:30
  • @sfdcfox I need to display an error msg for the else condition, I am writing a window.alert('error msg') in the else part, but it redirect me to a new page and it displays this "This page isn't available in Salesforce Lightning Experience or mobile app". I have tried writing if{} else{} as well then it display error in my URL, I am calling a docusign URLFOR value if probablity is more than 50%. Appreciate your response.
    – user905
    Jul 15, 2019 at 4:23
  • @9codie05 That's not allowed. You can choose to not output a link at all, using something like {!IF(Probability<0.5,"You cannot generate a document at this time", URLFOR("url", recordId, [ params ], true|false)).
    – sfdcfox
    Jul 15, 2019 at 4:48

You must log in to answer this question.

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