A platform assessment, not a connector page. TSANet has committed to begin development in 2026; nothing is built yet and nothing here has been tested against a live instance. This is what the platform looks like to an integrator, gathered so the work starts from a map rather than a blank page.
Every claim on this page is documented, not observed — somebody read it in vendor documentation or a community thread, not that anybody watched it work. That distinction has mattered before: on the most recent platform TSANet assessed, published documentation turned out to be wrong or silent on the majority of the findings that ended up shaping the design.
Treat this as a research map with citations. Anything marked needs probe is a known unknown rather than an oversight, and the first verified fact on this page will be the first one worth designing against.
membership@tsanet.orgPlatform shape
TSANet's connectors so far divide by one question: will the platform run your code inside the member's own tenant? Salesforce and Dynamics say yes and get managed packages. Intercom says no and gets a TSANet-hosted gateway. Zendesk sits between.
ServiceNow answers both at once, and that is the whole difficulty. It will happily run installed code — scoped applications are the native extension model. But it hosts none of the UI for you and provides no native webhooks. There is no Canvas Kit and no ZAF analogue: if an agent is to see anything, it is either code installed in their instance or a page served from somewhere else and framed in.
Agent surfaces
now-iframe component can point at an externally served page and supports a postMessage channel back. That is the mechanism by which any hosted UI would appear. documentedTable API
Several of these rhyme with traps found on other platforms, which is a reason to take them seriously and not a reason to assume they behave identically.
work_notes and comments accept writes but read back empty unless you pass sysparm_display_value=true or query sys_journal_field by element and element id. An adapter that writes a note and reads the record back to verify will see nothing and conclude the write failed — when it succeeded. documentedsysparm_display_value switches between sys_ids and labels; reference fields otherwise return {value, link} objects. Pick one convention per call site and hold it. documentedsys_id, which is the handle everything downstream needs. documentedu_ in global scope, or x_<vendor>_<app>_ when they belong to a scoped app. Rename behaviour is unverified. needs probeRetry-After. documentedsys_updated_on has one-second granularity and is not unique. A poller therefore needs a keyset cursor on the pair (sys_updated_on, sys_id) — a plain timestamp cursor will lose records that share a second. documentedEvents
Nothing on the platform pushes to an external endpoint by default. Outbound delivery is configured inside the instance, and there are two ways to do it — which is where the trap is.
| Mechanism | Licensing | Verdict |
|---|---|---|
Async Business Rule calling RESTMessageV2 | Base platform | The one to build on |
| Flow Designer REST step | Consumes IntegrationHub transactions | Costs the member per event |
| IntegrationHub spoke | Consumes IntegrationHub transactions | Costs the member per event |
Keeping any installed app on scripted outbound REST is therefore not a style preference — the alternative bills the member's IntegrationHub entitlement on every event the integration emits. documented
executeAsync routes through the ECC queue and can retry via ECC Failure Retry; synchronous calls cap at 30 seconds and the general outbound timeout defaults to 175. At-least-once delivery is something the installed app builds — a queue table plus a scheduled job — not something the platform provides. documentedsys_updated_on, with the keyset cursor described above. documentedObject model
Unusually, the right answer here is probably per member rather than per platform.
| Option | Consideration |
|---|---|
ITSM incident | Natural for ITSM shops, but puts partner collaborations into queues the member's own team already works |
CSM sn_customerservice_case | Natural for customer-service shops; case types extend this table |
| Dedicated companion task table | Keeps TSANet cases out of existing queues entirely. This is the shape a well-known publicly listed ServiceNow integration chose for exactly this problem |
work_notes are internal; comments are customer-visible. Partner collaboration content is not customer-facing by default, so inbound partner notes belong in work_notes unless a member explicitly asks otherwise. Getting this backwards publishes another vendor's content to the member's end customer. documentedcorrelation_id and correlation_display. Whether that field is efficiently searchable decides how load-bearing an integration's own link table has to be. needs probePENDINGACTION, which the API enum also carries — have to land on whichever object model a member uses, and inventing a ServiceNow-local convention before that choice is made would add a dialect rather than settle one.Tenancy & auth
https://<instance>.service-now.com, publicly reachable by default. documentedservicenowservices.com. Store a full base URL per member rather than deriving one from an instance name. documentedDistribution
A member's admin can install a third-party scoped app directly, with no ServiceNow review, no partner program and no fee — by update-set XML import, or by source-control import in Studio. That is the same private-install model TSANet already uses elsewhere. documented
| Channel | What it costs | What it buys |
|---|---|---|
| Update set / source-control import | Nothing. Each member's admin imports each version by hand | Viable immediately; fine at pilot scale |
| ServiceNow Store | Certification review per submission (reported 3–5 weeks), partner-program membership, and development on provisioned vendor instances rather than a developer instance | Listing, plus versioned push-install across customers |
Open questions
These are listed because they are unresolved, not because they are hard. Each blocks real design work downstream.
| Question | Blocks |
|---|---|
| How much of the connector lives in the installed app | Everything. It decides what a member installs and how often they upgrade it |
Does now-iframe render on the Incident and Case record pages an agent actually works | The agent surface, and therefore the entire outbound flow design |
| Is the unknown-field silent-ignore real on the Table API | Whether read-back-and-assert is mandatory on every write |
| Which object holds a case, per member | Object mapping, token placement, status mapping |
| Is the correlation field efficiently searchable | How load-bearing an integration's own link table has to be |
| Per-member ingress: can an external service reach the instance, or must the instance poll out | Inbound topology — and it may differ member to member |
| Secret rotation mechanics for an instance-registered OAuth client | Credential lifecycle and the operational runbook |
| Whether any member's own policy requires a Store-certified app | Distribution path and the cost model |
membership@tsanet.org. A member willing to lend a real instance and a real workflow is worth more at this stage than any amount of further desk research.