PHPackages                             heyjorgedev/qstash-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. heyjorgedev/qstash-php

ActiveLibrary[Queues &amp; Workers](/categories/queues)

heyjorgedev/qstash-php
======================

QStash SDK for PHP - QStash is an HTTP based messaging and scheduling solution for serverless and edge runtimes

581[3 PRs](https://github.com/heyjorgedev/qstash-php/pulls)PHPCI passing

Since Oct 13Pushed 1mo ago2 watchersCompare

[ Source](https://github.com/heyjorgedev/qstash-php)[ Packagist](https://packagist.org/packages/heyjorgedev/qstash-php)[ RSS](/packages/heyjorgedev-qstash-php/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (4)Used By (0)

> **This project is still in early stages of development.**I am still writing most of the API endpoints and the API is under constant change so I do not recommend to use it on production yet.

QStash Client SDK for PHP
=========================

[](#qstash-client-sdk-for-php)

[![Latest Version on Packagist](https://camo.githubusercontent.com/26c7172385b5cd2db7cb548ce740a8e19bc028510f23ae64be793087f566da51/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6865796a6f7267656465762f7173746173682d7068702e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/heyjorgedev/qstash-php)[![Tests](https://camo.githubusercontent.com/53f7376e67f33d08fb944372f4df8c7d5efad1f6a200ae2dfd0b08a365f21b08/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6865796a6f7267656465762f7173746173682d7068702f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/heyjorgedev/qstash-php/actions/workflows/run-tests.yml)[![Total Downloads](https://camo.githubusercontent.com/54210fb25230d8ba7f3b04a77b9bf62ce791b9cbb957b370becc20b9770d4d9a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6865796a6f7267656465762f7173746173682d7068702e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/heyjorgedev/qstash-php)

**QStash** is an HTTP based messaging and scheduling solution for serverless and edge runtimes.

How does QStash work?
---------------------

[](#how-does-qstash-work)

QStash is the message broker between your serverless apps. You send an HTTP request to QStash, that includes a destination, a payload and optional settings. We durably store your message and will deliver it to the destination API via HTTP. In case the destination is not ready to receive the message, we will retry the message later, to guarantee at-least-once delivery.

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require heyjorgedev/qstash-php
```

### Get your authorization token

[](#get-your-authorization-token)

Go to [Upstash Console](https://console.upstash.com/qstash) and copy the QSTASH\_TOKEN.

Basic Usage
-----------

[](#basic-usage)

```
use HeyJorgeDev\QStash\QStash;
use HeyJorgeDev\QStash\ValueObjects\Message;
use HeyJorgeDev\QStash\ValueObjects\Url;

$client = QStash::client('QSTASH_TOKEN');

$message = $client->publish(
    Message::to(new Url('https://my-api...'))
        ->withBody([
            'hello' => 'world',
        ])
]);

// to know if the request was successful:
echo $message->isSuccessful()

// to get the message
echo $message->getData();

// to get the message id
echo $message->getData()->id;
```

Receiver
--------

[](#receiver)

When receiving a message from QStash, you should [verify the signature](https://upstash.com/docs/qstash/howto/signature). We have a class to help you with that:

```
use HeyJorgeDev\QStash\QStash;

$receiver = QStash::receiver([
    'QSTASH_CURRENT_SIGNING_KEY',
    'QSTASH_NEXT_SIGNING_KEY',
]);

$result = $receiver->verify(
    body: $request->getBody(),
    signature: $request->getHeader('Upstash-Signature'),
    url: $request->getUri(),
);

echo $result; // true or false
```

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](https://github.com/spatie/.github/blob/main/CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Jorge Lapa](https://github.com/heyjorgedev)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance64

Regular maintenance activity

Popularity15

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity17

Early-stage or recently created project

 Bus Factor1

Top contributor holds 80.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/a76c766879cc8db6e784cde9eabd8e8c2c6d39fb99227dbfa85f2d9bd332c48d?d=identicon)[heyjorgedev](/maintainers/heyjorgedev)

---

Top Contributors

[![heyjorgedev](https://avatars.githubusercontent.com/u/2780099?v=4)](https://github.com/heyjorgedev "heyjorgedev (54 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (8 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (5 commits)")

---

Tags

phpqstashqueueschedulerupstashupstash-qstash

### Embed Badge

![Health badge](/badges/heyjorgedev-qstash-php/health.svg)

```
[![Health](https://phpackages.com/badges/heyjorgedev-qstash-php/health.svg)](https://phpackages.com/packages/heyjorgedev-qstash-php)
```

###  Alternatives

[league/geotools

Geo-related tools PHP 7.3+ library

1.4k5.3M26](/packages/league-geotools)[amphp/parser

A generator parser to make streaming parsers simple.

14952.8M16](/packages/amphp-parser)[amphp/serialization

Serialization tools for IPC and data storage in PHP.

13451.1M18](/packages/amphp-serialization)[enqueue/enqueue

Message Queue Library

19820.0M56](/packages/enqueue-enqueue)[deliciousbrains/wp-background-processing

WP Background Processing can be used to fire off non-blocking asynchronous requests or as a background processing tool, allowing you to queue tasks.

1.1k409.8k6](/packages/deliciousbrains-wp-background-processing)[react/async

Async utilities and fibers for ReactPHP

2238.8M170](/packages/react-async)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
