Skip to content

Shopify app

The Shopify app puts Vumbnail thumbnails into Shopify storefronts via a theme app extension, with an embedded admin app for setup and billing. It is scaffolded and researched but not launched — the surface exists from the Shopify app template and the design direction is set, but it is not in the roadmap’s near-term ship lane.

When live, a merchant installs the Vumbnail app from the Shopify App Store, opens the embedded admin (App Bridge), and adds a Vumbnail Product Video block to a product template in the theme editor. The block renders a poster-first video player: it shows the Vumbnail thumbnail and only swaps in the YouTube/Vimeo iframe after a click, keeping product pages fast.

Inputs: a Shopify shop session (OAuth/App Bridge), a product video URL or ID configured in the block, and theme block settings.

Outputs: a rendered poster-first video block on the storefront product page; admin views of shop, plan, and configuration.

Entry routing: the app index route redirects to /app (preserving the shop search params) when a shop parameter is present.

  • Not installed / unauthenticated — standard Shopify OAuth install flow.
  • App uninstalled / scope change — handled by app.uninstalled and app.scopes_update webhooks.
  • No video configured — the block renders nothing (or a placeholder) rather than a broken player.
  • Billing — Shopify Billing is the intended system of record for merchant charges; the existing Stripe entitlement system would at most be a downstream sync target, not the merchant-facing biller.
// Theme block setting (storefront)
type ProductVideoBlock = {
videoUrl: string // Vimeo/YouTube URL or id
posterUrl: string // derived Vumbnail thumbnail URL
autoplayOnClick: boolean
}
// Admin (embedded app) — shop context from Shopify GraphQL
type ShopContext = {
name: string
domain: string
plan: string
}
  • Launch decision. The app is in a research/scaffold state; whether and when to push it through Shopify review is deferred behind the core revenue work.
  • Billing integration depth. Exactly how Shopify Billing maps to clean-image entitlement (per-shop allow-list vs. account-level) is undecided.
  • Hosting & session storage for production (Prisma/SQLite locally) needs a production target. See the global Open questions.