Cartinuum blog

Adding ServiceNow records from ArcGIS

Written by 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 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. 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

}