Attributes (HTML)
Get started building a beautiful feed today!
Attributes (HTML)
The Attributes delivery method lets you build a feed into any HTML page by adding two attributes to your own markup: one on a wrapper element, one on each post. FeedSpring handles data fetching, field injection, and updates automatically.
It is the fastest way to get a live feed on any website. No build step, no backend, no JavaScript to write. If you can edit HTML, you can ship a feed in minutes.
When to use Attributes
Attributes is the right choice when:
You are building in Webflow, Wordpress, Shopify, or any tool that exposes HTML and
<head>access.You want full design control without writing React or consuming an API.
You need the fastest possible setup with no package installs or build tooling.
You are prototyping, building marketing pages, or working in a no-code or low-code environment.
Choose a different delivery method if:
You are working inside a React, Next.js, or similar framework, use React components.
You are building in Framer and want design-time controls, use Framer components.
You need server-side rendering, custom caching, or fully custom data handling, use the API.
How it works
FeedSpring injects a small script into your page. On load, the script looks for any element with a feedspring attribute, fetches the feed data for that ID, then walks the DOM to find post wrappers and field targets. Your HTML stays yours, the data is layered on top.
The entire system uses three attributes:
feedspring="YOUR-FEED-ID"
A wrapper element
Declares a feed container and which feed to render
feedspring="post"
A repeating element inside the wrapper
Marks the template that repeats for each post
feed-field="FIELD-NAME"
Any element inside a post (or the wrapper for profile fields)
Targets where a piece of content is injected
That's the whole model. Everything else, filtering, limits, rendering mode, locale formatting, is configured with one optional feed-options attribute.
Quick install
Three steps from a fresh account to a live feed.
1. Add the script for your feed source
Paste the script for your feed type into your site's <head>. In Webflow, that's Site Settings → Custom Code → Head Code. In plain HTML, inside <head>.
Only load the scripts for feed types you are actually using.
2. Build your wrapper and post
Mark up a container and a single post template. Inside the post, place elements with feed-field attributes wherever you want data to appear.
The feedspring="post" element acts as a template. In render:dynamic mode, FeedSpring clones it for each post in the feed and injects the right data into each copy.
3. Publish
Replace YOUR-FEED-ID with the ID from your FeedSpring dashboard and publish the page. The feed renders on the next page load.
The three attributes in detail
feedspring="YOUR-FEED-ID", the feed wrapper
feedspring="YOUR-FEED-ID", the feed wrapperPlaced on any element that will contain the feed. Typically a <div> or <section>.
Each feed ID starts with a source prefix so the script knows which source to render:
inst_...
google_...
Google Reviews
tiktok_...
TikTok
dribbble_...
Dribbble
Example:
Each page can have multiple wrappers, including multiple feeds from different sources.
The wrapper is where you also add
feed-optionsto control rendering.Any
feed-fieldattribute placed on or inside the wrapper but outside a post template is treated as a profile-level field. Examples: follower count, average rating, business name.
feedspring="post", the post template
feedspring="post", the post templateThe repeating element. FeedSpring finds the elements inside the wrapper with feedspring="post" and uses them to render per-item content.
All
feed-fieldattributes inside a post are post-level and receive the data for that specific post.Any styling, hover states, animations, or interactions you add to the template are preserved in each rendered copy.
feed-field="item"is a supported alias forfeedspring="post", both mark an element as a post template.
feed-field="FIELD-NAME", the data target
feed-field="FIELD-NAME", the data targetPlaced on the element that should display a piece of data. The element type matters:
<img>
The src attribute is set to the field value. srcset is removed if present.
<a>
The href attribute is set to the field value.
<iframe>
The src is set to the derived embed URL (used for TikTok video playback).
Any other element
The field value is injected as text or HTML content.
Some fields are written with innerHTML rather than innerText, which means HTML in the value is rendered, not escaped. This is true for:
Instagram
captionTikTok
title,description,name,bioDribbble
bio
For every other field, values are written as plain text.
Available field names depend on the feed source. See the per-source pages for the full list:
Instagram fields
Google Reviews fields
TikTok fields
Dribbble fields
The bg field
bg fieldIn addition to the element-type rules above, the bg field is a special case: applied to any element with feed-field="bg", it sets background-image: url(...) rather than src. Useful for card backgrounds and hero covers where you want the image as a CSS background.
Currently Instagram only.
Modifier attributes
Some rendering behaviours are controlled with additional attributes that sit alongside feed-field. These modify how the field is rendered.
feed-timestamp
feed-timestampApplied to an element with feed-field="timestamp". Controls how the timestamp is formatted.
from-now, renders as a relative time: "2 days ago", "a month ago"Any other value is passed to Day.js format strings, for example
MMMM D, YYYY,DD/MM/YY, orHH:mmIf omitted, the default format is
MMMM D, YYYY
Works on all feeds that expose a timestamp field: Instagram, Google Reviews, TikTok, Dribbble.
A complete working example
This is a copy-pasteable Instagram grid. Drop it into any HTML page with the Instagram script installed and replace the feed ID.
Loading state
If you want to show a custom placeholder while the feed loads, wrap it in an element with feedspring="loading". FeedSpring removes this element once feed rendering starts:
Install in specific platforms
The script and markup are the same everywhere. The only thing that changes is where you paste the script.
Webflow. Open your project, go to Site Settings → Custom Code and paste the <script> tag into the head code. For a feed on a single page only, use Page Settings → Custom Code instead. Add your HTML in a Webflow Embed element, or build the wrapper and post natively in Designer and add the feedspring and feed-field attributes via the element settings panel.
Plain HTML, Shopify, Wordpress, or any CMS. Paste the <script> tag inside <head>. Add your markup anywhere in the <body>. No build step, no package install.
React, Vue, Svelte, or any modern framework. The Attributes method works inside a framework as long as the script has run before your component mounts. For most frameworks we recommend the dedicated React component delivery method instead, which is designed for component-based environments.
Next steps
See which fields are available for your feed in the Feeds reference
Tune filtering and limits with Filtering & Limits
Understand Rendering Behaviour (static vs dynamic,
appear, locale)If you are an AI agent building a feed, see the full attribute reference
Last updated