Newer Version Available

This content describes an older version of this product. View Latest

Configure the finishLocation Attribute in a Flow Attribute in a Flow

If finishLocation isn’t specified, users who click Finish start a new interview and see the first screen of the flow. You can shape what happens when a user clicks Finish on the final screen by using the URLFOR function, the $Page variable, or a controller.
The following sections show the ways that you can configure the <flow:interview> component’s finishLocation attribute.

Set finishLocation with the URLFOR Function

  • You can't redirect flow users to a URL that’s external to your Salesforce org.
  • Don’t call the Auth.SessionManagement.finishLoginFlow method and the finishLocation attribute in the same flow. Auth.SessionManagement.finishLoginFlow indicates the end of a Visualforce page login flow. If finishLocation is in the same flow, finishLocation executes when the flow starts, giving users full access to the session.

Note

To route users to a relative URL or a specific record or detail page, using its ID, use the URLFOR function.

This example routes users to the Salesforce home page.
1<apex:page>
2    <flow:interview name="MyUniqueFlow" finishLocation="{!URLFOR('/home/home.jsp')}"/>
3</apex:page>
This example routes users to a detail page with an ID of 001D000000IpE9X.
1<apex:page>
2    <flow:interview name="MyUniqueFlow" finishLocation="{!URLFOR('/001D000000IpE9X')}"/>
3</apex:page>

For more information about URLFOR, see Functions.

Set finishLocation with the $Page Variable

To route users to another Visualforce page without using URLFOR, set finishLocation to the name of the destination page with the format {!$Page.pageName}.
1<apex:page>
2    <flow:interview name="MyUniqueFlow" finishLocation="{!$Page.MyUniquePage}"/>
3</apex:page>

For more information about $Page, see Global Variables.

Set finishLocation with a Controller

You can set finishLocation in a few ways with a custom controller.

This sample controller configures a flow's finish behavior in three different ways.
1public class myFlowController {
2    
3    public PageReference getPageA() {
4        return new PageReference('/300');
5    }
6    
7    public String getPageB() {
8        return '/300';
9    }
10    
11    public String getPageC() {
12        return '/apex/my_finish_page';
13    }
14}
Here’s a sample Visualforce page that references the controller and sets the flow finish behavior to the first option.
1<apex:page controller="myFlowController">
2    <h1>Congratulations!</h1> This is your new page.
3    <flow:interview name="flowname" finishLocation="{!pageA}"/>
4</apex:page>

If you use a standard controller to display a record on the same page as the flow, users who click Finish start a new flow interview. They see the first screen of the flow, without the record, because the id query string parameter isn't preserved in the page URL. If needed, configure the finishLocation to route users back to the record.