Inklune Privacy Policy

Inklune is an app that keeps your journal on your device. The text, photos, and location of an entry are stored as files on your device, and they do not leave the device unless you send them yourself. This document sets out what nevertheless leaves the device, why it leaves, and how to turn it off.

Two kinds of content are mixed together in this policy. The earlier part covers information the app handles as a whole, and the later part (from ## What is collected onward) covers one thing only: error reporting (diagnostics). The diagnostics part is checked automatically against the transmission allowlist in the app's code, so if the code changes and this document does not, or the other way round, a check fails during development.


Local entries — they stay on your device

The body text, title, tags, photos, location, and step count of an entry are stored in files and a database on your device. They are not sent to our servers, and no backup service is switched on automatically. If you have turned on your device's system backup (iCloud or Google backup), they may be included in that backup, and Apple and Google handle that backup under their own policies.

Files created by export and files read by import are also handled only on the device.

Exchange letters — delivered in a form whose content cannot be read

When you use the exchange diary, letters pass through our relay server on the way to the other person.

Notifications

To receive a notification about a new letter, the push token issued by your device has to be kept on the relay server. This applies to both iOS and Android. The token is used only for sending notifications, and it is no longer used once you turn notifications off or delete the app.

Google's FCM (Firebase Cloud Messaging) is used to deliver notifications. On both iOS and Android the token is issued by Google Firebase, and on iOS, FCM then passes the notification to the device by way of Apple's APNs. In the course of this, Google and Apple handle device and app installation information under their own policies. Notifications carry no letter content; they carry only the room id and the kind of event (a new letter, connected, and so on), which says no more than what happened in which room.

Maps and place names

When you attach a location to an entry or look at the map, coordinates go to the two places below. They do not go to our servers, and we do not store them either.

In both cases the only thing that leaves an entry is the coordinates, and the text, photos, and title of the entry do not go with them. Requests that travel over the internet do, however, carry more than the coordinates: they also carry information that comes with the connection itself (the IP address, the type and version number of the device, the app, and the SDK, and so on), and that information is handled by Google and by the device operating system vendor under their own policies. If you do not open the map screen and do not attach a location, no coordinates leave.

Permissions

The permissions the app asks for are used only as far as writing a diary requires. The data in the table below is stored on the device, and the only cases in which it leaves the device are the ones described in the Maps and place names section above, and exchange letters.

PermissionWhere it is used
Photos and cameraAttaching a photo to an entry (on the device)
LocationAttaching the day's place to an entry and showing it on the map (for map and place name lookups, see the section above)
Activity and health (step count)Attaching the day's step count to an entry (on the device)
NotificationsNew letter notifications
Face ID and biometricsApp lock (on the device)

AI keys

You can register your own key for an AI service. The key is kept in the device's secure storage, is never displayed on screen again, and is not transmitted to our servers. In the current version the key is only stored, and entry content is not sent to any AI service.

Payment

Paid features (Inklune Pro) can be bought inside the app — through the App Store on iPhone and through Google Play on Android.

The only thing the app stores is whether a purchase was made, and that value stays on the device — it is not sent to our servers.

One thing does leave, however. When a payment or a purchase restore fails, and the error reporting (diagnostics) described below is turned on, the classification name of the point that failed (a value beginning with tier.) goes to the diagnostics server. No payment method, receipt, or amount is included there, and there is no separate field for whether a purchase was made. The classification name can, however, reveal that a purchase took place — if the failure happened after the payment went through, while recording Pro on the device, that name alone shows that the store account on that installation has a purchase, and a failure while finishing the transaction shows that there may have been one (the same name is sent when a cancelled or failed transaction is being finished). The report itself carries no name or email, and its only identifier is a random value the device created at install time. We do not match or combine diagnostic reports with Google Play order records. What goes with it is exactly what the ## What is collected table below lists, and this reporting can be turned off in settings.

Information processed in the course of an App Store payment follows Apple's policy, and information processed in the course of a Google Play payment follows Google's policy. For App Store purchases, refund requests are received and reviewed by Apple. For Google Play purchases, you can ask Google or us for a refund.


Error reporting (diagnostics)

When the app crashes or a feature fails silently, a short report is sent to our server telling us what failed and where. It is on by default, and it can be turned off in settings. The table below is everything that is sent at that point.

What is collected

FieldWhat it meansExample
schemaThe version number of the report format1
installIdA random id the device creates at install time. It is unrelated to any sign-in, email address, or advertising id, and it disappears when the app is deleted01J9Z...
occurredAtThe time at which the error occurred2026-08-12T01:02:03Z
kindWhether the app crashed or a feature failedcrash / handled
codeThe classification name of the failure (a classification key, not the raw text of an exception)invite.create.notRegistered
httpStatusThe response number when a server refused the request503
framesOnly the function names at the point where the error occurred. There are no arguments, file paths, or line numbers["PairingService.createInvite"]
appVersionThe app version1.0.0+1
platformThe kind of operating systemios / android
osVersionThe operating system version26.6
localeThe language setting (for reproducing bugs to do with dates and wording)ko
attemptedThe number of items the app set out to process2568
succeededThe number of those that succeeded8

attempted and succeeded are numbers that carry counts alone. For example, if importing entries from another app mostly fails, the only thing passed along is the pair of numbers meaning "2568 attempted, 8 succeeded". The content, titles, and file names of entries are not sent. The reason these numbers are included is that, without a count, one skipped entry and the loss of nearly everything look like the same single event, and a serious breakage would go unnoticed.

What is not sent

An error report contains none of the following, under any circumstances.

What is sent is only the items listed in the ## What is collected table above, and the app is built so that it can carry only the items in that table.

Retention period

An error report is kept in storage for 30 days and is then deleted automatically. This period is enforced by the storage system's expiry rule.

Where it is sent

How to turn it off

Open the app's Settings screen and turn off the Send error reports switch under Diagnostics at the bottom; transmission stops at that instant.


Children's personal information

Inklune is not an app directed at children, and it does not knowingly collect children's personal information.

Changes to this policy

If what is collected changes, this document is amended along with it. The diagnostics part is checked automatically against the app's code, so adding items without amending this document is blocked during development.

Contact

blackpet@gmail.com