

# Introduction

> Each soc user can now choose to subscribe to many types of entities on the site and receieve updates either via an ATOM feed or personalized e-mails.


# The Recent Updates Box

Any page with a Recent Updates box like the one below supports subscriptions.


![http://jamtodaycdn.appspot.com/i/img?id=agtqYW10b2RheWNkbnINCxIFSW1hZ2UYupQBDA&.jpg](http://jamtodaycdn.appspot.com/i/img?id=agtqYW10b2RheWNkbnINCxIFSW1hZ2UYupQBDA&.jpg)


This box updates with the latest changes (new entities, changed entities, or deleted entities) that relate to the entity on the page you're viewing. For instance, if you are viewing the Recent Updates for a program, you might see recent documents or proposals made for that program in its Recent Updates box.


# ATOM Feed

Clicking on the orange button in the Recent Updates box will take you to the ATOM feed for that entry, which aggregates the types of updates in the Recent Updates box. These updates only have very basic update information and a link to the updated entity's page.

This is because there is no way to secure the RSS feeds and also make them easy to consume in places like Google Reader. If you'd like more detailed updates, try the e-mail subscription instead.


# E-mail Subscription

If you'd like more information about updates or just like e-mail over syndicated feeds, you can just click on the star on the Recent Updates box so that it is lit up, indicating that you are subscribed:

![http://jamtodaycdn.appspot.com/i/img?id=agtqYW10b2RheWNkbnINCxIFSW1hZ2UY0owBDA&.jpg](http://jamtodaycdn.appspot.com/i/img?id=agtqYW10b2RheWNkbnINCxIFSW1hZ2UY0owBDA&.jpg)

On the User Profile editing page, there is also a global override for e-mail subscriptions. Whether you've subscribed to any individual entities or not, turning off this global toggle will mean you will not receive any more e-mails. Oh, sweet relief!


# PubSub Support

The subscription feature also has built-in support of the new "push-button" notification capability demonstrated in this video:


<a href='http://www.youtube.com/watch?feature=player_embedded&v=ewQBgbysSOQ' target='_blank'><img src='http://img.youtube.com/vi/ewQBgbysSOQ/0.jpg' width='425' height=344 /></a>

