# Concepts Overview

This is a quick summary of all of the concepts in the Critical Moments SDK. Each is documented in detail later in this developer guide.

* [**Notifications**](/notifications/intro-to-notifications.md): delivery mobile notifications to your users, without a push server
* [**Smart Notifications**](/notifications/smart-delivery.md): wait for the ideal moment to delivery a notification. For example, when the user is holding their device and at home.
* [**Conditionals**](/conditional-targeting/intro-to-conditions.md) are boolean string expressions that can be evaluated with the current state of the users device or event history. For example `device_orientations == 'face_up' || has_wifi`. They can be used for advanced targeting or optimizing.
* **Properties** can be [built in](/conditional-targeting/built-in-properties.md), or [custom](/conditional-targeting/custom-properties.md) properties. They are the data points used in conditions, like `has_wifi`. &#x20;
* [**Events**](/events/event-overview.md) are logged when something happens, like a user action, or the app launching. They can be used to trigger actions, or you can query the event history in conditionals.
* [**The events and properties database**](/conditional-targeting/conditional-guides/event-and-property-history.md) tracks all past events and past property states in a private database. These can be queried in conditionals.
* [**Actions**](/actions-in-app-messaging/actions-overview.md) can be fired when events occur or conditions are met. A wide array of options are built into the SDK including showing modal popups, banner announcements, alerts, requesting app reviews, launching webpages, app deeplinks, and more. You can add you own custom actions, tying into parts of your app.
* [**Triggers**](/actions-in-app-messaging/triggers.md) bind events to actions, firing an action when an event occurs.
* [**Feature Flags**](/feature-flags/conditional-feature-flags.md) enable you to disable a feature without modifying your source code or requiring a redeploy. Critical Moments feature flags use the conditional system for advanced targeting
* [**Themes**](/themes/theme-overview.md) update the color and fonts of our action UI to match the look and feel of your brand.
* [**The Config File**](/config-file-structure.md) binds all of the above concepts together. Even native UI actions can be defined in the config. By defining these in config instead of code we enable AB tests, iterative optimizations and powerful updates, launched with unprecended flexibility.
* [**Remote Update**](/remote-control-service.md) allows you to update your app's behaviour outside of the app store release cycle. This is useful for dealing with unexpected scenarios like showing an announcement in app, outages, disabling bugs, and more.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.criticalmoments.io/concepts-overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
