Skip to content
Release: Australia · Updated: 2026-03-12 · Official documentation · View source

Set up custom Playbooks for Portals

Create custom Playbooks for Portals to provide end users with the playbook experience on your service portal.

Overview of Playbooks

Playbooks guide users through complex processes and enable them to save their progress and resume their work when convenient. They can also get the information that they need for each stage of the flow and its associated activities with the Customer Service Management (CSM) playbooks on service portals.

You can activate Playbooks for Portals if you have the admin role. The base system is delivered in an inactive state. You must activate it in the Playbooks (PAD) for the user to see it.

Plugins required:

  • Playbooks for Customer Service Management: sn_csm_playbook
  • Playbook Experience: sn_playbook_exp
  • Case Playbook for Onboarding: sn_onboarding (required if you need the predefined playbook experience)
  • Case Playbook for Product Support: sn_product (required if you want to use the product case playbook and record generator)

Plugins are available from the ServiceNow® Store. For more information, see Playbook plugins.

Summary of steps for setting up Playbooks for Portals

You can set up Playbooks for Portals using the following high level steps.

  1. Define your process using Workflow Studio. See Create a playbook for more information.
  2. Activate the record generator. For more information, see Activate the record generator.
  3. Set up ACLs (Access Control Lists) to provide the appropriate read, write, and create permissions for users. See Explicit Roles in CSM for more information.

    Note: Add write and create roles with a condition based on "State=draft" so that users can only edit the fields in the draft state.

  4. Create a Playbook Content Item so that users can navigate to the Playbook experience. See Create a Playbook Content Item for more information.

  5. Set up a redirection widget so that users are redirected to the playbook intake experience once the state changes from "draft" to "new." See Set up a redirection widget for more information.

Related topics

Playbooks for Portals

Using Playbooks for Portals

Creating an onboarding case with Playbooks for Portals

Activate the record generator

Create a Playbook Content Item

Create a content item of Playbook type on portal so that users can navigate to the playbook experience. These content items are specifically configured to enable the playbook experience on portals.

Before you begin

Role required: admin

Procedure

  1. Navigate to All > Playbook Content Items > New.
Image omitted: playbook-content-item.png
content item form showing all fields
  1. In the form, fill out the fields.
FieldDefinition
NameThe name of the content item you are creating
TableMap your table here
Record IDAlways enter -1
Playbook experienceThe name of your playbook experience
Playbook experience record generatorMap your record generator
Portal pagecsm_intake standard with the Playbooks for Customer Service Management application.Note: You can clone the csm_intake page and modify it per your requirements.
TitleTitle that appears at the top of the page.
  1. Select Submit.

What to do next

After completing this step, you can navigate to the portal where the catalog is mapped and execute the content item. The playbook intake experience opens, with the record generator mapped as the first activity.

Set up a redirection widget

You can set up a widget to reroute the user to the csm_ticket page once the record state changes from draft to new, indicating that the user has completed the intake process.

Before you begin

Role required: admin

Procedure

  1. Navigate to All > Service Portal > Widgets.

  2. Open the widget CSM Intake Redirect.

  3. Add the following code the in the client controller section.

    Note: As a best practice, clone the CSM Intake Redirect widget to modify and replace it on the csm_intake page, or on your custom page.

    spUtil.recordWatch($scope, 'sn_customerservice_case', c.data.filter, function(response) { //replace sn_customerservice_case with your table.
    
            if (response.data.operation == "update" && response.data.record.state && response.data.record.state.value != "0") { //checking if the state is not draft
    
                if (($window.location.href).indexOf('?id=csm_ticket&') == -1);
                $window.location = "?id=csm_ticket&table=" + c.data.table + "&sys_id=" + c.data.sys_id;
            }
        });
    
  4. Select Update.