Batch Operations
Batch methods operate on up to 100 items per request. When you pass more than 100 items, the package automatically chunks them into multiple requests and merges the results.
WARNING
Batch operations do not fire model events (Creating, Created, etc.). This is by design to avoid excessive event dispatching when processing large datasets.
Batch Create
php
use Rollogi\LaravelHubspot\Crm\Contact;
$contacts = Contact::createMany([
['firstname' => 'John', 'email' => 'john@example.com'],
['firstname' => 'Jane', 'email' => 'jane@example.com'],
]);
// Returns a Collection of hydrated Contact models
$contacts->each(fn (Contact $contact) => echo $contact->id);Batch Update
Each record must include an id key alongside the properties to update:
php
use Rollogi\LaravelHubspot\Crm\Contact;
$contacts = Contact::updateMany([
['id' => '123', 'firstname' => 'Updated John'],
['id' => '456', 'firstname' => 'Updated Jane'],
]);Batch Upsert
Create or update records based on a unique identifier property. Each record must include the idProperty field value:
php
use Rollogi\LaravelHubspot\Crm\Contact;
$contacts = Contact::upsertMany([
['email' => 'john@example.com', 'firstname' => 'John'],
['email' => 'jane@example.com', 'firstname' => 'Jane'],
], idProperty: 'email');Batch Delete
php
use Rollogi\LaravelHubspot\Crm\Contact;
Contact::deleteMany(['123', '456', '789']);Auto-Chunking
All batch methods automatically chunk inputs into groups of 100 (HubSpot's per-request limit):
php
use Rollogi\LaravelHubspot\Crm\Contact;
// 250 records → 3 API requests (100 + 100 + 50), results merged
$contacts = Contact::createMany($largeArray);