Cookies & analytics

    We use cookies for analytics and to serve ads. Accept to enable Google Analytics and AdSense. You can decline to stay opt-out.

    SwiftSchema Logo

    SwiftSchema

    Intuitive Schema Generation at Your Fingertips

    AboutLearnContact
      Stack

      SaaS Upgrade / Downgrade Stack

      Plan change pages with Offer + WebApplication context, FAQs, and breadcrumb navigation.

      Open generatorValidate in Rich Results Test

      When to use this stack

      • Plan upgrade or downgrade landing pages
      • Self-serve account management plan change flows
      • Billing pages explaining proration, trials, and limits

      What's included

      • Represents the plan change offer and pricing details.

      • Web Application
        Open generator

        Describes the account management UI used to change plans.

      • Frequently Asked Questions
        Open generator

        Answers proration, billing cycle, and feature access questions.

      • Breadcrumb
        Open generator

        Provides navigation context for the plan change page.

      Required properties (stack union)

      Ensure every applicable required property is present in your implementation. Nested props reference their parent objects (for example, `offers.priceCurrency`).

      applicationCategory
      availability
      itemListElement[].name
      mainEntity[].@type=Question
      mainEntity[].acceptedAnswer.text
      name
      operatingSystem
      price
      priceCurrency
      url

      Recommended properties (stack union)

      description
      eligibleCustomerType
      itemListElement[].item
      mainEntity[].acceptedAnswer.text
      mainEntity[].author.name
      mainEntity[].name
      offers.url
      priceValidUntil
      softwareVersion

      Combined JSON-LD

      Paste as a single script tag. Keep product details, offer data, shipping/returns, and FAQ answers in sync with the page.

      Validate
      [
        {
          "@context": "https://schema.org",
          "@type": "Offer",
          "@id": "https://www.example.com/account/plan-change#offer",
          "name": "Upgrade to Pro Plan",
          "description": "Unlock advanced analytics, priority support, and team workflows.",
          "price": "99.00",
          "priceCurrency": "USD",
          "availability": "https://schema.org/InStock",
          "url": "https://www.example.com/account/plan-change"
        },
        {
          "@context": "https://schema.org",
          "@type": "WebApplication",
          "@id": "https://www.example.com/account/plan-change#app",
          "name": "Plan Management Console",
          "description": "Manage upgrades, downgrades, and billing settings.",
          "applicationCategory": "BusinessApplication",
          "operatingSystem": "Any",
          "url": "https://www.example.com/account/plan-change",
          "offers": {
            "@type": "Offer",
            "url": "https://www.example.com/account/plan-change"
          }
        },
        {
          "@context": "https://schema.org",
          "@type": "FAQPage",
          "mainEntity": [
            {
              "@type": "Question",
              "name": "How does proration work?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Upgrades are prorated immediately, and credits apply to your next invoice."
              }
            },
            {
              "@type": "Question",
              "name": "Will I lose features if I downgrade?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Downgrades take effect at the end of the billing cycle; premium features remain active until then."
              }
            },
            {
              "@type": "Question",
              "name": "Can I switch plans anytime?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Yes. You can change plans at any time from the plan management page."
              }
            }
          ]
        },
        {
          "@context": "https://schema.org",
          "@type": "BreadcrumbList",
          "itemListElement": [
            { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.com" },
            { "@type": "ListItem", "position": 2, "name": "Account", "item": "https://www.example.com/account" },
            { "@type": "ListItem", "position": 3, "name": "Plan Change", "item": "https://www.example.com/account/plan-change" }
          ]
        }
      ]

      Implementation steps

      1. Start from your live product detail page content; ensure titles, prices, and availability match the page.
      2. Embed one JSON-LD script in the head or just before the closing body tag using the combined example as a template.
      3. Fill shipping details for each region you serve and keep them aligned with on-page shipping tables.
      4. Attach your canonical MerchantReturnPolicy URL and keep the policy text in sync with Merchant Center.
      5. Add 3–6 FAQs that address purchase blockers (shipping, returns, compatibility) and keep answers consistent with visible content.
      6. Validate in the Rich Results Test and revalidate after price/availability/policy changes.

      Common errors and fixes

      FAQs

      Should I include multiple plan options?

      Yes. Add one Offer per plan tier and match each to the corresponding CTA.

      How do I handle annual plans?

      Use separate Offer entries for monthly vs annual pricing or describe the billing cadence in the offer description.

      References