Quick Start • Homepage • Documentation • Issues
Our Mobile Growth SDK is designed to:
1) Automate tedious and repetitive growth tasks. 2) Provide powerful new growth tools.
device_battery_level > 0.2 && eventCount('app_start') > 3 && app_install_date < now() - duration('24h') && photo_library_permission == 'authorized'Install our SDK and integrate into your app following our Quick-Start Guide. This only takes about 15 minutes.
Yes, really — a growth plan defined in JSON. You can add features without any additional code. If you want deeper integrations, custom hooks are available.
Use our guides to get started with ready-to-deploy and proven growth tactics. We're building a growing library of examples you can use for inspiration.
Once your initial growth plan is deployed, you can update anytime without waiting for app reviews or App Store updates. Add growth features without new code, anytime, over the air. Update and tune your user targeting logic, including in past app releases.
With Critical Moments, you can target users with the right actions at the perfect moment:
Our simple string-based conditional statements can check over 100 built-in properties, custom properties, in-app events, and user engagement history.
Some examples:
- eventCount('app_launch') > 5 && latestEventTime('asked_to_subscribe') < now() - duration('72h')
- device_model_class == 'iPad' && versionLessThan(app_version, '2.4.1')
- camera_permission != 'authorized' && photo_library_permission != 'authorized'
- has_watch || location_city == 'Toronto' || has_car_audio || on_call || has_bt_headset || network_connection_type == 'cellular'
- weather_condition IN ['Rain', 'Thunderstorms'] || weather_cloud_cover > 0.80
Define exactly when actions should occur, based on in-app event triggers.
The most commonly needed actions are tracked automatically. Add your own custom events or properties with a single line of code.
Our SDK automatically starts building an on-device database of user engagement history. Use this database when targeting user-messaging, reviews, notifications, paywalls and more! For example: eventCount('session_start') > 3 && latestEventTime('asked_to_subscribe') < now() - duration('24h') && !propertyEver('has_paid_subscription', true)
Critical Moments is designed from the ground up for user privacy. All logic is run locally on their own device. We don’t collect any information about your users. A default installation makes zero calls to our servers from the user’s device. Learn more about our privacy architecture in our blog post.
Note: Some optional services like GeoIP location and weather require external services. These are clearly outlined in our docs. They are completely optional, do not collect user identifiers, and do not store logs long-term.
Our Quick-Start guide will get you up and running with the Critical Moments SDK in just a few minutes.
Want to see Critical Moments in action? Download our demo app from TestFlight for a hands-on experience, or view the source code on GitHub to understand the implementation details.
Our documentation includes:
We're here to help!
Can't find an answer in our docs? Need help with integration, have a bug report, or a feature request? Feel free to reach out!
Critical Moments requires you to purchase a license to use it in production apps. See our pricing page for details. The code of the SDK is fully source-available, and in this repo.
Copyright (c) 2023 Chesterfield Laboratories Inc.
"Critical Moments" and our logos are trademarks. All rights reserved.
$ claude mcp add CriticalMoments \
-- python -m otcore.mcp_server <graph>