# Creating Custom Workflows

When the default workflow isn't quite right, create your own. This walkthrough covers the full path from *Create Workflow* to a Published workflow your users can log in to.

## Before you start

* The **role** you'll attach this workflow to already exists. Roles are configured by your NetSuite Admin — see [Roles & Permissions](/client-admin-guide/managing-users/roles-and-permissions.md) for what's possible from the Client Admin side.
* The **catalog** the workflow will use is already created (if it needs one). See [Creating a Catalog](/client-admin-guide/creating-catalogs.md).
* The **theme** for your subsidiary is configured so pages render with your branding. See [Theme Builder](/netsuite-admin-guide/theme-builder.md) (NetSuite Admin).

## The full walkthrough

{% stepper %}
{% step %}

### Open Workflow Builder

Click **Workflow Builder** in the sidebar. The page heading reads **Workflows**. Click **Create Workflow** in the top-right.
{% endstep %}

{% step %}

### Configure the new workflow

The dialog opens. Fill in:

* **Entity Type** — Employee, Customer, Vendor, or Partner.
* **BRM Role** — the role this workflow will attach to (filtered by entity type).
* **Use Default Workflow Template** — tick to start from a default template; pick from the dropdown.
* **Copy from Existing Workflow** — alternative: clone any current workflow on this subsidiary.

Tick at most one of the two starting-point options. Leave both unticked to start from an empty workflow. Click **Create**.
{% endstep %}

{% step %}

### Add modules on the Workflow tab

The new workflow opens with two tabs: **Workflow** and **Settings**. The Workflow tab is where modules live as cards.

Click **+ Module** in the top-right. The Add Module dialog opens with category filters (All / Pages / Navigation / Utility) and the available types.

The available module types are:

| Type                   | Use when                                                                        |
| ---------------------- | ------------------------------------------------------------------------------- |
| **Dashboard**          | Home/landing page. **One per workflow**, locked at position 1.                  |
| **Page**               | General-purpose page — search, lists, custom forms, info pages.                 |
| **Order Form**         | Transaction entry — POS, sales orders, invoice payment.                         |
| **Catalog**            | Product browsing and selection.                                                 |
| **Reports**            | Data visualisation and analytics.                                               |
| **Modal**              | Pop-up dialog page that overlays another page.                                  |
| **Public Page**        | Page accessible without login — used for the public-facing catalog.             |
| **Header Navigation**  | Custom top nav. **One per workflow**, locked at position 2.                     |
| **Sidebar Navigation** | Custom sidebar nav. **One per workflow**, locked at position 3.                 |
| **Copy Module**        | Utility — clone an existing module from a default template or another workflow. |

Pick a type, give the module a name, click create. Repeat for every page the workflow needs.
{% endstep %}

{% step %}

### Reorder modules with drag-and-drop

Modules sort top-to-bottom in the order they appear in the User Portal navigation. Drag a card to reorder.

{% hint style="warning" %}
**Dashboard, Header Navigation, and Sidebar Navigation are locked at positions 1, 2, and 3.** They can't be moved out of those positions — every other module can move freely.
{% endhint %}
{% endstep %}

{% step %}

### Design each module's page in the Page Builder

Click anywhere on a module card — the icon, title, description, or the gear icon — to open it in the Page Builder. Build the page using components from the left panel; the right panel configures the selected component. Save.

See [Page Builder: Getting Started](/client-admin-guide/active-workflows/getting-started.md).
{% endstep %}

{% step %}

### Configure workflow Settings

Switch to the **Settings** tab. Set:

* **Label** — display name for this workflow.
* **Use label as prefix in title bar** — adds the label to the browser title bar.
* **Role** — confirm the role assignment (filtered by entity type).
* **Catalog** — the catalog this workflow uses for product browsing.
* **Default Price Level** — applied when no customer-specific pricing exists. Defaults to *None (use existing hierarchy)*.
* **Active** toggle — disable to block access and show a custom **Disabled Message**.
* **Require PIN** + **PIN Code Field** — force PIN entry for access. See [PIN Override](/client-admin-guide/workflow-builder-overview/pin-override.md).
* **Session Variables** — workflow-level key/value pairs available across modules. See [Session Variables](/client-admin-guide/workflow-builder-overview/module-variables.md).
* **Global CSS** — custom style rules that apply across every page in this workflow. Use this to tweak colours, fonts, or spacing consistently throughout the workflow without touching the global theme. These styles load automatically when the workflow loads and are removed when the user leaves.

Click **Save All Settings & Variables** at the bottom.
{% endstep %}

{% step %}

### Test as a real user

There's no built-in preview today. Create a test user with the target role, log in to the User Portal in an incognito window, and walk through every page. See [Testing & Debugging](/client-admin-guide/workflow-builder-overview/testing-and-debugging.md).
{% endstep %}

{% step %}

### Publish

Back on the Workflows page, click **Publish** on this workflow's row. The status flips to *Published* and the workflow goes live for any user with the assigned role.
{% endstep %}
{% endstepper %}

## Recommended page combinations

Common starting points:

| Workflow purpose      | Modules                                                             |
| --------------------- | ------------------------------------------------------------------- |
| Retail POS cashier    | Dashboard, Place Order (Order Form), Catalog, Reports               |
| Customer self-service | Dashboard, Catalog, Order History (Page), Account (Page)            |
| Back office           | Dashboard, Transaction Search (Page), Entity Search (Page), Reports |

## What success looks like

* The workflow appears as Published on the Workflows page.
* It shows up in the **Active Workflows** sidebar group.
* A test user with the assigned role logs in and sees your modules in the right order.

## Common mistakes

* **Skipping the test step.** Always log in as a test user before declaring it done. Admin-side previews don't simulate end-user data.
* **Wrong module type.** A *Page* module won't expose Order Form's transaction-building components. Pick the right type from the start. Changing later means redesigning the page.
* **Too many modules.** Aim for 4–7 per workflow. Cluttered nav is harder to use than a focused one.
* **Forgetting to save the page after editing.** Page Builder edits don't reach the portal until you save *and* the workflow is Published.

## Related

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Module Types</strong></td><td>Detailed reference for every module type and its components.</td><td><a href="/pages/g2JG7KMppsgCgHq9QDJ3">/pages/g2JG7KMppsgCgHq9QDJ3</a></td></tr><tr><td><strong>Assigning Workflows</strong></td><td>Link a workflow to a role and assign that role to users.</td><td><a href="/pages/I8V6XFZwzQlYGPl43AY0">/pages/I8V6XFZwzQlYGPl43AY0</a></td></tr><tr><td><strong>Publishing Workflows</strong></td><td>Publish, draft, copy, delete behaviour.</td><td><a href="/pages/MyS7tftnSJQmDE5yVln8">/pages/MyS7tftnSJQmDE5yVln8</a></td></tr><tr><td><strong>Testing &#x26; Debugging</strong></td><td>How to verify a workflow before going live.</td><td><a href="/pages/NaAPPkmAOBpwppAQdxE3">/pages/NaAPPkmAOBpwppAQdxE3</a></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.in8sync.com/client-admin-guide/workflow-builder-overview/creating-custom-workflows.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
