jeffersongoncalves / laravel-zapier
Zapier integration for Laravel: manage Zaps, tasks, profile and trigger Zapier webhooks.
Package info
github.com/jeffersongoncalves/laravel-zapier
pkg:composer/jeffersongoncalves/laravel-zapier
Fund package maintenance!
Requires
- php: ^8.2
- illuminate/contracts: ^12.0|^13.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.21
- orchestra/testbench: ^10.0|^11.0
- pestphp/pest: ^3.0|^4.0
- pestphp/pest-plugin-laravel: ^3.0|^4.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Laravel Zapier
Zapier integration for Laravel. Push payloads to Zapier catch hooks and drive the Zapier REST API — list Zaps, turn them on or off, read task history and the account profile — through a single facade.
Features
- 🪝 Send data to Zapier catch hooks by URL or by a name declared in config
- ⚡ Manage Zaps: list, inspect, turn on, turn off
- 📜 Read the task history of a Zap
- 👤 Read the authenticated Zapier profile
- 🧪 Built on Laravel's HTTP client, so
Http::fake()works in your tests
Installation
You can install the package via composer:
composer require jeffersongoncalves/laravel-zapier
Optionally publish the config file:
php artisan vendor:publish --tag=laravel-zapier-config
Add your credentials to .env:
ZAPIER_API_KEY=your-zapier-api-key
The API key is only needed for the REST API calls. Sending data to a catch hook works without it.
Usage
Sending data to a catch hook
Create a "Webhooks by Zapier → Catch Hook" trigger in Zapier and send it anything:
use JeffersonGoncalves\Zapier\Facades\Zapier; Zapier::send('https://hooks.zapier.com/hooks/catch/123456/abcdef', [ 'name' => 'Ada Lovelace', 'email' => 'ada@example.com', ]);
Prefer naming your hooks in config/zapier.php so URLs stay out of your code:
// config/zapier.php 'hooks' => [ 'new-lead' => env('ZAPIER_HOOK_NEW_LEAD'), ],
Zapier::send('new-lead', ['email' => 'ada@example.com']);
Fire and forget from a queue when the request should not block a web response:
dispatch(fn () => Zapier::send('new-lead', ['email' => $user->email]));
Managing Zaps
Zapier::zaps(); // list every Zap Zapier::zap('123456'); // a single Zap Zapier::enableZap('123456'); // turn it on Zapier::disableZap('123456');// turn it off Zapier::tasks('123456'); // task history for a Zap Zapier::profile(); // the authenticated account
Dependency injection
The facade is optional — the client is registered as a singleton:
use JeffersonGoncalves\Zapier\Zapier; public function __construct(protected Zapier $zapier) {}
Testing your own code
Because the package uses Laravel's HTTP client, fake it as usual:
use Illuminate\Support\Facades\Http; Http::fake(['hooks.zapier.com/*' => Http::response(['status' => 'success'])]);
Configuration
| Key | Env | Default | Description |
|---|---|---|---|
api_key |
ZAPIER_API_KEY |
null |
Zapier personal API key, required for REST API calls |
base_url |
ZAPIER_BASE_URL |
https://api.zapier.com/v1 |
Zapier REST API base URL |
timeout |
ZAPIER_TIMEOUT |
10 |
HTTP timeout in seconds |
hooks |
— | [] |
Named catch hook URLs |
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email the author instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
