← All blocks

Blog index with category filter

blog · filterable-grid · blog-post-grid

npx shadcn@latest add @plus-ui/blog-post-grid

Default content

{
  "eyebrow": "The Tessaly blog",
  "title": "Notes on retention, funnels and revenue",
  "description": "What we learn measuring our own product and helping 1,400 SaaS teams measure theirs. New posts every Wednesday.",
  "categories": [
    "Retention",
    "Funnels",
    "Revenue",
    "Research",
    "Engineering"
  ],
  "labels": {
    "all": "All posts",
    "filter": "Filter posts by category",
    "featured": "Featured",
    "recent": "Recent posts"
  },
  "viewAll": {
    "label": "View all posts",
    "href": "#"
  },
  "posts": [
    {
      "title": "Week-4 retention is the number we trust most. Here is why.",
      "excerpt": "Day-1 retention flatters onboarding and day-90 arrives too late to act on. Week 4 is where habits show up early enough to change the roadmap.",
      "href": "#",
      "category": "Retention",
      "cover": {
        "src": "https://images.unsplash.com/photo-1434030216411-0b793f4b4173?auto=format&fit=crop&w=1200&h=800&q=80",
        "alt": "A hand sketching a chart on paper beside a coffee cup"
      },
      "author": {
        "name": "Danielle Okafor",
        "role": "Head of Product",
        "avatar": {
          "src": "https://images.unsplash.com/photo-1573497019940-1c28c88b4f3e?auto=format&fit=crop&crop=faces&w=96&h=96&q=80",
          "alt": "Portrait of Danielle Okafor"
        }
      },
      "date": "Sep 24, 2026",
      "dateTime": "2026-09-24",
      "readTime": "8 min read"
    },
    {
      "title": "Funnels that survive a pricing change",
      "excerpt": "When the plan page changes, step definitions drift. How we version funnel steps so last quarter's conversion still means the same thing.",
      "href": "#",
      "category": "Funnels",
      "cover": {
        "src": "https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&w=1200&h=800&q=80",
        "alt": "Two people pointing at a funnel report on a laptop"
      },
      "author": {
        "name": "Sofia Lindqvist",
        "role": "Product Analyst",
        "avatar": {
          "src": "https://images.unsplash.com/photo-1494790108377-be9c29b29330?auto=format&fit=crop&crop=faces&w=96&h=96&q=80",
          "alt": "Portrait of Sofia Lindqvist"
        }
      },
      "date": "Sep 17, 2026",
      "dateTime": "2026-09-17",
      "readTime": "6 min read"
    },
    {
      "title": "Reconciling product revenue with the finance ledger",
      "excerpt": "Product counts upgrades when they happen; finance counts them when they are invoiced. A practical guide to closing the gap every month.",
      "href": "#",
      "category": "Revenue",
      "cover": {
        "src": "https://images.unsplash.com/photo-1499750310107-5fef28a66643?auto=format&fit=crop&w=1200&h=800&q=80",
        "alt": "A laptop, coffee and an open notebook on a wooden desk"
      },
      "author": {
        "name": "Marcus Hale",
        "role": "Data Engineer",
        "avatar": {
          "src": "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?auto=format&fit=crop&crop=faces&w=96&h=96&q=80",
          "alt": "Portrait of Marcus Hale"
        }
      },
      "date": "Sep 10, 2026",
      "dateTime": "2026-09-10",
      "readTime": "11 min read"
    },
    {
      "title": "Twelve interviews about the dashboards nobody opens",
      "excerpt": "We asked customers which saved reports they had stopped reading. The answers changed how we design defaults for new workspaces.",
      "href": "#",
      "category": "Research",
      "cover": {
        "src": "https://images.unsplash.com/photo-1552664730-d307ca884978?auto=format&fit=crop&w=1200&h=800&q=80",
        "alt": "A team sorting interview notes on a sticky-note wall"
      },
      "author": {
        "name": "Amara Nwosu",
        "role": "Customer Research",
        "avatar": {
          "src": "https://images.unsplash.com/photo-1534528741775-53994a69daeb?auto=format&fit=crop&crop=faces&w=96&h=96&q=80",
          "alt": "Portrait of Amara Nwosu"
        }
      },
      "date": "Sep 3, 2026",
      "dateTime": "2026-09-03",
      "readTime": "7 min read"
    },
    {
      "title": "Event naming that still makes sense in two years",
      "excerpt": "Object, action, past tense. The conventions behind 4,000 tracked events in our own workspace — and the three we wish we had broken earlier.",
      "href": "#",
      "category": "Engineering",
      "cover": {
        "src": "https://images.unsplash.com/photo-1498050108023-c5249f4df085?auto=format&fit=crop&w=1200&h=800&q=80",
        "alt": "A laptop showing code on a white desk with a plant"
      },
      "author": {
        "name": "Tomás Ortega",
        "role": "Engineering Lead",
        "avatar": {
          "src": "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?auto=format&fit=crop&crop=faces&w=96&h=96&q=80",
          "alt": "Portrait of Tomás Ortega"
        }
      },
      "date": "Aug 27, 2026",
      "dateTime": "2026-08-27",
      "readTime": "9 min read"
    },
    {
      "title": "Cohorts by plan, not by signup week",
      "excerpt": "Signup-week cohorts hide what pricing does to retention. Grouping by first paid plan showed us which tier was quietly churning.",
      "href": "#",
      "category": "Retention",
      "cover": {
        "src": "https://images.unsplash.com/photo-1519389950473-47ba0277781c?auto=format&fit=crop&w=1200&h=800&q=80",
        "alt": "An overhead view of a shared desk with laptops and notebooks"
      },
      "author": {
        "name": "Sofia Lindqvist",
        "role": "Product Analyst",
        "avatar": {
          "src": "https://images.unsplash.com/photo-1494790108377-be9c29b29330?auto=format&fit=crop&crop=faces&w=96&h=96&q=80",
          "alt": "Portrait of Sofia Lindqvist"
        }
      },
      "date": "Aug 20, 2026",
      "dateTime": "2026-08-20",
      "readTime": "5 min read"
    }
  ]
}