---
sourceDocument: Xanadu API Reference
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - en-US

ft:publication_title :

    - Xanadu API Reference

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# Creating and adding a UI extension point

# Creating and adding a UI extension point {#ariaid-title1}

* Release version: Xanadu
* 
* Updated August 1, 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 minutes to read

When developing an application, create UI extension points and add them to the
server-side UI macros, such as HTML extensions, or the UI pages in the base application code.

Use a UI extension point to designate the specific location where data or objects can be sent
to a registered custom UI macro and where returned results are processed.

## Create a UI extension point {#ariaid-title2}

Create a UI extension point that you can place in the UI macros, such as HTML
extensions, in the application code. By placing the UI extension point, you designate the
specific location in the application code where data or objects can be sent to a
customization and where data is returned.

### Before you begin

Role required: admin or the specific role for the developer or administrator of the application  
Note:  
To learn about application-specific administrator roles and delegated development, see [Access control rules in
application administration apps](https://www.servicenow.com/docs/access?context=ACL-access-checks&version=xanadu&pubname=xanadu-application-development&ft:locale=en-US) and [Delegated development and
deployment](https://www.servicenow.com/docs/access?context=c_DelegatedDevelopment&version=xanadu&pubname=xanadu-application-development&ft:locale=en-US).

### About this task

Define the content and structure for an extension point. This definition should describe how a customization should be structured, how it interacts with the application code, and how the data that is returned by a customization at the extension point is processed.

By creating a good definition, you provide a structure for the functionality of the
extensions.

### Procedure

1. Navigate to AllSystem Extension PointsUI Extension Points.
2. Click New.
3. On the form, fill in the fields.  
   {#create-ui-ext-pt__table_tqn_cfv_s1b__entry__2}

   | Field | Description |
   |-|-|
   | Name | Unique name for the extension point. The name can be up to 100 alphanumeric characters, including special characters. |
   | API Name | Name of the extension point API that is pre-pended with the application scope to which it applies. This is a system-assigned name and cannot be changed. |
   | Application | Application scope against which the extension point is assigned. This is system-assigned and cannot be changed. For more information about the protections that are offered by the use of scoping, see [Application scope](https://www.servicenow.com/docs/access?context=c_ApplicationScope&version=xanadu&pubname=xanadu-application-development&ft:locale=en-US). |
   | Restrict to this scope | Option for restricting the extension point to the application scope only. |
   | Allow access over AJAX/REST | Option for enabling or disabling access to the UI extension point over AJAX or REST. To learn more about these development architectures and techniques, see [AJAX](https://servicenow-prod.fluidtopics.net/cdtoLVychgPQghQyCrKyDw#p_AJAX "AJAX (asynchronous JavaScript and XML) is a group of interrelated, client-side development techniques used to create asynchronous Web applications.") and [REST APIs](https://servicenow-prod.fluidtopics.net/2vuQj3~2s_niNXyXhrbRZA "REST (REpresentational State Transfer) is a simple stateless architecture that provides standards between computer systems on the web, making it easier for them to communicate with each other."). |
   | Description | Requirements for the custom UI macro, such as how the UI script should be structured and how it should operate with the application code. |
   | Example | Example of how a custom UI macro that interacts with this extension point should be structured so it operates with the application code. |
   [Table 1. UI Extension Point form]

   {#create-ui-ext-pt__table_tqn_cfv_s1b}
4. Click Submit.
{#create-ui-ext-pt__steps_mfs_mgn_pdb}

## Add a UI extension point in the base application code {#ariaid-title3}

Add the UI extension point into a UI macro or HTML extension in the base application
code. To add the extension point, place an API call that identifies the location at which
registered custom artifacts execute.

### Before you begin

Role required: admin or the specific role for the developer or administrator of the application

You must first create a UI extension point before you can add it to a UI macro or UI page in the application
code.  
Note:  
To learn about application-specific administrator roles and delegated development, see [Access control rules in
application administration apps](https://www.servicenow.com/docs/access?context=ACL-access-checks&version=xanadu&pubname=xanadu-application-development&ft:locale=en-US) and [Delegated development and
deployment](https://www.servicenow.com/docs/access?context=c_DelegatedDevelopment&version=xanadu&pubname=xanadu-application-development&ft:locale=en-US).

### Procedure

1. In the application code, access the existing UI macro that you want to add a scripted extension point to or create a new one.  
   To learn more about creating UI macros with jelly tags, see [UI macros](https://servicenow-prod.fluidtopics.net/~qIUyqeIRdrSnlC1RcqGNQ#c_UIMacros "UI macros are discrete scripted components administrators can add to the user interface.") and [Jelly tags](https://servicenow-prod.fluidtopics.net/bFEsFPLb1WYlQoamRDEfNg "Use Jelly to turn XML into HTML.").
2. In the UI macro, add a jelly tag with a line of code at the location that you expect to collect and process custom UI macro output.  
   Typically, this line of code contains:
   * A `call_extension` command that identifies the name of the UI extension point (for example, `extension="global.KMArticle.ViewHeader"`) against which the custom UI macros are registered.
   * Arguments that are passed into the UI macro when it is rendered. For example, for a Knowledge Base article, `knowledgerecord="${knowledgeRecord}"` passes in the current knowledge record.{#add-ui-ext-pt-base-ui-macro__li_fpg_bw2_ygb}
   {#add-ui-ext-pt-base-ui-macro__li_fpg_bw2_ygb}
   * (Optional) If there are multiple implementations of this extension point, using a `limit` command specifies that x number of implementations should be returned (for example, `limit="1"`). This figure shows a UI macro that contains these commands.

   {#add-ui-ext-pt-base-ui-macro__ul_gxz_4zv_bgb}

{#add-ui-ext-pt-base-ui-macro__steps_mfs_mgn_pdb}

*[\>]: and then


