1 Overview
Sajda is a free Islamic companion app offering prayer times, Qibla direction, the Holy Qur'an with audio recitation, dhikr, du'a, the Islamic calendar, Zakat tools, the 99 Names and an Arabic letters learning section. The app is available in 18 languages.
We follow a privacy-first, offline-first design. Most content ships inside the app or is read from local on-device storage, and the Qibla compass runs entirely on the device. Prayer-time calculation, reverse geocoding (turning coordinates into a city name) and the mosque finder do send your coordinates to the third-party services listed in section 4 — we explain exactly which ones, and why, in Location & Sensors.
2 Data We Process
The table below lists the categories of data the app may process, the purpose, and where it lives.
| Data category | Examples | Purpose | Stored where |
|---|---|---|---|
| Account identity | Email, display name, sign-in provider ID | Create and secure your account; sync across devices | Firebase Authentication (cloud) |
| Account profile | Email, display name, profile photo URL, sign-in method, account creation and last sign-in time | Show your account in the app and keep it in sync across devices | Cloud Firestore (your user record) — only when you sign in |
| App progress & content | Favorite ayahs, streaks, prayer logs, dhikr history, preferences | Save your progress and personalize the experience | On-device + optional cloud sync |
| Approximate / precise location | GPS coordinates at the moment of calculation; city / country name derived from them | Compute prayer times, resolve your city name, orient the Qibla compass and find nearby mosques | On-device, plus the third-party services in section 4 (AlAdhan, the OS geocoder, Overpass API) — never stored on our servers |
| Background location Opt-in | A fresh position taken when you cross a geofence, including while the app is closed | Keep prayer times accurate after you travel | On-device + AlAdhan (for the recalculation) — off unless you enable it |
| Prayer-notification schedule Android | The times of your upcoming prayer, reminder, Friday and missed-prayer notifications (about the next 10 days), their texts and sound settings, and your device time zone | Deliver prayer notifications from our server, because some Android manufacturers' battery savers stop on-device alarms. Prayer times and time zone can indicate your approximate location (roughly your city or region); your coordinates themselves are not stored | Cloud Firestore (your device record), replaced each time the schedule is recalculated; switched off when you turn prayer notifications off |
| App usage & re-engagement | Push token, app language, time zone, platform, app version, last-active date | Send prayer-time notifications at the right local time and occasional re-engagement reminders if you stop using the app | Cloud Firestore + Firebase Cloud Messaging |
| Purchase information | Purchase status, transaction IDs, pseudonymous app-user ID | Remove ads and restore your purchase | RevenueCat + Apple / Google billing |
| Push token | Push notification registration token | Prayer-time & reminder notifications you opt into | Firebase Cloud Messaging |
| Advertising identifiers | Device ad ID (only with consent) | Show ads unless Remove Ads was purchased | Google AdMob |
| Usage analytics | Screens viewed, feature-use events, app version, device model and OS, approximate country; when you are signed in, your account's user ID | Understand which features are used and improve the app; follows your consent choice | Google Analytics for Firebase |
| Crash reports | Crash and error stack traces, device model, OS and app version, a crash-installation ID; when you are signed in, your account's user ID | Find and fix crashes | Firebase Crashlytics |
We do not collect contacts, photos, health data, browsing history, or biometric identifiers. We use analytics only in aggregate to improve the app — not to build advertising profiles.
3 Device Permissions
Every permission is requested only when a feature needs it, with a clear in-context explanation. The app stays usable if a permission is declined — the related feature is simply limited.
iOS
| Permission | Used for | Required? |
|---|---|---|
| Location (When In Use) | Prayer times, city name, Qibla direction & mosque finder | Optional |
| Location (Always / Background) | Opt-in only — recalculates prayer times after you travel, even while the app is closed (see Location & Sensors) | Optional |
| Microphone | Not used. Declared on iOS only because an audio-playback dependency links the system audio APIs; never requested. | Never requested |
| Motion & Orientation | Qibla compass sensor | Optional |
| App Tracking (ATT) | Optional consent for personalized ads — declining still shows non-personalized ads | Optional |
Android
| Permission | Used for |
|---|---|
| Location (fine / coarse) | Prayer times, city name, Qibla direction & mosque finder |
| Background location | Opt-in only — geofence that recalculates prayer times after you travel, even while the app is closed |
| Notifications | Prayer-time, reminder & re-engagement notifications |
| Exact alarms | Precise prayer-time alarms at the correct minute |
| Run after restart | Reschedule prayer reminders after the device restarts |
| Foreground service (media playback) | Background Qur'an audio playback & lock-screen controls |
| Wake lock & vibration | Deliver alarms reliably and provide haptic feedback |
| Internet & network state | Stream audio, sync, and reach online services |
4 Third-Party Services
Sajda relies on the following processors. Each operates under its own privacy policy; we share only the minimum data needed for the stated function.
| Service | Provided by | Function | Data shared |
|---|---|---|---|
| Firebase Authentication | Sign-in (email, Google, Apple) | Email, name, provider ID | |
| Cloud Firestore | Cross-device sync of your content; device registrations for notifications | Account profile, app progress data, push token, app language, time zone and (on Android) the prayer-notification schedule | |
| Firebase Cloud Messaging | Push notifications | Device push token, notification content | |
| Google Analytics for Firebase | Usage statistics | App usage events, device and app information, Firebase user ID when signed in (subject to your consent choice) | |
| Firebase Crashlytics | Crash reporting | Crash traces, device and app information, Firebase user ID when signed in | |
| RevenueCat | RevenueCat, Inc. | Purchase management | Anonymous app-user ID, purchase status |
| App Store / Play Billing | Apple / Google | Process payments | Handled entirely by the platform |
| Google AdMob | Ads, unless Remove Ads was purchased | Ad identifiers (with consent) | |
| EveryAyah CDN | EveryAyah | Streaming Qur'an audio recitation | Standard network request (no account data) |
| AlAdhan API | Islamic Network | Calculates the prayer times shown in the app | Your latitude and longitude, the calculation method and the date — sent each time times are calculated for a new place or day. No account identifier is attached. |
| QuranEnc API | Rowwad Translation Center (quranenc.com) | Qur'an translations in your language | Standard network request (translation, surah / ayah numbers, no account data) |
| AlQuran Cloud API | Islamic Network | Qur'an text and translations that are not bundled in the app | Standard network request (surah / ayah numbers, no account data) |
| Overpass API / OpenStreetMap | OpenStreetMap Foundation & Overpass contributors | Mosque finder — searching for places of worship near you | Your coordinates and a search radius, only when you open the mosque finder |
| Device geocoding service | Apple (iOS) / Google (Android) | Reverse geocoding — turning coordinates into a readable city and country name | Your coordinates are passed to the operating system's geocoder, which may forward them to Apple or Google under their own privacy policies |
5 Location & Sensors
Location is used to calculate accurate prayer times for your area, to show the name of the place the times belong to, to orient the Qibla compass toward Makkah and — if you open it — to find mosques near you. By default location is only read while you use the app ("when in use"). You may instead set your city manually and never grant location access.
We do not operate our own location servers and we never store your coordinates in our own database. Your coordinates are, however, sent to the third-party services below so the features can work:
- Prayer times (primary path): your latitude and longitude are sent to the AlAdhan API together with the date and the calculation method every time times are computed for a new place or day. The request carries no account identifier. If the network is unavailable, the app falls back to calculating the times on the device.
- City name: coordinates are passed to your device's operating-system geocoder to turn them into a readable place name. On Android this is handled by Google and on iOS by Apple, under their own privacy policies.
- Mosque finder: when you open the mosque finder, your coordinates and a search radius are sent to the Overpass API (OpenStreetMap data) to look up nearby places of worship.
Background location (optional)
Sajda offers an opt-in background location feature for people who travel. If you enable it and grant the "always" / background location permission, the app registers a geofence around your last known position. When you leave that area — including while the app is fully closed — the system wakes the app briefly, it takes a fresh position and recalculates and reschedules your prayer times and notifications for the new location. The coordinates are used for that recalculation (on the device and via the AlAdhan API as described above) and are not stored on our servers or used for advertising or tracking.
This feature is off unless you turn it on. You can disable it at any time in the app's prayer settings, or revoke background location entirely in your device settings (iOS: Settings → Privacy & Security → Location Services → Sajda; Android: Settings → Apps → Sajda → Permissions → Location). Prayer times keep working from your last known or manually set city.
Prayer notifications on Android
On Android, some manufacturers' battery savers stop on-device alarms, so prayer notifications are delivered from our server instead. For this, the app stores on your device's record in Cloud Firestore the times and texts of your upcoming prayer, reminder, Friday and missed-prayer notifications (about the next 10 days) and your device time zone. We do not store your coordinates, but prayer times together with a time zone can indicate your approximate location (roughly your city or region). The schedule is replaced every time it is recalculated, is used only to send these notifications, and is switched off when you turn prayer notifications off. On iOS, prayer notifications are scheduled on the device and no schedule is stored.
Re-engagement notifications
So that notifications arrive at a sensible local hour and in your language, each registered device record stores its push token, app language, time zone, platform, app version and the date it was last active. If a device stops opening the app, we may send a small number of reminder notifications (after 3, 7 and 21 days of inactivity, at most one per day; a new series starts no sooner than 30 days after the previous reminder). You can stop these by turning off notifications for Sajda in your device settings.
The Qibla compass reads the device's motion/orientation sensor on-device only; no sensor data leaves the phone.
6 Microphone
Sajda does not use your microphone. The app does not record audio, does not run speech recognition, and never uploads audio anywhere. There is no voice or recitation-grading feature.
- On Android, the app does not declare the
RECORD_AUDIOpermission, so it cannot access the microphone at all. - On iOS, a microphone usage description remains in the app because an audio-playback dependency links the system audio APIs. The permission is never requested and no recording takes place.
Qur'an recitation you listen to is audio streamed from the EveryAyah CDN. It is playback only and does not involve your microphone.
7 Purchases & Advertising
Remove Ads
Sajda has one optional in-app purchase, Remove Ads. It is a one-time, non-consumable purchase — there is no subscription, no auto-renewal and no free trial. Payment is processed by the Apple App Store or Google Play and the entitlement is managed through RevenueCat. We never see or store your card details.
To keep your purchase working across your devices, RevenueCat receives a pseudonymous identifier for your account and the store's purchase receipt.
Advertising
Unless you have purchased Remove Ads, you may see ads served by Google AdMob. To deliver ads, Google and its advertising partners may use device identifiers (such as the advertising ID) and similar technologies. You can learn how Google uses information from apps that use its services at policies.google.com/technologies/partner-sites.
On iOS, ads are non-personalized unless you grant App Tracking Transparency (ATT) consent; you can change this anytime in Settings → Privacy & Security → Tracking. On Android, you can reset or delete your advertising ID in your device settings. Ads are never shown while you are reading the Qur'an or during audio playback.
8 Children's Privacy
Sajda contains family-friendly educational content (such as an Arabic-letters learning section) but is a general-audience app and is not directed at children under 13 (or the equivalent minimum age in your jurisdiction). We do not knowingly collect personal information from children, and the app does not include child profiles or child-specific accounts.
If you believe a child has provided personal information, contact us at hello@excfy.com and we will delete it.
9 Your Rights
Depending on your region (including the EU/EEA under GDPR and California under CCPA/CPRA), you may have the right to:
Access
Request a copy of the personal data linked to your account.
Correction
Update inaccurate account information directly in the app.
Deletion
Delete your account and associated data at any time.
Withdraw consent
Revoke location, microphone, notifications or ad tracking in device settings.
We do not sell personal information and do not use it for cross-context behavioral advertising beyond the consent-based AdMob behavior described above.
10 Account & Data Deletion
You can also request deletion by emailing hello@excfy.com from your account email. Local data is removed when you uninstall the app; cloud data is removed within 30 days of a deletion request.
11 Data Retention & Security
- Retention: Account and synced data are kept while your account is active and deleted on request. On-device data is removed when you uninstall the app.
- Encryption in transit: All network communication uses HTTPS/TLS.
- Access control: Cloud data is protected by security rules so a user can only access their own records.
- Minimization: We request only the data needed for each feature and avoid collecting sensitive identifiers.
12 Changes & Contact
We may update this policy as the app evolves. Material changes will be reflected by updating the "Last updated" date above and, where appropriate, an in-app notice. Continued use after an update constitutes acceptance of the revised policy.
Questions, requests, or privacy concerns: hello@excfy.com
↑ Back to top