Skip to main content

How to write instructions in Fin Procedures

Learn how to write instructions in Fin Procedures using natural language.

Beth-Ann Sher avatar
Written by Beth-Ann Sher
Updated today

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


💡Tip

Need more help? Get support from our Community Forum
Find answers and get help from Intercom Support and Community Experts


Did this answer your question?