Workflow Recording Best Practices
Record reliable workflows, understand the SDK handoff, and publish a user-safe guide.
Why This Guide Exists
A workflow recording is not just a capture artifact. It becomes draft logic, QA context, and eventually user-facing guidance, so the source recording needs to be clear, stable, and safe to adapt.
- Primary goal
- Create a recording that survives review, preview, and publish.
- Audience
- Internal authors, reviewers, and operators preparing customer-facing help.
- Next
- Pair this page with Workflow Authoring and SDK Reference.
Prepare the Real Path Before You Record
A polished draft cannot rescue a recording made on a fake path that customers never see.
Selectors anchored to meaningful IDs are much more resilient than text or DOM position alone.
Names, URLs, and configuration examples should feel real without exposing secrets, customer data, or internal project names.
Avoid mixing multiple branches, fallback flows, or optional detours into the same first recording.
Dismiss unrelated banners, timers, chat widgets, and admin overlays that a real user would not need for the task.
Do not record secrets, internal ticket references, private customer identifiers, debug-only controls, or roadmap language you would not want exposed in review copy or user-facing docs.
Record Like You Are Teaching the User
Start from the same entry point your user will use
Use the real navigation path or launch point rather than jumping in halfway from an internal shortcut.
Narrate the user goal, not the internal implementation
Say what the user is trying to accomplish and what they should expect to see next.
Pause for true user decisions
Mark names, credentials, approvals, pricing choices, and confirmation steps as user-owned checkpoints.
Stop at first success
Once the user has clearly achieved the outcome, end the recording instead of drifting into adjacent tasks.
- Prefer one workflow per intent. If the path splits early for different personas or plans, create separate recordings.
- Use visible product language in narration so the generated copy matches what the customer sees on screen.
- Avoid describing hidden logic, backend jobs, or reviewer-only controls in spoken notes unless they are required for internal QA.
- When a step requires user input, capture the prompt and expected action clearly so the resulting draft pauses in the right place.
SDK Deep Dive: What the Recording Hands Off To
The SDK is the runtime layer that turns a reviewed workflow into an in-product experience. Recording quality matters because playback depends on stable identity, stable targets, and a mounted UI surface.
| Prop | Type | Description |
|---|---|---|
ModelNexProvider Required |
component |
Top-level runtime wrapper that carries websiteId, user identity, and workflow state through route changes. |
userProfile |
object |
Persistent user ID plus audience or first-use fields that let targeting, resume behavior, and completion state work correctly. |
ModelNexChatBubble |
component |
The default user-facing surface for chat plus workflow playback in most integrations. |
startWorkFlow(workFlowId) |
method |
Programmatic launch path for buttons, empty states, checklist items, and other explicit workflow entry points. |
useRecordingMode |
hook |
Internal authoring tool for trusted reviewers. Keep it out of public documentation and customer-facing enablement. |
For the runtime itself, start with the provider pattern from Quickstart and the launch behavior from Workflow.
import {
ModelNexProvider,
ModelNexChatBubble,
} from '@modelnex/sdk'
function AppShell() {
return (
<ModelNexProvider
websiteId="your-website-id"
userProfile={{
userId: currentUser.id,
type: currentUser.role,
isNewUser: currentUser.isNewUser,
features: currentUser.enabledFeatures,
}}
>
<Routes />
<ModelNexChatBubble appName="My Product" />
</ModelNexProvider>
)
}
When the workflow should begin from a visible in-product action, use a manual launch rather than relying on users to discover it through freeform chat.
import { useModelNex } from '@modelnex/sdk'
export function SetupButton() {
const { startWorkFlow } = useModelNex()
return (
<button onClick={() => void startWorkFlow('FLOW_ID')}>
Start Workspace Setup
</button>
)
}
Public docs can explain user-visible entry points, prerequisites, and expected outcomes.
Internal docs can cover preview URLs, dev-mode access, reviewer workflows, re-teach, and other authoring-only controls.
User-Facing Guide Without Revealing Internal IP
Customer-facing guides should describe what the user sees, what they need to provide, and what success looks like. They should not reveal internal selectors, dev tooling, preview modes, or internal naming conventions.
Visible UI language
Use the exact screen names, button labels, and result states the user can actually see.
Prerequisites and decision points
Tell users what access, files, approvals, or credentials they need before they begin.
Internal implementation details
Leave out test IDs, feature flags, project codenames, private reviewer notes, and debug instructions.
Sensitive values
Never show live tokens, customer identifiers, or operational details that are unnecessary for task completion.
A simple Markdown article works well for help centers, in-app docs, and support handoffs. Teams can start from this template and swap in product-specific labels.
# [Workflow name]
## What this guide helps you do
Complete [outcome] in [product name] without leaving the product.
## Before you start
- Make sure you have access to **[screen or permission]**.
- Have **[credential, project name, approval, or setting]** ready.
- Plan for about **[x] minutes**.
## Steps
1. Open **[screen name]**.
2. Select **[button label]**.
3. Enter **[user-provided information]** when prompted.
4. Confirm the result on **[success screen or confirmation state]**.
## If something looks different
- If you do not see **[button label]**, check your role, plan, or prerequisite setup.
- If the workflow pauses, complete the requested action and then continue.
- If the screen has changed, return to the last confirmed step instead of restarting from scratch.
## What success looks like
You should see **[success state]** and be ready for **[next task]**.
Review Before You Publish
Confirm targets, timing, pauses, and resume behavior on a fresh user session.
Remove project codenames, ops shorthand, reviewer notes, and internal-only route descriptions.
If admins and end users see different screens, do not assume one recording can safely explain both.
Make sure the workflow can recover coherently if the page reloads or the user navigates away and back.
The written guide and the in-app workflow should use the same terms, same order, and same success criteria.
Continue with Workflow Preview and Publish. Keep SDK Reference open nearby for runtime details and Knowledge Base for indexed support content.