May 9, 2024

How To Target Users Without Collecting Data: Our Architecture Explained

Smarter Targeting, Safer Users: The Promise of Client-Side Targeting

App store privacy rating showing an app doesn't collect data
Targeting without data collection is possible

Critical Moments is a new mobile SDK that completely inverts the architecture typically utilized for user targeting.

Our architecture provides more precise user targeting, on more user criteria, while also improving user privacy.

Most people assume that user targeting comes with privacy compromises. That makes sense, given how most user targeting has worked in the past. Traditionally, user targeting has relied on collecting huge amounts of user data, server-side targeting, ads that expose demographic data, and data brokers. Targeting traditionally means less privacy.

Our design inverts the classic strategy. We collect zero user data. Their data stays on their device. Without data collection, we can offer more precise targeting criteria, without the additional scaling complexity, privacy concerns, or legal concerns that come with server-side data collection.

How Critical Moments Works

Server Sends Logic Down Instead Of Client Sending Data Up

Instead of sending user data to the server for targeting, the server sends targeting logic down to the client.

We've built a powerful conditional targeting engine. It supports over 100 built-in properties, custom properties, functions, arithmetic, set operations, user engagement history database queries, and more.

You can express your logic using simple, familiar conditional strings. Here are two examples to give you an idea what these look like:

  • A simple exmaple: device_battery_level > 0.15, which is true if the user's battery is over 15%
  • A more advanced example with functions, logic, and database queries: device_model_class == 'iPad' && versionGreaterThan(app_version, '2.4.1') && eventCount('app_launch') > 5 && latestEventTime('asked_to_subscribe') < now() - duration('72h') && canOpenUrl('Spotify:') && network_connection_type != 'cellular' && (has_watch || has_bt_headphones || camera_permission == 'authorized')

When a condition is met, an action can be dispatched for the user to see without sending any data back up to the service. This can mean showing a message, calling custom code, flipping a feature flag, and much more.

Targeting logic and connected actions can be updated anytime, over the air. You still have real-time control!

Built-In Rich Data Sources, Local to Each Device

Our SDK provides rich dataset to help you craft highly personalized experiences. This includes:

  • Over 100 properties you can query, covering device information, user context, sensors, location, permissions, connectivity, peripherals, locale, app info, and much more.
  • A local database that automatically tracks user engagement, including app launches, session times, terminations, and user actions.
  • APIs to send custom events and set custom properties specific to your app, which are stored in a local database and can be queried for targeting.
  • A local database for property history, allowing you to see if the current state is exceptional or the norm for this user.

Our privacy-first approach enables us to add more targeting criteria with greater precision, all while respecting user privacy.

Benefits of this Architecture

There are many benefits to client-side logic evaluation, for both users and developers:

Critical Moments Traditional
User data sent off device None All targeting properties
User data sent to 3rd parties
Firebase, Critical Moments, etc
None All targeting properties
Built-in Targeting Properties Over 100 Firebase: 17
LaunchDarkly: 10
Contextual Properties
Battery level, sensors, etc
Over 60 0
Efficiency Only requests needed properties Requests all properties
Freshness Real-time Once per app launch
Offline Support Continues to evaluate conditions, even offline Caches old states, which may be out of date
User Engagement History Built-in local database and push new queries anytime Bring your own

All this results in a powerful targeting system, which doesn't need to collect data to provide rich targeted experiences.

Apple outlines their policy here, and we're fully compliant. There's no need to access IDFA, and we don't fingerprint the user's device.

A model of a phone with a lock on it
User data never leaves their device

Use Cases

Powerful in-app targeting can be useful in many ways:

Feature Flags: Smarter and Realtime

You can connect our conditional targeting logic up to feature flags, which update in real-time based on the user's context. This means you can deliver more personalized experiences to your users. Learn more about our smart feature flags.

Improve App Rating

You can improve your app rating by targeting when you ask users to rate your app. This includes targeting at the right moment (after significant interaction), avoiding negative states (e.g. low battery, no network), stopping asking on buggy releases, and much more. See our guide to improving your app rating.

Improve Conversion Rate

Just like app-rating prompts, you can time your paywall to the perfect moment to improve your conversion rate and revenue. Look at factors that impact conversion like progress in their user journey (engagement database), negative states (in car, distracted by music), and much more.

In-App Contextual Messaging

Push messages to the right user at the right moment. These can take the form of banners, sheets/modals, alerts, and more. Define your messaging in server-driven configuration to allow pushing new messages anytime, updating messaging, or updating the conditions under which messages are seen. Learn more about in-app messaging.

Trustless Privacy

While we think you can trust us, you don't need to. The Critical Moments SDK is 100% source-available, and the server component is designed to be easily self-hosted. Your user's devices never need to talk to our servers!

Optional Services

Some optional features like weather conditions required calling a Critical Moments server. These are optional, clearly identified in our docs, and send as little data as possible to the server. These also don't store your data longer than needed to serve the request, so they aren't classifed as data collection per Apple Standards.

Read more on our Trustless SaaS Architecture

Works with Your Existing Tools and Workflows

Inverting the architecture also means integrating and deploying is simpler than our competitors. The client SDK does all the heavy lifting, so the server side is simplified to a static file you can host anywhere. You can leverage your existing systems for access control, version control, reviews, staging, and deployments.

Be up and running in minutes with the tools you already have. No need to set up new servers, monitoring, compliance reviews, processes, or access control integrations.

Get Started Today

Ready to unlock the power of precision targeting and trustless privacy for your app? Getting started with Critical Moments is easy and only takes a few minutes.

This Is Just the Beginning

Our goal at Critical Moments is to build best-in-class developer tools that not only prioritize user privacy but also unlock new, powerful features for developers that weren't previously possible. We're planning several exciting updates that will unlock new possibilities. Sign up today to get notified of future product launches.

The Mobile Growth SDK

Critical Moments helps you increase conversions, improve app ratings, and make bugs disappear.