# Push notifications overview

<table style="border: solid 1px grey">
<tr>
<td width="40%" style="padding:1em">

.. image:: iphonemessage.png 

</td>
<td>

## Reach your users with push
With the new push notifications feature in the Usergrid, you can send announcements to your app's users.

* __Reach your app's users__ with messages they care about.
* __Keep your app footprint low__ while communicating in a high-value way with your app's users. 

[Read more](getting-started.html)

</td>
</tr>
</table>

<p></p>

## Get started

#### [Get started with a tutorial](tutorial.html)
Build your first push-enabled app using an Apigee sample.

#### [Find what you can do with it](getting-started.html)
A video and introduction.

#### [See the prerequisites](getting-started.html#prerequisites)
Depending on your supported app platforms, you'll need just a few things.

 
## Build push support

#### [Setting up push notifications support](getting-started.html)
Connect Apple or Google with Usergrid and your app.

#### [Register your app](registering.html)
Register with Apple or Google.

#### [Create a notifier](creating-notifiers.html)
Your application uses this to send messages.

#### [Register client devices](managing-users-and-devices.html)
Your app code registers to receive notifications.

#### [Send and manage notifications](creating-and-managing-notifications.html)
You can do this from app code or the admin portal.

## Learn more

#### [Troubleshoot your push support](troubleshooting.html)
Things don't work as you expect?