Feeds are the core of the Adafruit IO system. A feed holds data and meta-data that you have sent to Adafruit IO.

Data is the information you want Adafruit IO to store. For example, temperature data, fan speed, or whether a light switch is turned on or off. Note that the data does not have to represent a physical thing, but it often does!

Meta-data includes settings for whether the data is public or private, what license the stored sensor data falls under, and a general description of the data for humans to read.

For users programming with Adafruit IO (i.e.: Writing code that interfaces with Adafruit IO's API directly via MQTT or REST):

  • You will need to create one feed for each unique source of data you send to Adafruit IO.
    • For example, if you have a project with one temperature sensor and two humidity sensors, you would need to create three feeds. One feed for the temperature sensor, and one feed for each humidity sensor.

For users using WipperSnapper with Adafruit IO (No-code programming):

  • A feed (or multiple feeds, depending on the component) is automatically created when you add a new component to your board.
    • For example, if you are adding a new temperature sensor to your board on Adafruit IO, the feed to store the temperature sensor's data will automatically be created for you. 

Both API access and WipperSnapper both use feeds, the latter just automatically manages it for you.

Creating a Feed on Adafruit IO is a very simple process. Remember, if you are using WipperSnapper you do not need to create feeds - they are created for you automagically!

When you log in to your io.adafruit.com account, first visit the Overview page. This page lists information about your account, the data coming into IO from your devices, a list of WipperSnapper devices if you have any, and more.

To navigate to the feed page, click on the Feeds link on the header.

On the Feeds page, click the New Feed button.

A pop-up will appear, and you will be presented with two text inputs:

  • Name - A short descriptive title of your data. Letters, numbers, dashes, underscores, or spaces are valid characters, and this field is required. The feed name must be unique to your account.
  • Description - A long-form description of your data. This field is not required, but it's useful to provide a detailed description of your feed.

After adding a feed name and description, click Create.

You'll see your new feed appear on the feed page, underneath the "Default" group.

Over time, you may need to edit information about your feed on Adafruit IO such as:

  • Feed name - The user-provided, human-readable, name for a feed. 
  • Feed key - The system-generated, URL-safe identifier based on the Feed name that is used in API requests. For more information about Feed Keys, see this guide >>>
  • Feed description - Information about the specific feed
  • Feed visibility - whether data on the feed is private, or publicly viewable
  • Feed Sharing - covered in the "Sharing a Feed" section of this guide
  • Feed history - how long data is stored on the feed
  • Feed notification - Email notifications for when the feed goes "offline"
  • Feed Webhook - enable a webhook to send data to your feed,
  • License - Add a license type to your feed
If you are using WipperSnapper, you probably don't want to edit your feeds unless you *really* know what you're doing. WipperSnapper will otherwise manage your feeds for you!

To view your feeds, navigate to Adafruit IO and click the Feeds button on the header.

From the Feeds page, click the feed that you would like to view and edit.

From the feed page, you can edit the feed's information and configuration.

Edit Feed Info

By editing a feed's info, you'll be able to change its name, key, and/or description.

From the feed page, click the Feed Info button.

You will be presented with a form so you can edit the name, key, and description of the feed. The key for a feed can be used when accessing the feed programmatically. By default, the key is a lowercase version of your feed name with any spaces replaced with dashes. See our guide to naming things in Adafruit IO for more information about how we handle the formatting of names and keys.

Click Save once you have finished editing the feed's information.

Edit Feed Privacy

When a new feed is created on Adafruit IO, that feed is private by default. The feed, and the information stored on it, will be visible only to you.

But what if you want to share a link to the feed's data with a friend, a classmate, your students, or the world?

You can edit your feed's privacy by clicking the Privacy button on the feed page.

From the Privacy pop-up, you can edit the Feed's visibility to either be private (feed will only be visible to you) or public (anyone in the world will be able to read data from your feed).

For example, my Example feed is private. Set the feed's value to public and click Save.

On the feed page, underneath Privacy, new text will appear informing you that the feed is publicly visible via the feed's URL in your browser.

Edit Feed License

If you are sharing your feed's data publicly, you should set the appropriate license for your data. You can choose to reserve all rights for the data or license it under any of the Creative Commons licenses in the list.

To change the license for your feed, click on the gear icon under the License menu on the bottom right of the screen. 

You will be presented with a list of licenses to select from. Click on a new license type and save your selection.

Edit Feed Notifications

Feed Notifications are an Adafruit IO Plus (IO+) feature. For more information about upgrading your account, visit io.adafruit.com/plus.

When notifications are activated, Adafruit IO will send an email to alert you if no new data has been received for your feed within the given amount of time.

To change the notification settings for your feed, click on the gear icon under the Notifications menu on the right-hand side of the screen.

Next, enable notifications by selecting ON from the status menu, and selecting a timeout. Click Save when finished.

Edit Feed History

When they are created, an Adafruit IO Feed is configured to store data points up to 1KB in length.

However, if you want to put large data points (such as images or binary blobs) on an Adafruit IO feed, you can turn the feed history off.  With the Feed history turned off, you can publish values up to 100KB to a feed.

To change the history settings for your feed, click on the gear icon under the Feed History menu on the right-hand side of the screen.

Next, enable or disable history by selecting ON or OFF from the menu, and click Save.

Deleted feeds are permanently deleted, cannot receive any new data, and will not be included in full account downloads. Existing data may be downloaded from the feed's page, prior to deletion.

To delete a feed, navigate back to the list of feeds by clicking on the Feeds button on the header.

Deleting a feed is permanent! There is no "Trash/recycle bin", and it is not possible to undo the deletion

From the list of feeds, locate the feed you'd like to delete and click the checkbox next to the feed's name.

Click the Delete Feed button.

A dropdown will appear to double-check that you'd like to delete this feed. Click Delete Feeds.

The feed is now deleted from your account.

Deleting Adafruit.io Feeds for WipperSnapper Devices

If you are using Adafruit.io with a no-code device running the WipperSnapper firmware, the process of feed deletion is different.

Each component connected to an Adafruit IO WipperSnapper device is tied to a feed (or multiple feeds, depending on the component's type).

On the Adafruit IO Feeds page, the "traditional" feeds (as discussed above) are listed first. Feeds belonging to a WipperSnapper device have a microcontroller icon next to the feed and no checkboxes next to them. 

To delete a feed belonging to an Adafruit IO WipperSnapper device, from the Feeds page, click the name of the device.

From the device page, click the cog next to the component tied to the feed you'd like to delete.

At the bottom of the component settings, click the trash can icon to delete the component.

Click Confirm to delete the component and the feed associated with it.

While deleting a feed permanently destroys all data on an Adafruit IO feed, the process of disabling a feed permanently "archives" the data on an Adafruit IO feed. You will be able to access the feed page and its data, but not write to it.

Disabled feeds are permanently locked from editing, cannot receive any new data, and will not be included in full account downloads. Existing data may be downloaded from the feed's page.

Disabling a feed is permanent! Once a feed has been disabled, it may not be reactivated.

To disable an Adafruit IO feed, navigate to your feeds page. Click the checkbox next to the feed you'd like to disable.

Click the Disable Feed button.

Read through the warning. Once you've read through it, click Confirm.

Your feed will be disabled and archived. The feed is still visible in your feeds list, but is greyed out and "locked". You can read feed data, but can no longer modify the feed or add new data.

Making your feed private will make it only visible to you while making it public will make it visible to the world. But what if we want to share a feed with one person, or a specific group of people?

You'll want to use Adafruit IO's feed-sharing feature. Feed sharing allows you to invite someone to view a specified feed. This is a great feature if you're building a project but don't want to make your feed public to strangers, only your friends. 

Share a Feed

Decided on which feed you'd like to share with somebody else? Navigate to that feed's page. Then, click the Sharing text on the sidebar

You'll be greeted with the Sharing Settings window.

You can invite somebody you know using either their Adafruit IO Username or their personal email address. 

You'll have two options for controlling someone's access to your feed:

  1. If you give them Read access, they'll only be able to view the feed you share.
  2. Want to give them the ability to read and publish data to your feed? Selecting the Read + Write access level will give the user you invite the ability to both read from your feed and write to your feed. 
If the person you're sharing with does not have an Adafruit IO account associated with that email, don't worry! They'll be prompted to create one through the email.

Once you have the email/username field filled, and the access level configured, go ahead and click Send Invitation. 

Accepting a Shared Feed Request

Now it's the other person's turn. After you click Send Invitation, they should receive an email from Adafruit IO informing them that you've shared a feed with them. 

Clicking Review This Feed Share will show them the details of the share, their access level, and allow them to either accept, deny, or block the request. 

The Privacy & Sharing Page

To see the shared feeds you are sharing (and the feeds shared with you), click the Adafruit button (or navigate to io.adafruit.com). 

Then click the link to Privacy and Sharing.

This is the privacy and sharing page - a central point for your Adafruit IO account's privacy and sharing information.

You'll be presented with links to the feeds that you are currently sharing, the feeds that are shared by you, a list of your public dashboards, and a list of blocked users. 

Adafruit IO Sharing F.A.Q.

Who Shares What?

All data rate usage comes from the publishing user.

Data rate usage for feeds is dictated by whomever is publishing to the feed. If you are sharing a feed, your data rate will remain unchanged until you publish (write) to it. If you have access to a shared feed with write access, publishing to the feed will effect your data rate usage, but not the rate usage of the person sharing the feed.

Social Web Service Security: Blocking, Ignoring and Unsubscribing

Because Adafruit IO is an open web service, we don't review every single feed sharing invitation before it's sent. In order to prevent repetitive unwelcome sharing invitations from anyone, we will always give you the ability to: ignore individual invites, block a user from being able to invite you to share, or unsubscribe from all sharing invitation emails.

When you ignore an invite, it will be cleared from your sharing page and the user who invited you won't be able to invite you to that feed again, but they will be able to invite you to share any other feed they own.

When you block a user, they will no longer be able to share any feeds with you at all. Users will never be explicitly informed that you have blocked them, but they may be able to infer it if they can't share anything with you. Sharing blocks are permanent until and unless you remove them.

Choosing to unsubscribe from sharing invitation emails will keep your inbox clean, so you'll have to visit your sharing page to see if you have any new sharing invitations.

How do I Adjust Access Levels?

Need to adjust the access level a user has to a shared feed? You can this from the feed page's Sharing Settings window. The window shows the feed owner and the person you shared the feed with. Click Edit to allow you to adjust their feed access privileges. 

Now, let's modify their access level. Clicking on the dropdown will give the choice of Read or Read + WriteWhen you click save changes, Adafruit IO will apply a different access level to the account. 

Want to make sure they can't access the feed anymore? You can revoke their access by clicking the Delete button. 

Using a Shared Feed with Adafruit IO Arduino

We've integrated feed sharing into the Adafruit IO Arduino library. Setting up a shared feed is similar to the process of setting up a regular feed, with just one change!

After you set the name of the feed (in this example, we're using feed-name). Then, set the owner of the feed (feedOwner):

AdafruitIO_Feed *sharedFeed = io.feed("FEED-NAME", "feedOwner");

Note: Make sure you know of the access-level you have to this feed. If you have Read-only access, you are not  able to write to the feed.  

Using a Shared Feed with Adafruit IO Python

We've also updated the Adafruit IO Python client to include feed sharing.

Instead of subscribing to your own feed:

client.subscribe("io-feed")

We'll add the username as a second argument to the method, to subscribe to the feed belonging to the owner:

client.subscribe("io-feed", "io-feed-owner")

Note: Feed sharing using the Adafruit IO Python client is not supported by the REST-based API client - only the MQTT client (mqtt_client) is supported. 

If you would like to download all of the stored data from your feed. The steps on this page are the same for "traditional" Adafruit IO feeds that you created by hand, and feeds produced by WipperSnapper devices.

Navigate to your feed from the Feeds page and click on the name of your feed to load it.

Underneath the feed's graph, click Download All Data.

You'll be given two file formats to download your feed's data: either as a JSON or CSV file. Both of these files will contain all the data points from your feed - perfect for using an external program to manipulate, analyze, and graph your feed's data.

After selecting your preferred data format, you'll receive a link to the feed data. Click the link to download your feed's data.

If you would like to learn more information about accessing feeds via the Adafruit IO REST API, you can check out the official API documentation.

We also have a growing list of client libraries. Each library supports reading, creating, updating, and deleting feeds. Visit the links below to learn more about the library you wish to use.

This guide was first published on Apr 20, 2015. It was last updated on Oct 06, 2023.