Last Week: Subscription Billing, News Feed, and In-App Help (July 22, 2026)

Stripe-powered subscription plans with usage tracking and per-plan overage, a brand-new News feed with in-app and email notifications, an in-app Help Center, on-demand content checks, and a wave of order and listing fixes.

New Features

  • Stripe subscription billing and self-serve plans — Osello now runs on paid subscription plans through Stripe. Pick a plan on signup, manage your subscription and payment method from a Stripe-hosted portal, see invoices in-app, and track your current-cycle usage (live SKUs, monthly GMV, marketplaces, users) against your plan limits.
  • Usage-based plan recommendation — the plans page surfaces a "Recommended" badge based on your projected usage, so upgrade prompts point at the plan that actually fits how you're using Osello. Over-limit banners now link straight to the plans page.
  • Per-plan overage rates and in-app breakdown — higher plans charge lower overage rates on live SKUs and monthly GMV. A new "Limit Overage Details" action on the billing usage card opens a dialog with the exact rates for your current plan. The Free plan is hard-capped and never billed for overage.
  • News feed with in-app bell and email notifications — a new News feed at /news covers marketplace, integration, and product announcements, filterable by category, marketplace, or integration. A bell icon in the top bar surfaces unseen articles one at a time, and you can opt into relevance-targeted email notifications with RFC-compliant one-click unsubscribe.
  • In-app Help Center — the Help Center now mirrors inside Osello, so you can search and read articles without leaving the app.
  • On-demand content check on listings — a new "Check Content" action on the listing page (with a matching API endpoint) reruns readiness checks immediately instead of waiting for the next scheduled pass, so you can confirm a fix took hold without waiting.
  • Preferences page grouped into accordions — account preferences are grouped into Relevant News, Billing, Security, and Marketing sections, with a confirm-gated "Unsubscribe from all" for email notifications.

Improvements

  • Unified subscription plan card — the billing page now shows your current plan, price, and a Terms of Service link on a single card with contextual Choose Plan / Upgrade Plan / Manage Subscription actions, replacing the split pricing table and summary.
  • Terms of Service and Privacy Policy rewritten — both cover subscription billing, usage-based overage, and order/customer-data sync, and the marketing site can now grow new content pages by adding a markdown file.
  • Clearer listing state after submission — the listing state UI now distinguishes "submitted but not yet pending approval" from "has pending change submissions", so it's obvious what stage a listing is at.
  • Smarter Size value preloading — value preloading for size attributes (especially NRF Size Code) is more reliable, so new listings pick the correct size option more often.
  • Mirakl "approved but offer not sent" state handled cleanly — a listing that Mirakl has approved but whose offer hasn't been pushed yet no longer flips to "unknown".
  • Quieter order syncing — order sync produces fewer redundant notifications for the same underlying change.
  • Fewer duplicate content check jobs — mass edits across many listings no longer queue up duplicate content-check work in the background.
  • Mobile polish on the marketing site — the homepage, about page, and hamburger menu got mobile-friendly tweaks, and content spacing across marketing pages was tightened up.
  • View and copy AI Chat details — you can open an AI Chat's details from the chat panel and copy its ID, which is handy when reporting an issue with a specific chat.
  • In-app news and help article polish — small UI refresh on the in-app news and help article views, with broken breadcrumbs fixed.

Bug Fixes

  • Fixed Shopify order syncing failing on orders whose tax was being synced to a marketplace.
  • Fixed Mirakl orders coming in with incorrect unit price values.
  • Fixed listings getting stuck in an "unknown" state when they were deleted on the marketplace or never made it through the initial submission.
  • Fixed AI listing-variant field fills failing partway through with a "write delegation unavailable" error, and stopped the listing agent from occasionally acting on variants that belonged to a different listing.
  • Fixed specific-order pulls fetching each Shopify order twice; one failing order in a pull no longer aborts the remaining pulls.
  • Fixed post-submission edits to SKUs, barcodes, or options not being detected as unsubmitted changes on the affected variants.
  • Fixed variants staying stuck at "unknown" content state even after the marketplace answered approved or rejected.
  • Fixed rare "record not found" errors when a listing action queued follow-up work that ran before the change was fully saved.
  • Fixed AI filtering by boolean flags (e.g. "is disabled") failing with an error.
  • Fixed the listing state badge showing "100%" when the parent listing was still missing required fields.
  • Fixed an incorrect ID being used on one API endpoint so calls now hit the intended record.

API Updates

Version: 7.4.0

New endpoints

  • GET /api/stores/:store_id/billing — retrieve the store's billing summary (current plan, subscription status).
  • GET /api/stores/:store_id/billing/usage — current-cycle usage metrics (live SKUs, monthly GMV, marketplaces, users) against plan limits.
  • GET /api/stores/:store_id/billing/recommended_plan — the recommended plan for the store based on projected usage.
  • GET /api/stores/:store_id/billing/invoices — list invoices for the store, fetched live from Stripe.
  • POST /api/stores/:store_id/billing/checkout_session — start a Stripe Checkout session for a new subscription.
  • POST /api/stores/:store_id/billing/change_plan_session — start a Stripe session for changing an existing subscription's plan.
  • POST /api/stores/:store_id/billing/stripe_session — start a Stripe Billing Portal session for the current subscription.
  • POST /api/stores/:store_id/channels/:channel_id/listings/:listing_id/check_content — trigger an on-demand content readiness check for a single listing.

Updated/removed endpoints

  • GET /api/stores/:store_id/channels/:channel_id/listings and GET /api/stores/:store_id/channels/:channel_id/listing_variants — new filter parameters expose the finer-grained submission states (submitted-but-not-yet-pending-approval, pending change submissions).
  • Filtering on boolean flags (e.g. is_disabled) now works reliably on the listing and variant index endpoints.

Notes for API consumers

  • Api version bumped 6.2.2 → 7.4.0. The jump is driven by the new billing surface; no previously public endpoints were removed.
  • Stores on the Free plan now hit hard caps on channel create, user invite, and listing submit — those endpoints return 422 :plan_limit_reached when the requested action would exceed the plan's limits. Paid plans are never blocked at the API level.