When adding a new step to a Fin Procedure, the instruction step is the default step. The Instruction step is the most powerful, it allows you to define a coherent unit of work for Fin to execute in natural language.
Instruction step capabilities
While executing instruction steps, by default Fin has access to the below tools
Logic & flow controls
@Condition
Adds branching logic (IF / ELSE).
@Run sub-procedure
Allows you to reuse a common flow without rewriting it, or a complex flow you would like to hide from the main flow.
@ Create sub-procedure
Build a new nested flow directly from your current editor.
Data operations
@ Read attribute
You can tell Fin to @read any intercom attribute, this pulls the data into the context of the procedure. Example @read name and greet the user by their name.
@ Update attribute
You can tell Fin to @update any intercom attribute.
@Create attribute
Create a new attribute on the fly if the one you need doesn't exist yet.
Knowledge & context
@Look up content
Directs Fin to search your Help Center or external knowledge base for specific information.
@Use data connector (Call an API endpoint)
When you @use a data connector Fin will hit that API endpoint. Optimise to use no more than one data connector per step.
@Create data connector
Build a new nested flow directly from your current editor.
Routing & ending
@End
Ends the Procedure immediately and passes back to Fin.
@Handoff to team
Hands the conversation over to a team or teammate.
@Handoff to Workflow
Ends the Procedure and passes the user to a Workflow.
@Switch procedure
Ends the current procedure and immediately starts a different one.
Conversation actions
@Tag
This lets Fin dynamically apply a tag to a conversation.
Note:
If it’s not in this list of the above tools, Fin can’t do it, e.g. Fin can’t send emails, make phone calls or use any other tools.
Generally, if you can’t “@” or “/” the capability, then it’s not supported.
We also recommend that you don’t use natural language commands such as “Go to another procedure” or "Add a note", "remove a tag" or "Varify customer OTP".
Best practices
There are two high-level design principles when writing instructions
One instruction step should represent a meaningful unit of work
Fewer well designed steps that coherently combine related actions are better than many separate small steps. At the same time steps should not be too large: as a rule of thumb limit the number of data connector calls on a step to one and reduce the number of update attributes, or tags to what is absolutely necessary so Fin can execute faster.
❌ Less effective example:
Step 1 - @read Email.
Step 2 - Ask for email if it's not there.
Step 3 - @use get_subscription_details
Step 4 - Send a reply listing every API field.
✅ More effective, better structured example:
@read email. If it is not known, ask the user for their email before continuing. Then @use get_subscription_details and reply asking the user what they need help with. Include the user's current plan, plan status, and next renewal date in your reply.
Keep things simple and clear
Always Optimized to keep things simple and clear so Fin can follow your instructions without getting confused. If a human with no context can’t understand your instructions it's likely that Fin won’t understand them either. Use plain, concrete verbs. Write steps with everyday action verbs (ask, check, send, update, escalate). Avoid abstract or formal verbs (validate, ascertain, perform, facilitate).
❌ Less effective example - Not clear what an order number or tracking number is:
Collect the customers order number: Collect the customers order number and make sure it is valid and not a tracking number.
✅ Well‑structured step - Tell Fin what the order number looks like and what to do if the customer can not provide it:
Collect the customers order number:
If they provided a number but it is longer than 11 characters excluding the # at the start of the number, then let them know that it may be a tracking number and ask them for the order number again.
If the customer can not provide their order number do not continue @Escalate:Support team
Need more help? Get support from our Community Forum
Find answers and get help from Intercom Support and Community Experts

