Genesys Cloud - Main

 View Only

Sign Up

Expand all | Collapse all

Dynamic Menu

  • 1.  Dynamic Menu

    Posted yesterday

    Has anyone built a dynamic IVR menu in Genesys Cloud that remembers what option a customer chose last time and automatically shortens the menu on the next call? Basically a 'smart IVR lite version' that hides irrelevant options and only plays what the customer actually uses. Curious how you're storing the last selection - external DB, DFO, or pure Architect logic?


    #ArchitectandDesign

    ------------------------------
    Manish Suryavanshi
    Lead Consultant
    ------------------------------


  • 2.  RE: Dynamic Menu

    Posted yesterday

    Hello Manish,

    I'm also curious if anyone else in the Community has built something like this. If not, you may want to submit an idea like this to the Product Ideas Lab



    ------------------------------
    Jason Kleitz
    Online Community Manager/Moderator
    ------------------------------



  • 3.  RE: Dynamic Menu

    Posted yesterday

    Thanks Jason



    ------------------------------
    Manish Suryavanshi
    Lead Consultant
    ------------------------------



  • 4.  RE: Dynamic Menu

    Posted yesterday

    Interesting question! This is definitely a pattern that comes up, and while Genesys Cloud doesn't have an out-of-the-box "smart IVR" that remembers customer choices automatically, the pieces are there to build it yourself.

    The Storage Options

    You've correctly identified the main options:

    • Data Tables act as a built-in, mini-database within Genesys Cloud . They are excellent for storing simple, static data like a customer's last menu selection or their VIP status . You can read from and write to them directly from your Architect flows. The main limitations are storage size and they are not ideal for large, transactional data volumes .
    • External DB via Data Actions is the more powerful and scalable approach for complex logic or high-volume data . A Static Data Action is a reusable, serverless connector you can configure to talk to a REST API, allowing you to store and retrieve customer preferences from an external system like a CRM or dedicated database .

    The "Pure Architect" Approach

    You can achieve a basic version using only Architect, but it's limited. There is no built-in "customer memory." You would have to rely on flow-level variables which are reset with each call. A pure Architect solution would not allow for long-term, cross-call personalization unless you store the data in a Participant Data attribute, which persists across flows within a single interaction but is lost after the call ends .

    How a "Smart IVR Lite" Could Be Built

    The core of the idea is to make the menu dynamic. Here's a high-level view:

    1. Identify the Customer: At the start of the IVR, use the caller's phone number (Call.Ani) or a logged-in account number to identify them .
    2. Retrieve Last Choice: Use a Data Table Lookup or a Call Data action (for an external DB) to fetch the last menu option they selected .
    3. Play a Dynamic Menu: Based on the retrieved data, build the menu path. You can't generate a menu with a variable number of options from a data action on the fly directly , but you can design a decision tree. Your flow can be structured so that:
      • Decision: "Does this customer have a last choice?"
      • If Yes: Branch to a task that presents a shorter menu, perhaps starting with "Welcome back. Press 1 for the option you used last time..." and then offer general options, or jump them directly to the last used service.
      • If No: Branch to the full, standard menu.
    4. Store the Current Choice: At the end of the IVR path they choose, use a Data Table or Call Data action to update their record with the option they just selected for the next call .

    Important Considerations

    • Simplicity of Data Tables: For a "lite" version, Data Tables are a great choice. They are easy for administrators to manage (you can even upload data via CSV) and keep your business logic separate from your inbound flow, allowing you to update behavior without republishing the entire IVR .
    • Dynamic Prompts: You can use a Find User Prompt action to play pre-recorded audio files based on a variable name (e.g., "menu_short_vip"), making the personalization feel more seamless .
    • Personalization Benefits: The overall goal of such a design is to improve Customer Experience and reduce handle time by getting customers to the right place faster .

    In summary, you have three paths: a simple, limited one using Architect alone; a powerful, flexible one using an external database; and a balanced, built-in approach using Data Tables. The Data Tables option is often the most practical sweet spot for this "smart IVR lite" concept.



    ------------------------------
    Camila Meneghini
    ------------------------------



  • 5.  RE: Dynamic Menu

    Posted yesterday

    This is an incredibly helpful breakdown - thank you Camila for taking the time to lay it out so clearly. I really appreciate how you separated the three approaches (pure Architect, Data Tables, and external DB) and highlighted the practical trade‑offs.



    ------------------------------
    Manish Suryavanshi
    Lead Consultant
    ------------------------------



  • 6.  RE: Dynamic Menu

    Posted yesterday

    Hi Manish,

    I haven't implemented this exact use case, but it sounds like an interesting approach to improving the customer experience.

    My initial thought would be to persist the customer's last IVR selection using either Data Tables or an external data source, then use the caller's ANI (or another unique customer identifier) at the start of the flow to retrieve that preference and decide whether to present a shortened menu or prioritise their previously selected option.

    I'd be interested to hear what others have implemented in production and whether they've found Data Tables sufficient or preferred an external solution for this type of personalization.



    ------------------------------
    Phaneendra
    Technical Solutions Consultant
    ------------------------------



  • 7.  RE: Dynamic Menu

    Posted yesterday

    Thanks Phaneendra



    ------------------------------
    Manish Suryavanshi
    Lead Consultant
    ------------------------------



  • 8.  RE: Dynamic Menu

    Posted 21 hours ago

    Hi,

    One approach could be to store information in CRM, if available. Then, if the new call is within certain time frame, ask from the caller that if he/she is calling for the same matter as the last time. If yes, then skip all the menus and route to the same queue/agent as the last time, if possible.

    Not necessarily usable for your use case, but yet another approach.



    ------------------------------
    Antti Mikkola
    Product Manager
    Telia Finland Oyj
    ------------------------------



  • 9.  RE: Dynamic Menu

    Posted 18 hours ago

    Hi Manish,

    This is actually similar in concept to Intent Taxonomy just at the DTMF level.

    If you use External Contacts you can always store a custom field for Last Menu Selection and then pull that data. This is also better for Data controls as the customer information is not stored in a Data Table. I'd recommend a Data Table for the option logic based on last menu selection.

    You could also store a date for the last menu selection against the contact in case they don't call for a while and you need to open the whole menu.



    ------------------------------
    Richard Chandler
    Connect
    ------------------------------



  • 10.  RE: Dynamic Menu

    Posted 13 hours ago

    Hi Manish

    -

    I implemented a dynamic menu, but instead of basing it on the customer's last call, I used options from a data table:
     
    For example: The main menu has options 1, 2, 3, 4, and 5.
     
    If the client doesn't want to present options 2 and 4, the IVR will adjust accordingly:
     
    Press 1, press 3, press 5.
     
    This is controlled via the data table.


    ------------------------------
    Kaio Oliveira
    GCP - GCQM - GCS - GCA - GCD - GCO - GPE & GPR - GCWM

    PS.: I apologize if there are any mistakes in my English; my primary language is Portuguese-Br.
    ------------------------------



  • 11.  RE: Dynamic Menu

    Posted 9 hours ago

    Hi Manish,

    I agree with Richard, the easiest approach would be using External Contacts. (In regards to this at least being fully on Genesys's side, you wouldn't need an external DB/API from the customer)

    I would say that's the expected feature to be used to store customer's information, and it also already automatically stores the history of all previous interactions from the same customer.

    So it can certainly be used with custom field to store some customer preferences, or even "last choices".

    You can also use the previous conversations to check some data stored on the participant data of each of those.

    For example, after a call goes through the IVR for the first time, you can update some simple data/preferences/choices into the external contact custom fields of that customer, and you can also set some other extra/complex information on the participant data of that call.

    Then when a new call comes in from the same customer, you can check the main preferences/choices on the custom fields from the external contact, and if you need some more detailed information you could use Data Actions to access the participant data of previous conversations and check for that information in there.

    If the volume of customers is small, maybe you can use a Data Table as well (to store preferences and previous choices), but I believe DTs come with lots of limits (Number of rows, columns, and how many actions you can run on them per minute/hour, etc.). And I don't think it's supposed to be used for this type of scenario, but it's certainly an option.



    ------------------------------
    Marcello Jabur
    ------------------------------