Skip to main content
News Feed cards are persistent in-app content. Unlike overlay in-app messages, a card remains eligible until its assignment expires or the customer dismisses it.

How News Feed works

Cards are assigned to one customer, to an audience, or globally. The Storefront API resolves those assignments against the active template every time the feed is requested. Audience assignments are evaluated against current audience membership. If a customer leaves the audience, that assignment no longer makes the card eligible. Editing an active template changes the content returned for every existing assignment because assignments store a template reference rather than a content copy.

Card lifecycle

Tracking emits NEWS_FEED_ASSIGNED, NEWS_FEED_SHOWN, NEWS_FEED_CLICKED, and NEWS_FEED_DISMISSED events.

Configuration

The public feed endpoint accepts limit from 1 to 50 for each request; there is no separate account-level feed size setting.

Eligibility and ordering

The feed combines three assignment branches:
  1. Direct customer assignments, including journey actions and test sends.
  2. Global assignments with no customer or audience target.
  3. Audience assignments when the customer is currently a member.
Duplicate branches for the same template are collapsed. A non-expiring assignment keeps the combined card non-expiring. Cards are ordered by pinned state, numeric priority, and newest assignment time.

Operations and cleanup

POST /api/cron/marketing_automation/news_feed/cleanup deletes expired assignments in batches of 5,000. It also deletes stale read-state rows after a seven-day grace period when no direct, global, or current-audience assignment still covers the customer and template. Template expiration changes enqueue a batched recomputation of expires_at for existing assignments.

Comparison with in-app messages