App Inbox
Learn how to integrate and use App Inbox to deliver persistent in-app messages across devices and reinstalls.
Overview
App Inbox is a persistent message center embedded within your mobile application, providing users with a centralized space to view notifications they may have missed or want to revisit. Similar to an email inbox, it ensures that essential messages remain accessible until they are explicitly deleted or expire based on predefined rules.
Unlike push notifications or in-app messages — which are often transient and disappear once engaged with — App Inbox messages are retained for longer durations. This makes it an ideal channel for delivering information that users may need to reference later, such as offers, transactional updates, account alerts, or news announcements.
App Inbox supports two delivery models:
- Device-Level Inbox: Messages are associated with a specific device identifier (GUID) and are visible only on that device.
- User-Level Inbox: For identified users, messages are associated with a unique user identifier (User ID), ensuring message continuity across multiple devices and app reinstalls.
App Inbox supports two delivery models based on user identification:
| Feature | Device-Level Inbox | User-Level Inbox |
|---|---|---|
| Message Association | Device GUID | Primary User ID (TRID) |
| App Reinstall | Messages lost | Messages retained |
| Multi-Device Support | Not supported | Fully supported |
| User Identification | Not required | Required |
| Read/Unread Sync | Local only | Local only |
| Message Deletion Sync | Local only | Synced across devices |
This dual-model approach ensures that both anonymous and logged-in users receive relevant messaging experiences while providing message persistence and synchronization capabilities for identified users.
App Inbox is fully compatible with both iOS and Android platforms and supports message categorization, rich media, and various UI customization options.
This guide explains how Netcore's app inbox feature works.
SDK Requirements
To use User-Level App Inbox, integrate the following SDK versions or later:
Platform SDK Minimum Version Android SmartechAppInbox-Android-SDK3.8.0iOS SmartechAppInbox-iOS-SDK3.5.10Backward Compatibility
- Applications using older SDK versions (prior to the versions listed above) will continue to support device-level App Inbox behavior.
- Once end users upgrade to a supported SDK version, the transition to user-level message sync occurs automatically — no changes are required in the campaign creation flow or UI logic.
Refer to app inbox SDK integration steps here: Android SDK Integration document & iOS SDK Integration document
Send Push Notifications to App Inbox
App Inbox lets you send a persistent copy of your push notification campaigns directly to the user’s in-app inbox. This ensures messages remain available even after the user dismisses or misses a push notification.

Send a Copy of this Notification to the App Inbox
Enable App Inbox Delivery
- Navigate to the Schedule section of your push campaign setup.
- Turn on the “Send copy to App Inbox” toggle to include the message in the user’s App Inbox.
- Specify Message Category (Optional)
- Use categories like offers, updates, alerts to organize messages.
- Accepted characters: A–Z, 0–9, _ (underscore).
- Configure Time to Live (TTL):
- TTL defines how long the message remains in the App Inbox. Default maximum is 29 days.
- TTL can be the same as or different from your push notification TTL.
- Once the campaign is published, messages will appear in the App Inbox for eligible users based on their identification state and platform.
How App Inbox Works
App Inbox supports two modes of operation, depending on whether the user is identified or anonymous.
| Users | |
|---|---|
| 1. Identified Users (User-Level Inbox) | 1. Messages are linked to the user’s primary identifier (User ID). 2. Messages persist across: - Multiple devices - App uninstalls and reinstalls 3. Messages are fetched from the backend based on user ID. 4. Deleting a message removes it from all devices. 5. Deduplication ensures the same message isn't displayed multiple times across devices. |
| 2. Anonymous Users (Device-Level Inbox) | 1. Messages are tied to the device’s GUID. 2. Messages are stored locally on the device. 3. If the app is uninstalled, inbox messages are lost. 4. Messages are only visible on the device they were received on. |
| 3. Message Ordering & Expiry | 1. Messages are displayed in reverse chronological order based on timestamps. 2. Once TTL is reached, messages are automatically removed. |
| 4. Read / Unread Status | 1. Message read/unread status is managed locally on the device. 2. The same message may appear as unread on another device, even if already read elsewhere. |
Edge Case
| Scenario | Behavior | Notes |
|---|---|---|
| Anonymous → Identified User | SDK switches to user-level inbox based on User ID | Messages received while anonymous are not merged post-login |
| App Reinstall (Identified User) | Messages are restored based on user ID | Ensures continuity across reinstalls |
| App Reinstall (Anonymous User) | Messages are lost | Stored locally and tied to device GUID |
| Multi-Device (Same OS) | Messages appear on both devices, without duplication | Backend deduplicates using User ID + Message ID |
| Multi-Device (Cross-Platform) | Messages appear on both platforms, if payloads are compatible | OS-specific payloads are returned when available |
| Message Deletion | Deleted messages are removed from the backend and not shown again | Applies across all devices for identified users |
| SDK Version Mismatch (Old vs. New SDK) | Old SDK shows device-level inbox; new SDK shows user-level inbox | Both continue working independently; recommend SDK upgrade |
| Read/Unread Status | Managed locally on each device | Read on one device may appear as unread on another |
| Viewed State | Handled at device level | Not synced across devices in current implementation |
| TTL Expiry | Messages expire after configured TTL | Default max = 29 days; up to 90 days for supported clients |
| Deleted Message Re-fetching | Deleted messages are not returned in subsequent fetches | Deletion sync may occur in batches (e.g., hourly) |
App Inbox UI Options
By default, the SDK provides a ready-to-use App Inbox UI that can be directly embedded in your app. This UI handles everyday user interactions and displays messages out of the box.
Alternatively, you can use custom SDK methods to build your own App Inbox interface that aligns with your app’s design system and UX standards.
Default App Inbox UI Features
The default App Inbox screen supports the following capabilities:
- Pull to Refresh – Fetches new messages from the server
- Swipe to Delete – Allows users to remove messages from the inbox
- Category Filtering – Lets users view messages by predefined categories (e.g., offers, updates)
- Rich Media Support – Supports all media types configured in the push notification: Text, images, carousels, videos, GIFs, audio
- Interactive Actions – Displays action buttons such as: Deep link redirects, Dismiss, and Copy text

Example: App Inbox Notification
Frequently Asked Questions(FAQs) & Troubleshooting
Q. Will users see their App Inbox messages after reinstalling the app?
A. Yes, if the user is identified (i.e., logged in), their App Inbox messages will be restored after reinstalling the app. For anonymous users, messages are tied to the device and will be lost after uninstall.
Q. Do messages sync across multiple devices?
A. Yes, for identified users. Messages are associated with a user’s unique ID (TRID) and will appear on all devices where the user is logged in. For anonymous users, messages are only available on the specific device that received them.
Q. What happens to messages received before login (anonymous state) once a user logs in?
A. Messages received while the user is anonymous do not transfer to the user-level inbox after login. Only messages sent to the user ID (TRID) are available post-login.
Q. Are deleted messages removed from all devices?
A. Yes. Once a message is deleted by the user, it is marked as deleted in the backend and will no longer be fetched on any device during subsequent syncs.
Q. Is read/unread status synced across devices?
A. No. Read/unread status is managed locally on the device. If a message is marked as read on Device A, it may still appear as unread on Device B until it is opened there as well.
Q. Can users retrieve deleted App Inbox messages?
A. No. Once a message is deleted, it is permanently removed from the backend and cannot be restored.
Q. What happens if a user is using different SDK versions on different devices?
A. The device with the latest SDK will show user-level inbox messages. The device with an older SDK will show only device-level messages. Both SDK versions can be used independently, but we recommend upgrading to ensure a consistent experience.
Q. Are messages deduplicated across devices?
A. Yes. The SDK and backend work together to deduplicate messages using a combination of the user ID (TRID) and message ID (TRID/message token). Users will not see the same message multiple times across devices.
Q. Does App Inbox support rich media and action buttons?
A. Yes. App Inbox supports all types of media configured in your push campaigns, including:
- Text
- Images
- Carousels
- Videos
- Audio
- GIFs
It also supports action buttons like:
- Deep links
- Dismiss
- Copy text
Q. Can messages have different payloads for Android and iOS?
A. Yes. The backend supports OS-specific payloads. When a message is fetched:
- The system returns the payload specific to the requesting OS, if available.
- If an OS-specific payload is not available, it falls back to the generic message payload.
Q. Can message TTL (Time to Live) be customized?
A. Yes. By default, App Inbox messages can have a TTL of up to 29 days.
Updated 17 days ago
