The guide
Section 01
You shipped your Laravel package, pushed it to Packagist, and waited. A few days later you check your stats. Two hundred downloads. Are you a success? A failure? Somewhere in between? The honest answer is: you probably don't know yet — and that's the problem.
Most package maintainers obsess over a single vanity metric (usually GitHub stars), declare victory or defeat based on it, and miss the signals that actually tell the real story. This guide walks you through the full picture: what to measure, where to find it, and how to interpret what you're seeing.
This guide assumes you're comfortable with PHP, Composer, and have a package already published on Packagist. No particular Laravel version is required.
Why Metrics Matter (And Why You're Probably Tracking the Wrong Ones)
Before diving into tools and dashboards, it's worth reframing what success actually means for an open source package. It's not a single number — it's a combination of signals across adoption, community health, and longevity.
The most common mistake is treating GitHub stars as the primary KPI. Stars are a measure of sentiment, not behaviour. A developer can star your repo while browsing on a Friday evening and never install it. Conversely, many production teams quietly pull your package into dozens of projects and never star a thing.
As one analysis of open source metrics puts it, every installation represents deliberate intent — and many successful projects have discovered their actual user base far exceeds their GitHub stars, because enterprises and production teams often don't star repos; they just quietly deploy them and never bother with the performative appreciation.
With that framing in mind, here are the five areas worth measuring.
1. Install Metrics: Reading Your Packagist Numbers Correctly
Packagist is your primary source of install data for PHP packages. Every time a developer runs composer require your/package, the counter ticks up — making it the closest thing to a real usage signal you have.
Where to find the data
Head to packagist.org/packages/your-vendor/your-package for a dashboard view. For raw programmatic access, you can use the stats endpoint which includes overall download stats plus the faver count (GitHub stars and Packagist.org favourites): GET https://packagist.org/packages/[vendor]/[package]/stats.json, returning total, monthly, and daily download figures.
What the numbers actually mean
Packagist download counts come with a few important caveats you should understand before drawing conclusions.
Packagist tracks downloads by hooking into fresh Composer downloads. Every time someone runs composer require a/b, the download stat goes up — but if the package is already in the Composer cache the second time the command is run, there is no download recorded. This means the true install count is likely higher than what Packagist shows.
Composer caches might become outdated, be emptied manually, or simply not work at all — and many CI/CD environments don't use caching either. Each pipeline run that doesn't cache dependencies will register a fresh download, inflating CI-driven counts.
The metrics to pay attention to are:
- Monthly installs — A better trend indicator than total. Flat or declining monthly numbers signal stagnation; growing monthly numbers signal momentum.
- Daily installs — Watch for spikes after you publish a blog post, get featured on Laravel News, or release a major version. These spikes tell you which marketing and community activities actually drive adoption.
- Total installs over time — A consistent upward slope matters more than the absolute number.
Tip: Screenshot or log your monthly install count on the first of every month. A simple spreadsheet over six months reveals your growth trajectory far better than staring at a single cumulative total.
2. GitHub Signals: The Health Dashboard You Already Have
Your GitHub repository is a goldmine of behavioural data. Dig into the Insights tab — most maintainers never open it.
Traffic
If your project is hosted on GitHub, you can view how many people land on your project and where they come from. From your project's page, click "Insights", then "Traffic". On this page you can see total page views, total unique visitors, and referring sites — telling you where visitors came from.
Referring sites are particularly valuable: they tell you whether traffic is arriving from Laravel News, Reddit, Hacker News, other packages' README files, or organic search. Each source implies a different type of audience and a different conversion intent.
Stars — in context
GitHub stars can provide a baseline measure of popularity. While they don't necessarily correlate to downloads and usage, they can tell you how many people are taking notice of your work.
The more useful question isn't "how many stars do I have?" but "what's the ratio of stars to monthly installs?" A package with 50 stars and 10,000 monthly installs is healthier than one with 2,000 stars and 200 monthly installs. A package with a high number of stars but few downloads may be a well-liked reference but not yet widely adopted. Conversely, a package with many downloads but few stars might indicate developers are using it because it serves a purpose, but it doesn't stand out in terms of community engagement.
Issues and pull requests
Community metrics worth tracking regularly include: total contributor count and number of commits per contributor, which tells you how many contributors you have and who's more or less active.
Beyond raw contributor count, pay attention to the quality of your issues. Are people asking usage questions (a sign the docs need work), reporting bugs (a sign the package is being used in real projects), or requesting features (a sign of genuine investment)? You need to measure not just how many issues you're getting, but the signal-to-noise ratio — how many represent genuine usage versus confused beginners who didn't read the README or bug reports from people who fundamentally misunderstand what your project does.
Contributors
It's never too early to think about contributors. Without other people pitching in, you risk putting yourself in an unhealthy situation where your project is popular (many people use it) but not supported (not enough maintainer time to meet demand).
Track first-time, casual, and repeat contributors separately — this helps you understand whether you're getting new contributors and whether they come back. A growing proportion of repeat contributors is one of the strongest long-term health signals a package can have.
If you want a richer view than GitHub's built-in Insights provides, OSSInsight is worth bookmarking. Point it at any public GitHub repository and it generates a comprehensive breakdown of contributor activity, PR merge times, issue response rates, star history, and geographic reach — all in a single dashboard. It's particularly useful for spotting trends that are hard to see in GitHub's own charts, like whether your contributor base is broadening or concentrating around one or two people over time.
3. Appeal: What Makes Developers Choose Your Package
Download numbers tell you how many developers arrived. Appeal is what determines whether they stayed — and whether they told others. This is the softest metric to measure but one of the most important to maintain.
Your README is your landing page
A developer evaluating your package will spend 30 seconds on your README before deciding whether to dig deeper. In that time they need to answer three questions: What does this do? How do I install it? Does it work with my version of Laravel?
A good README for a Laravel package should include:
- A one-sentence description of what the package does (not what it is)
- A quick installation block with
composer require - A compatibility table covering Laravel and PHP version support
- A minimal usage example — real code, not pseudocode
- A link to fuller documentation or a wiki
Track your GitHub repository traffic against any README improvements you make. A better README directly impacts how many visitors convert into installs.
Documentation depth
Issues are a lagging indicator of documentation quality. If you're seeing repeated questions about the same feature, that's a documentation gap — not a user competence problem. Consider tracking:
- The most common question in your issues over the last 90 days
- Whether your docs cover every public method or config option
- Whether you have a changelog that communicates breaking changes clearly
4. Community Presence: Being Findable and Talkable
A package that nobody knows about doesn't get installed, regardless of how good it is. Discoverability is an active effort, not a passive one.
Get listed where developers look
The PHP/Laravel ecosystem has a few high-traffic discovery hubs:
- Laravel News: A feature or mention here can generate thousands of installs in a week. Submit your package for coverage.
- Packagist search: Ensure your
composer.jsondescription is clear, accurate, and uses the keywords developers would search for. - Laravel X: Share release announcements; be present and helpful in discussions related to your package's problem domain.
Track referral sources
You may also want to track discoverability in specific places — for example, Google PageRank, referral traffic from your project's website, or referrals from other open source projects or websites. When another popular package or article links to yours, that referral shows up in your GitHub Traffic insights. These inbound links are compounding — they keep driving traffic long after the original post.
Enable GitHub Discussions
Enabling GitHub Discussions on your repository creates a searchable, indexed record of how people use your package. It also signals to prospective users that there's an active community around the project. Questions asked and answered in Discussions show up in Google results, extending your organic reach.
Response time on issues
How quickly you respond to new issues is a visible measure of project health. A repository where the last issue response was 14 months ago sends a clear signal to prospective users: this might be abandoned. Even a brief "thanks for the report, investigating" within a few days keeps the community engaged and the project feeling alive.
GitHub's repository Insights page shows your issue and PR response time trends. Aim to acknowledge new issues within one week, even if a full fix takes longer.
Putting It All Together: A Simple Maintainer Dashboard
You don't need elaborate tooling. A monthly review covering the following six data points will give you a clear picture of your package's health:
- Monthly Packagist installs — Is the trend up, flat, or down?
- GitHub stars this month — A secondary signal; watch it relative to installs.
- New issues opened vs closed — Are you keeping up, or building a backlog?
- New contributors this month — Any first-time contributors is a win worth noting.
- Top referring sites — What drove traffic? Double down on what's working.
- Laravel version compatibility status — Are you current? Is a new Laravel version coming?
Record these once a month in a simple text file or spreadsheet committed to your repository. Six months of data will tell you more about your package's trajectory than any single dashboard ever could.
Conclusion
Measuring the success of a Laravel package isn't about chasing a single vanity number. It's about building a composite picture from installs, community health, discoverability, and longevity signals — and checking in on that picture regularly.
The maintainers who build packages that last aren't the ones with the most stars. They're the ones who pay attention to what their users actually do, respond to the community, keep the package current with Laravel's release cycle, and continuously lower the barrier for new developers to understand and adopt their work.
Start small. Pick two or three metrics from this guide and track them this month. Then build from there. The goal isn't a perfect dashboard — it's an honest, consistent window into whether your package is actually serving the community you built it for.
End of guide · 2026
← Back to the archive