---
title: Adding ServiceNow records from ArcGIS
description: Integrate ServiceNow with ArcGIS effortlessly using Connect for ArcGIS. Enable field crews to update ServiceNow directly from the map without any custom code.
---

[Cartinuum blog ](https://cartinuum.com/resources/blog)

# [Adding ServiceNow records from ArcGIS](https://cartinuum.com/resources/blog/adding-servicenow-records-from-arcgis)

 Written by [Gary Johnson](https://cartinuum.com/resources/blog/author/gary-johnson) | June 26, 2025

*"We used Connect for ArcGIS’s 'HTTP Request Launcher' to add a permit note in ServiceNow without ever leaving the map." *

*"Wait… can you really update ServiceNow from a web map with zero custom UI code?"*

*"Absolutely. And it takes about twenty minutes to set up." *

## Why this matters (even if you don’t speak GIS)

If you’re a ServiceNow consultant or power-user, chances are you already automate incident creation, approvals, and task assignments all day long.

What you probably don’t have is a quick way to let field crews or planners inside ArcGIS push context straight back into your workflows.

That’s where [Connect for ArcGIS](https://cartinuum.com/arcgis-extensions/connect-for-arcgis) comes in.

It plugs into any ArcGIS Experience Builder app and lets you wire a button to any REST endpoint, including ServiceNow.

The result: the map stays the 'single pane of glass' while your Now Platform remains the system of record.

## The 5-minute integration

Below is the exact flow we demoed for a NYC restaurant permit:

1. **User selects** a business on the map.
2. Clicks '**Add permit note'**.
3. Types the note ('Reports of vermin seen in restaurant').
4. Presses **Submit**.
5. A Scripted REST API in ServiceNow creates a related note record and returns a success message.
6. Connect for ArcGIS pops the confirmation right inside the widget.

 

Step 1 – Build a tiny Scripted REST API in ServiceNow

Create a new **Scripted REST API** (no resources needed; we’ll keep everything in the 'API script').

Here’s the complete code we used:

(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {

    var requestBody = request.body.data;

 

    // Extract fields

    var noteText = requestBody?.widgetProperties?.note;

    var permitNumber = requestBody?.linkRecord?.number;

    if (!noteText || !permitNumber) {

        return { error: ‘Missing note text or permit number.’ };

   }

 

    // Validate permit record exists

    var permitGR = new GlideRecord(‘x_9999999_nyc_bu_0_permit’)

    permitGR.addQuery(‘number’, permitNumber);

    permitGR.setLimit(1);

    permitGR.query();

    if (!permitGR.next()) {

        return { error: `Permit not found (number: ${permitNumber}).` };

    }

 

    // Create Permit Note

    var noteGR = new GlideRecord(‘x_9999999_nyc_bu_0_permit_notes’);

    noteGR.initialize();

    noteGR.x_9999999_busine_0_permit = permitGR.getUniqueValue();

    noteGR.x_9999999_busine_0_note = noteText;

    noteGR.insert();

 

    return {

        message: `Successfully added note to permit (ID: ${noteGR.getValue(‘number’)}).`

    };

 

})(request, response);

 

**Why it works** 

- POST is quick and safe – no URL-encoded tricks. 

- The API accepts whatever Connect for ArcGIS sends, validate the permitNumber, and create a child record. 

- Returning { message: “” } lets Connect show an instant toast (returning { url: “” } would *redirect the browser* instead). 

Step 2 – Configure the HTTP Request Launcher

Add a launcher that’s connected to an ArcGIS feature layer containing your establishments. The user will select an establishment when they want to add a permit note.

Connect for ArcGIS admin console 

- Request** URL:** your Scripted REST endpoint 

- **Method:** POST 

- **Headers: **Authorization=Basic Z3ZjLmRl… *# Use your ServiceNow auth* 

- **Widget Input Fields: **Just one called **Note** which will capture the user’s input

That’s literally it. Connect for ArcGIS will build the payload to send to ServiceNow.  

**Step 3 – Drop it into ArcGIS Experience Builder** 

Add the Connect for ArcGIS widget into your Experience Builder app. Whenever your user clicks on an establishment they will see the option to add a permit note. 

An ArcGIS Experience Builder user adds a note to ServiceNow 

**Where you can take it next** 

- Update an existing record (e.g. set status = 'Resolved'). 

- Chain workflows: return a URL that opens the freshly-created incident in Agent Workspace. 

- Bulk actions: enable multi-select in Connect for ArcGIS and loop over selected Features on the ServiceNow side. 

**Ready to try it?** 

Connect for ArcGIS comes with [a 60-day free trial](https://extensions.cartinuum.com/product/connect-for-arcgis/). Spin up a dev ServiceNow instance, copy-paste the script above, and you’ll have a working prototype before your coffee gets cold. 

**What the JSON Payload looks like** 

When the user presses Submit, Connect for ArcGIS POSTs something like: 

{

  “**selectedFeatures**“: [

    { “**id**“: “NYC01014”, “**attributes**“: { “**name**“: “La Bella Pasta Bar”, … } }

  ],

  “**linkRecord**“: {

    “**permitNumber**“: “PER010001”

  },

  “**widgetProperties**“: {

    “**note**“: “Reports of vermin seen in restaurant”

  }

}

**Response Contract** 

Your ServiceNow API should return any subset of these attributes: 

{

  “**message**“: “Successfully added the note to your permit”, // Displayed to the user on success

  “**url**“: “https://go.somewhere.com/open/my/form”, // Geovonic Connect will open this URL in a new tab

  “**error**“: “Your permit note could not be added” // Displayed to the user as an error message

}

 

[View full post](https://cartinuum.com/resources/blog/adding-servicenow-records-from-arcgis)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Gary Johnson"
  },
  "dateModified" : "2026-03-26T00:25:32.026Z",
  "datePublished" : "2025-06-26T14:00:00Z",
  "headline" : "Adding ServiceNow records from ArcGIS",
  "image" : {
    "@type" : "ImageObject",
    "height" : 238,
    "url" : "https://46451119.fs1.hubspotusercontent-na1.net/hubfs/46451119/Cartinuum%20Blog/Adding%20ServiceNow%20records%20from%20ArcGIS.png",
    "width" : 357
  },
  "mainEntityOfPage" : "https://cartinuum.com/resources/blog/adding-servicenow-records-from-arcgis",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60,
      "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
      "width" : 60
    },
    "name" : "Cartinuum blog"
  }
}
```