JSON Format Compatibility Issue in ArcGIS Online Feature Service Webhooks

Sienna Emery
Sienna Emery
  • Updated

Consideration

When creating an ArcGIS Online Feature Service webhook, you may encounter issues if the webhook sends JSON that begins with square brackets. This commonly occurs when the webhook header content-type is set to application/json, and the payload is an array rather than a JSON object.

image2.png

When this payload is received by an automation webhook trigger in FME Flow, the request may fail and return a 422 error, preventing the automation from processing the message.

Why This Happens

FME Flow expects incoming webhook messages to be formatted as a JSON object enclosed in curly brackets {}. While the JSON specification allows both objects and arrays [] at the root level, the webhook trigger in FME Flow currently expects the message to begin with an object.

If the JSON payload begins with square brackets[], such as:

["Ford", "BMW", "Fiat"]

FME Flow attempts to parse the message as an object and fails, returning an error similar to:

{"message": "A JSONObject text must begin with '{' at 1 [character 2 line 1]"

This behavior occurs because the webhook trigger validates the incoming payload format before passing it to the automation.

How to Resolve It

Instead of sending the payload with content-type = application/json, update the webhook header so that FME Flow does not enforce object-style JSON parsing.

You can use either of the following content types:

  • application/x-www-form-urlencoded
  • text/plain

Both options allow the webhook trigger to accept any JSON structure, including arrays.

For ArcGIS Online Feature Service webhooks, update the webhook configuration so the header uses:

  • content-type: application/x-www-form-urlencoded

After this change, the webhook trigger in FME Flow will accept the incoming message regardless of whether the JSON payload begins with {} or [].

image1.png

Additional Notes

  • This behavior is related to how the webhook trigger parses incoming payloads rather than a limitation of the JSON standard.
  • If you control the webhook payload structure, another option is to wrap the array in an object before sending it.

Example:

{
"vehicles": ["Ford", "BMW", "Fiat"]
}

Additional Resources

Was this article helpful?

We're sorry to hear that.

Please tell us why.

As of January 14th, 2026, comments on knowledge base articles have been closed. To make sure questions don’t get missed and to enable more community support, we’ve moved discussions to the FME Community. If you have a question or a comment about this article, please create a new post or create a support ticket.