Partners now can build plugins that leverage EPC. If you are new to EPC, see What do I need to get started?

Partners can use their existing EPC API keys to register a plugin as an EPC product. A sample Create Plugin Product request payload is shown below:

{
    "partnerId": "12345678",
    "name": "PartnerName-PluginName",
    "listingName": "Marketing Plugin Name",
    "environment": "prod",
    "status": "approved",
    "integrationType": "PLUGIN",
    "interfaceUrl": "https://partnerpluginurl.com/plugin.html",
     "tags": {
        "workflows": [
            "interactive"
        ],
        "categories": [
            "PLUGIN"
        ],
        "applications": [
            "urn:elli:application:loconnect"
        ]
    },
    "entitlements": {
        "access": {
            "allow": [
                "urn:elli:encompass:BExxxxxxxx",
                "urn:elli:encompass:BEyyyyyyyy"
            ],
            "deny": [
                ""
            ]
        }
    }
}

This results in a plugin being created as an EPC product. A sample Create Plugin Product request payload is shown below:

{
     "id": "c089bb5b-b715-437c-9e3b-38e813524e52",
     "partnerId": "12345678",
     "name": "PartnerName-PluginName",
     "listingName": "Marketing Plugin Name",
     "environment": "prod",
     "status": "approved",
     "integrationType": "PLUGIN",
     "interfaceUrl": "https://partnerpluginurl.com/awesome_plugin.html",
     "tags": {
          "workflows": [
               "interactive"
          ],
          "categories": [
               "PLUGIN"
          ],
          "applications": [
               "urn:elli:application:loconnect"
          ]
     },
     "entitlements": {
          "access": {
               "allow": [
                    "urn:elli:encompass:BExxxxxxxx",
                    "urn:elli:encompass:BEyyyyyyyy"
               ],
               "deny": [
                    ""
               ]
          }
     },
    "created": "2026-02-19T00:22:12Z",
    "createdBy": "urn:elli:service:epc-partner-service",
    "oAuthClientId": "41sts5i9"
}

Note:

  • The plugin is now hosted by the partner. This includes the landing HTML page and any supporting assets, such as JavaScript files.
    The interfaceUrl points points to the plugin’s landing page, which is used by ICE Mortgage Technology applications to load the plugin at runtime.
  • While the HTML page may contain visual elements, the Encompass platform does not render them. The plugin framework is designed for data manipulation, not for presenting visual UI elements.
  • The plugin’s JavaScript files can access and use any scripting objects provided by the ICE Secure Scripting Framework.
  • Sample HTML page:
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta id="google" content="notranslate" />
  <meta http-equiv="Content-Language" content="en" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta id="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width" />

  <meta id="msapplication-TileColor" content="#2080CD" />

  <meta id="theme-color" content="#2080CD" />
  <title></title>

  <script src="https://cdn.mortgagetech.ice.com/elliemae/core/ssf/1.11.1/elli.ssf.guest-with-polyfill.js"></script>
  <script src="./awesome_plugin.js"></script>

</head>

<body>
<div>
  Hello World - Awesome Partner Plugin </br>
</div>
</body>
</html>
  • Sample JavaScript file:
async function navigateToDocuments(proxy, data) {
  const appObj = await elli.script.getObject('application');
  const navPayload = {
    target: "SERVICES",
    type: "OTHER"
  };
  const loanObj = await elli.script.getObject('loan');

  const fieldVal = await loanObj.getField('4000');
  console.log('Inside loan open')
  if (fieldVal === 'NavigateToDocuments') {
    setTimeout(() => {
      appObj.navigate(navPayload);
    }, 1000); 
  }
}
if (elli && elli.script) {
  elli.script.connect();
  elli.script.subscribe('loan', 'change', navigateToDocuments);
}