How to add button in email notification

anvitha ash
Tera Contributor

Hello,

 

I need to add a button in email notification triggered to user, button called "Close Request" when user click on the button it should update the RITM record state to "Closed Completed" 

 

How can I achieve this. Could someone please let me on this 

 

Thanks in advance 😃 

1 ACCEPTED SOLUTION

Hello @anvitha ash 

Sorry for delay in response.

After going through entire overnight discussion do find updated things for your requirement.


Over email notification you need two buttons so the HTML source code as below:

 

<table style="border-collapse: collapse; width: 100%;" border="0">
<tbody>
<tr>
<td style="width: 100%; height: 52px; padding-top: 16px;"><span id="closerequest" class="btn" style="border-radius: 4px; border: 1px solid #4f52bd; padding: 6px 16px; color: #4f52bd;">${mailto:mailto.btn.closeRequest}</span><span id="createtaskforrequest" class="btn inverse" style="margin-left: 16px; border-radius: 4px; border: 1px solid #4f52bd; padding: 6px 16px; background-color: #4f52bd; color: #fff;">${mailto:mailto.btn.createtaskforrequest}</span></td>
</tr>
</tbody>

 

 

Then you will need two email template which will showcase details over your button and when click it will open a mailbox window so user will send email to ServiceNow instance.

Email template is created under table = sysevent_email_template

 

First will be for Close Request which will be as below:

VirajHudlikar_0-1737804470972.png

 

Second will be Create Task which will be as below:

VirajHudlikar_1-1737804502434.png

 

 

Email Preview will be as below:

VirajHudlikar_0-1737805174038.png

 

Now when any button is click it will open an outlook window to reply back to our instance which will look as below:

VirajHudlikar_2-1737804810270.png

VirajHudlikar_3-1737804868222.png

 

 

Now to when this email comes in ServiceNow we need inbound action which I have already provided above in reply but to save scroll time here we go again with same.

 

Inbound action named as Create Task on table sc_task with type as reply and condition as mail.subject.indexOf('Create Task') > -1 and script will be as below

 

 var gr = new GlideRecord('sc_task');
    gr.initialize();
    gr.setValue('parent', email.instance);
    gr.setValue('short_description', 'New Task for RITM ' + email.instance);
    gr.insert();

 

 

Inbound Action with name as Close Request, for table sc_req_item with type as Reply and condition something as email.subject.indexOf('Close Request') > -1 which checks whether email subject is having word as Close Request and then in script field you will need to put code to update ritm to close when email is process so it will be as below. 

 

 var gr = new GlideRecord('sc_req_item');
    if (gr.get(email.instance)) {
        gr.setValue('state', 3); // 3 is the value for "Closed Complete"
        gr.update();
    }

 

 

If my response has helped you hit helpful button and if your concern is solved do mark my response as correct.

 

Thanks & Regards
Viraj Hudlikar.

View solution in original post

35 REPLIES 35

@anvitha ash 

Try this in email script:

var emailLink = '/api/now/v1/table/sc_req_item/' + current.sys_id + '?sysparm_action=update&state=3'; 

Hope this helps!

 

"If you found my answer helpful, please like and mark it as an "accepted solution". It helps future readers to locate the solution easily and supports the community!"

 

Thank You
Juhi Poddar

Hello @anvitha ash 

Sorry for delay in response.

After going through entire overnight discussion do find updated things for your requirement.


Over email notification you need two buttons so the HTML source code as below:

 

<table style="border-collapse: collapse; width: 100%;" border="0">
<tbody>
<tr>
<td style="width: 100%; height: 52px; padding-top: 16px;"><span id="closerequest" class="btn" style="border-radius: 4px; border: 1px solid #4f52bd; padding: 6px 16px; color: #4f52bd;">${mailto:mailto.btn.closeRequest}</span><span id="createtaskforrequest" class="btn inverse" style="margin-left: 16px; border-radius: 4px; border: 1px solid #4f52bd; padding: 6px 16px; background-color: #4f52bd; color: #fff;">${mailto:mailto.btn.createtaskforrequest}</span></td>
</tr>
</tbody>

 

 

Then you will need two email template which will showcase details over your button and when click it will open a mailbox window so user will send email to ServiceNow instance.

Email template is created under table = sysevent_email_template

 

First will be for Close Request which will be as below:

VirajHudlikar_0-1737804470972.png

 

Second will be Create Task which will be as below:

VirajHudlikar_1-1737804502434.png

 

 

Email Preview will be as below:

VirajHudlikar_0-1737805174038.png

 

Now when any button is click it will open an outlook window to reply back to our instance which will look as below:

VirajHudlikar_2-1737804810270.png

VirajHudlikar_3-1737804868222.png

 

 

Now to when this email comes in ServiceNow we need inbound action which I have already provided above in reply but to save scroll time here we go again with same.

 

Inbound action named as Create Task on table sc_task with type as reply and condition as mail.subject.indexOf('Create Task') > -1 and script will be as below

 

 var gr = new GlideRecord('sc_task');
    gr.initialize();
    gr.setValue('parent', email.instance);
    gr.setValue('short_description', 'New Task for RITM ' + email.instance);
    gr.insert();

 

 

Inbound Action with name as Close Request, for table sc_req_item with type as Reply and condition something as email.subject.indexOf('Close Request') > -1 which checks whether email subject is having word as Close Request and then in script field you will need to put code to update ritm to close when email is process so it will be as below. 

 

 var gr = new GlideRecord('sc_req_item');
    if (gr.get(email.instance)) {
        gr.setValue('state', 3); // 3 is the value for "Closed Complete"
        gr.update();
    }

 

 

If my response has helped you hit helpful button and if your concern is solved do mark my response as correct.

 

Thanks & Regards
Viraj Hudlikar.

@Viraj Hudlikar seems you have created the whole requirement in your instance. This requires great effort. I really appreciate your dedication towards the query which i have. Thanks you so much 🙏 

 

Since you have created the whole requirement, is it working for you as expected? If tested 

@Viraj Hudlikar 

The HTML code which is written for creation of buttons, do I need to use the code in notification e-mail script [sys_script_email] or it should be used in Notification [sysevent_email_action]

 

 

 

Because notification email script is not taking those script content 

@anvitha ash 

yes, code works smooth in PDI. 

The HTML code provided should be placed in your notification which are you going to send to your users. So, in notification under "What it will contain" section tab under "Message HTML" field you have to place it. Now if you directly paste it won't work you will need to search for icon on which look similar to "<>" and tooltip if hover it showcased something like source code click on it and then paste it where you need those buttons in your layout of email.

 

If my response has helped you hit helpful button and if your concern is solved do mark my response as correct.

 

Thanks & Regards
Viraj Hudlikar.