Engati - User Guide
...
Data Input Node
WhatsApp Flow
14 min
we recognize that entering information via whatsapp chats may be challenging and time consuming for users, potentially leading to a drop in engagement to make things smoother, you can use whatsapp flows to schedule appointments, and reservations, book a service, or schedule a consultation within whatsapp or any other form based use case where structured interactions are more relevant for your business availability availability ensure that your bot is deployed on whatsapp using 360dialog as the provider by following these steps navigate to configure > deployment > whatsapp > provider, and select 360dialog to locate the node, go to bot builder > add node > data input nodes > whatsapp flows setup setup to display your flows on the 'whatsapp flows' node, it is essential to initially create these flows on facebook business manager (fbm) https //business facebook com/wa/manage/ how do you create flows on fbm? how do you create flows on fbm? select whatsapp manager from fbm & select the business account that we need to manage & select the flows option 2\ select the flows option & this will display a list of the flows 3\ click on create new flow fill in the flow name & categories for which flow is being used 4\ once the new flow is created, it is created with the default script we can update the script accordingly to create different flows with multiple screens 5\ once the flow is created, publish the flow 6\ you can also refer to the meta’s official documentation on whatsapp flows https //developers facebook com/docs/whatsapp/flows/gettingstarted/creatingaflow whatsapp flows whatsapp flows once the flow is created in fbm, you can configure it in engati via the whatsapp flows node s s tatic whatsapp flow tatic whatsapp flow select an existing flow choose the appropriate flow from the dropdown menu set up in your facebook business manager (fbm) message compose an initial message that introduces and outlines the purpose of your flow button label specify a name for your action button that will activate your flow choose the path choose the appropriate path from your current bot using the dropdown menu this path will be activated after interacting with the mentioned button attribute values for dynamic fields specify attributes for this field to retrieve a dynamic value according to your specific use case dynamic whatsapp flows dynamic whatsapp flows to allow flexible and personalized automation in conversations, engati supports dynamic whatsapp flows using two methods 1\ attribute based dynamic flows with this method, you can pass dynamic attribute values into your flow fields these values are retrieved from user attributes already captured in the conversation supported attribute types string (default) number boolean array object benefits pre fill form fields using known data like user name, phone number, selected product, etc reduce typing effort and errors build personalized experiences for each user how to configure navigate to bot builder > add node > whatsapp flows select your flow created in fbm in attribute values for dynamic fields , add attribute references like {{user name}}, {{user email}}, {{selected product}}, etc save and connect this node to your bot path example a previously saved {{appointment time}} can be auto filled in the whatsapp flow form 2\ endpoint based dynamic flows this method enables you to fetch live data from a backend api and inject it into your whatsapp flow in real time when to use flow input fields depend on real time data (e g , available slots, stock info, pricing) you need to render different options based on user segments or preferences how to configure create the flow in fbm in flow configuration, specify a valid endpoint url to fetch the dynamic data ensure the endpoint response follows meta’s expected format on engati, select this flow in the whatsapp flow node example fetch and display service slots based on the user's pin code or service category 3\ bsp compatibility dynamic whatsapp flows are now supported across all major bsps 360dialog karix sinch previously, only 360dialog supported dynamic flows using static strings now, all supported types (string, number, boolean, array, object) and both flow methods (attribute and endpoint based) are available across the platforms flow templates flow templates 1 multiple screens (login) { "version" "3 0", "screens" \[ { "id" "login", "layout" { "type" "singlecolumnlayout", "children" \[ { "type" "form", "name" "flow path", "init values" { "path" "happy find ap" }, "children" \[ { "type" "textinput", "name" "name", "required" true, "input type" "text", "label" "name" }, { "type" "textinput", "name" "email", "required" true, "input type" "text", "label" "email" }, { "type" "footer", "label" "continue", "on click action" { "name" "navigate", "next" { "type" "screen", "name" "confirmation" }, "payload" { "name" "${form name}", "email" "${form email}" } } } ] } ] }, "title" "login", "data" {} }, { "terminal" true, "data" { "name" { "type" "string", " example " "john" }, "second name" { "type" "string", " example " "kane" } }, "id" "confirmation", "title" "confirmation", "layout" { "type" "singlecolumnlayout", "children" \[ { "type" "textheading", "text" "confirm details" }, { "type" "textsubheading", "text" "name" }, { "type" "textbody", "text" "${data name}" }, { "type" "textsubheading", "text" "email" }, { "type" "textsubheading", "text" "${data email}" }, { "type" "footer", "label" "continue", "on click action" { "name" "complete", "payload" { "name" "${data name}", "second name" "${data email}" } } } ] } } ] } 2\ ticket booking { "version" "3 1", "screens" \[ { "id" "sign up", "title" "finish sign up", "data" {}, "terminal" true, "success" true, "layout" { "type" "singlecolumnlayout", "children" \[ { "type" "form", "name" "form", "children" \[ { "type" "textinput", "name" "firstname", "label" "first name", "input type" "text", "required" true }, { "type" "textinput", "label" "last name", "name" "lastname", "input type" "text", "required" true }, { "type" "textinput", "label" "email address", "name" "email", "input type" "email", "required" true }, { "type" "footer", "label" "done", "on click action" { "name" "complete", "payload" { "firstname" "${form firstname}", "lastname" "${form lastname}", "email" "${form email}" } } } ] } ] } } ] }