ServiceNow Mobile Experience Integration Patterns
This guide covers how Mobile Experience apps connect to ServiceNow: REST calls that return only the fields needed, a local copy of data for offline use, queued writes, rule-based conflict resolution and device management and security integration.
Mobile Experience integration design turns on a few choices made before any connector is picked: the sync model, how deltas are pulled without missing changes, how writes are queued and kept idempotent, how conflicts are resolved by rule, and how server changes reach the device without polling. The sections below cover the backend API patterns, offline capability, device management and security integration, performance over poor networks, testing, and ownership of mobile integrations.
Backend API patterns for mobile
RESTful APIs: mobile apps call REST endpoints to retrieve and update data. ServiceNow provides REST API endpoints for tables and records. Mobile apps authenticate and call these endpoints.
Optimized payloads: mobile networks are often slow and bandwidth-limited. APIs should return minimal data (only fields needed, not entire records). Use filtering and pagination to return manageable data sets.
Caching: cache data locally on the device so the app works offline and performs well. Sync cached data when connected. Conflicts require resolution (which version is correct, local or server).
Offline capability
Mobile users often lose connectivity (tunnels, rural areas, switching networks). Apps must work offline: display cached data, queue updates, sync when reconnected.
Integration pattern: local storage (SQLite, realm database) holds a mirror of necessary data. When online, app syncs with server. When offline, app works with local data. Sync replicates changes bidirectionally.
Pitfall: conflicts when local changes conflict with server changes. Example: offline user approves a request, but on the server the request was already processed. Sync must handle conflicts gracefully (user is notified, shown options, can choose how to resolve).
Mobile-specific features and integrations
Push notifications: send alerts to mobile users (new ticket assigned, approval needed, status update). Requires integration with Apple Push Notification service (APNs) and Firebase Cloud Messaging (FCM) for Android devices.
Location services: some workflows use location (field technician location, store locations). Mobile app can access device GPS and send location to ServiceNow.
Camera and photos: workers can capture photos (incident scene, equipment issue). App accesses device camera, uploads photos to ServiceNow.
Biometric authentication: some organizations use fingerprint or face recognition for authentication. Integration with device biometric APIs.
Device management and security integration
Mobile Device Management (MDM): organizations often require MDM to manage and secure employee mobile devices. ServiceNow Mobile Experience can integrate with MDM solutions (Ivanti Neurons for MDM, Microsoft Intune) to enforce policies (app pinning, data encryption, remote wipe).
Authentication: mobile apps must authenticate securely. Use OAuth for token-based authentication (more secure than embedded credentials).
Data encryption: sensitive data should be encrypted in transit (HTTPS) and at rest (local storage encryption).
Common integration patterns
Read-only mobile app: app retrieves data and displays it but does not allow updates. Common for information apps (read knowledge base, view status). Simpler to implement than read-write.
Read-write mobile app: app retrieves and updates data. More complex but provides full workflow support. Requires conflict handling for offline updates.
Customized mobile app: if the standard Mobile Experience app does not meet needs, build a custom mobile app using ServiceNow APIs and SDKs. Requires more development but enables tailored user experiences.
Performance optimization and network considerations
Minimize data transfer: send only necessary data. Use compression for APIs and payloads.
Implement connection pooling: reuse connections to reduce connection overhead.
Prefetch data: anticipate what data the user will need and prefetch it before it is requested (reduces perceived latency).
Background sync: update data in the background when the app is not active, improving responsiveness when the app opens.
Testing mobile integrations
Test on real devices: simulator testing misses real network issues. Test on actual phones with actual connectivity (wifi, cellular, poor signal).
Test offline scenarios: disconnect the network, make changes in the app, reconnect, verify sync works correctly and conflicts are handled.
Test performance: measure response times, data transfer volume, battery impact. Mobile users notice latency.
Test across networks: some users are on fast wifi, others on slow cellular. Test on slow networks to find performance issues.
Governance and ownership of mobile integrations
Mobile applications team owns the mobile app and its integrations. Platform team owns the backend APIs. Define ownership of mobile features: who designs, who implements, who maintains?
Document: what data mobile apps access, what integrations are in place, what security measures are implemented, who is on-call for mobile issues.
Choosing a Sync Model Before Choosing a Connector
The connector question usually arrives late in a design. The earlier question is what the device may do without the server. A device that only reads can keep a snapshot. A device that writes needs an outbox, a place where each change waits with the information the server needs to apply it. The sync model shapes everything downstream, including how errors reach the user and how much data the server must send on each pull.
| Sync model | Good fit | Main risk |
|---|---|---|
| Online only, direct calls | Lookups and simple updates on reliable networks | Blank screens and lost input when the connection drops |
| Snapshot read copy | Reference data that changes slowly | Stale values presented as current |
| Delta pull | Lists of records that change often | Missed changes when the timestamp boundary is wrong |
| Outbox with server-side apply | Field updates and approvals | Duplicates and ordering errors without safeguards |
Delta Pulls Without Missing Changes
A delta pull asks the server for records changed since the last successful pull. The boundary is where most defects hide. Use an overlap window on the timestamp so that a record updated during the previous request is not skipped, and let the device deduplicate by record identifier. Store the new timestamp only after the device has written the data locally. Otherwise a crash between the two steps loses changes without any sign of an error.
Outbox Writes and Idempotency
Each queued change should carry an identifier generated on the device. The server stores that identifier against its result, so a retry after a dropped response returns the original outcome instead of creating a second record. Without this, a technician who taps submit twice on a weak connection creates two work notes or two approvals. Give creates a client-generated key, and give updates the version the device last saw, so the server can detect a stale write. The API contract versioning guidance covers how those versions should be managed over time.
Conflict Policies Written as Rules
When the device and the server both changed a record, the outcome should follow a rule the business has chosen, not whatever the code happens to do. Common rules are server wins for governance fields such as approval state, device wins for field observations, and a manual merge for fields where both sides matter. Assign ownership field by field. A single rule for the whole record is usually too blunt, because a status change and a free-text note rarely deserve the same treatment.
Pushing Server Changes Without Polling
When a server change needs to reach the device, avoid making the app poll on a short timer, which drains batteries and multiplies requests. Send a lightweight notification that something changed, and let the device pull the delta. Keep the notification payload small and free of sensitive values, because it may appear on a locked screen. Access to the record itself should still be checked when the device pulls it.
Rate Limits, Retries and Backoff
A reconnection after a long offline period can send a large outbox at once. Pace the sending, back off on throttling responses, and cap retries, so that one rejected record does not block the rest of the queue. A record that fails validation should move to a visible failed state with a reason the user can act on, rather than retrying in a loop. The integration error handling guidance covers how to separate failures by cause so that each one has an owner.
Security Decisions Inside the Integration Layer
Every pattern above moves data across a boundary, so the integration design also decides what the device stores and for how long. Queued changes that contain personal data should be encrypted at rest and cleared after a confirmed sync. The mobile security and access design page covers the security challenges and access design that the sync design must respect.
Questions Architects Raise About Mobile Integration
Do we need a separate mobile API surface?
Not always. A dedicated surface is worth considering when the standard endpoints return far more fields than the device uses, or when they cannot express the delta and idempotency rules the app needs. Measure the payload before deciding.
How should payloads be versioned for the app?
Version the contract, not the screen. A new field can be added without breaking older builds, but a renamed or removed field needs a transition period in which both shapes are accepted. Older app builds stay in service for longer than teams expect.
What happens to the outbox when a user signs out?
Decide before release. Either the queue is sent before sign-out completes, or it is held encrypted and sent at the next sign-in by the same user. Silently discarding it is the outcome to avoid.
Should offline edits show to other users before they sync?
No. Show the change as pending to the person who made it, and let the server apply it when it arrives. Other users should see only the state the server has accepted.
Frequently asked questions
How do we handle offline data conflicts?
When the user reconnects, check if local changes conflict with server changes. Options: keep local (discard server), keep server (discard local), or merge (if possible). Notify the user and let them choose.
What data should we cache locally?
Cache data the user is likely to need offline: their own records, assigned work, relevant knowledge base. Do not cache entire tables (too much data, security risk).
How often should mobile apps sync with the server?
Balance freshness and performance. Sync on user action (user opens a screen, pulls to refresh), periodically (at an interval set per data type), or when data is accessed. More frequent sync drains battery.
Related guides
Related Oblytech services
Where this topic turns into delivery work, these are the Oblytech services that cover it.
Planning, running or fixing a ServiceNow programme? Tell us where you are and we will suggest a sensible next step.
Contact us