Customer Portal

Get Involved. Join the Conversation.


  • Sebastiaan Draaisma


  • Anthony Smith

    Man Sebastiaan is always onto it at the speed of light! 

    I was just gonna add this link here, specifically the /customer/ folder descriptions are pretty useful if you're unfamiliar with what sits where:

  • Sebastiaan Draaisma

    Go to:


    Look for the following 2 widgets

    <rn:widget path="input/ProductCategoryInput"/>
    <rn:widget path="input/ProductCategoryInput" data_type="Category"/>

    Replace this with:

    <!-- <rn:widget path="input/ProductCategoryInput"/> disable product -->
    <!-- <rn:widget path="input/ProductCategoryInput" data_type="Category"/> disable category -->

    Save the change

    Go to https://<YOURSITE>

    Click on Development Mode to view site in development mode and you should no longer see the prod & cat
    After that deploy the change, first to Stage, after that to Production

    And you are done :-)

  • Willie Eide

    I wanted to toss a follow up here regarding the roadmap going forward. 

    The PAC and CCL inlays were created because there were legacy syndicated customer portal widgets that had the same functionality and we wanted to replace those widgets with this inlays. That being said, our desire is to incorporate many (not all) of their functionality into one inlay - the embedded chat inlay. 

    Therefore in the coming releases, you'll see the embedded chat inlay gain additional functionality in the sense of delaying before appearing, performing some simple polling for available sessions and even hitting the chat server before the end user clicks on the inlay in order to inform about holiday or office hours. 

    Our desire is that you only have to interact with one inlay instead of trying to hook different inlays together to match your desired functionality on your site.

    Willie Eide

  • Willie Eide

    Check out my post at for additional information

  • Willie Eide

    Ok. Seems like we are getting away from the original issue here. Let's continue this question in another thread and I will ping you and we can have an open discussion about Chat Offers (proactive and conditional) and the Embedded Chat and when and how you should use them for your particular use case. This way, others can view the conversation and learn as well. 

  • Zheng Lai

    Thanks so much for your detailed response. Your suggestion, including running the click event on the minimize button, does the trick for showing the Embedded Chat Inlay properly. However, I realized that my initial understanding of the 'inlay-oracle-chat-ccl-loaded'  event is wrong which means that my conditional logic doesn't actually work.

    I thought that this event only fires when there are available agents. However, I've discovered that this event always fires once the Conditional Chat Link loads in the background, even if it's not displayed. This means that if no agents were available, the event would still fire, which subsequently fires the 'inlay-oracle-chat-embedded-show' event to display the Embedded Chat Widget.

    Another person told me to create this conditional logic by listening to the poll responses from the CCL inlay polling. I can see the response body of each response in the Chrome network tab:{"queueId":1,"queueIdString":"1","expectedWaitSeconds":0,"expectedWaitSecondsString":"0","availableAgentSessions":0,"totalAvailableAgents":0...}

    But I have no idea how to go about listening for the poll responses to query the "availableAgentSessions" property before firing the 'inlay-oracle-chat-embedded-show' event. Do you know if this is possible?

    Note: I will be putting this chat inlay on an external website, so I won't be able to use the <rn:condition> page tags to create this conditional logic.

  • Willie Eide

    2 answers here:

    1) Here is my full response to your need

    <inlay-oracle-chat-embedded class="inlay" id="chatInlay" site-url="" inlay-hidden="true"></inlay-oracle-chat-embedded>
    var showChatInlay = function() {
      (window.oit && window.oit.inlayIsLoaded)
        ? waitForChatInlay()
        : document.addEventListener('oit-loaded', waitForChatInlay);
    var waitForChatInlay = function() {
        ? fireChatInlayShowEvent()
        : document.addEventListener('inlay-oracle-chat-embedded-loaded', fireChatInlayShowEvent);
    var fireChatInlayShowEvent = function() { oit.CustomEvent('inlay-oracle-chat-embedded-show', { detail: { id: 'chatInlay' } }));
    setTimeout(showChatInlay, 0);

    That way, you can check to see if the inlays are loaded before trying to show it. 
    As for the "" we only do that becasue IE is quirky and we need to do the fire()

    2) I see what you are trying to do. For now, you may want to run a click event on the chat-embedded to minimize it. I hesitate to add this as a new feature because what we really want to do is to add polling to the chat-embedded inlay and thus actually do what you want instead of all of this custom code. That ticket is currently on my board. I don't know if we will get to it before the holidays because there are only 2 more planned deployments before our "holiday freeze" and the last deployment will be around Nov 12th. 

  • Sebastiaan Draaisma

    No problem. Glad I could help.

    Just in case you were not aware of these settings. To allow incoming email without automatic contact creation you will need to disable the following settings:

  • Aparajit Malli

    At this point, there is no FAQ (we are not using another system for Knowledge). 

    We don't have the OOTB account/questions/list enabled.. So, they cannot respond from customer portal. 

    Thanks for your help, Sebastiaan! 

  • Sebastiaan Draaisma

    Steering traffic to your customer portal is always better as it gives added security and access to FAQ

  • Aparajit Malli

    OK, I am thinking of completely turning off the Techmail (disable Incoming Messages). 

    We are not using or monitoring incoming messages even for our own customers. Also, Contact creation in our system is very strict.. If anyone who is not our customer emails us, contact should not be created  from incidents. 


  • Zheng Lai

    Hi Willie, thanks for responding so quickly, your assumption is correct. I had checked my chrome console before and there were no errors, but that was probably because I was firing the event on the wrong element. I'm not sure where I could have learnt about firing the events on the window.oit object, is there some sort of developer forum or resource to look at besides the documentation on /oit/latest/?

    Anyway, I called the function you provided inside the event handler for the CCL inlay load event listener and it works! However, I had to wrap the function in a setTimeOut as the Embedded Chat Inlay has to be configured fully by the loader.js external script before the 'inlay-oracle-chat-embedded-show' fires, otherwise, nothing happens. This is not ideal as there is still a chance that the Embedded Chat Inlay configuration takes longer than my setTimeOut delay (I'm open to suggestions on how to improve this).

    Now I have a new issue, when the 'inlay-oracle-chat-embedded-show' fires, the inlay displays fully maximized (with the form fields) on the bottom right. However, I need the inlay to display minimized as the OOTB button. My end goal is to only show the OOTB chat button as an option for customers to click on whenever agents are available, which would then maximize the inlay and show the form fields. I previously tried to toggle the inlay-hidden="true" attribute on the embedded chat inlay instead of firing the show event, however, there seem to be other attributes that need to be changed for the inlay to display properly. I'm thinking of firing a "minimize" event on the embedded chat inlay before displaying it, but I have no idea if such an event exists. What do you think?

  • Sebastiaan Draaisma

    There is to my knowledge no way of changing the default behavior but there is an alternative solution and that is to create a custom field (menu type) for your status.
    Then you use the custom field in your workspace, reports and message templates and the out of the box status can still be mapped to custom field status types if desired.

    This way the status will not change unless you do this manually or through a rule

  • Aparajit Malli

    Hi Sebastiaan,

                    Here is the problem. 

    1. Incident Status could be any of the values like Pending Payment, Pending Validation etc... which drive business processes. 
    2. Email gets sent out through Rule Email (from Business Rules)
    3. Customer Replies to Email. 
    4. This updates the Incident Status = Updated
    5. The earlier Incident Status is lost. Someone needs to go and manually set it back after looking into the Audit Log. 

    I just to prevent Step 4.