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
/newscovers 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/listingsandGET /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_reachedwhen the requested action would exceed the plan's limits. Paid plans are never blocked at the API level.