Batch's SDK collects a certain amount of data from the app: native data from the phone, custom data tagged in the app, direct push opens, etc.
Each time the app is opened, the SDK will try to send this data to the Batch servers. It will send custom data of the tagging plan only if the latter has changed.
More details below on how the data is managed and what happens if the device is not connected to the Internet:
Attributes & tags
The attributes & tags are stored on the device in a small database, maintained by the SDK even after sending, as long as the app stays on the phone and the data isn't deleted.
If the sending has failed (e.g. because the device is offline), they will be sent back to the server later during the session at an appropriate time.
Note: A data wipe will delete all local SDK data. More information about data deletion in this article: GDPR compliance.
The SDK stores the events (tagging plan, opens tracking, etc) locally on the device as long as it has not managed to reach Batch's server. It will retry the sending until it succeeds.
If the events arrive too late, they won't be counted by the Batch back-end.
If a trigger push campaign is triggered with an event that was sent late to the server, we manage it in the following ways depending on the case:
• event reception delay < campaign timer: the push will be scheduled normally.
Example: the back-end receives an event that occurred 10 days ago, and the campaign has a timer of 15 days. The push will be scheduled in 5 days.
• event reception delay > campaign timer: we check if the push is scheduled more than a certain amount of time in the past. If so, we dismiss it.
Example: the back-end receives an event that occurred 10 days ago, and the campaign has a timer of 5 days. The push will be scheduled 5 days in the past, so it will be dismissed.
If you want to learn more about what the SDK is doing, you can go to this article.