PHPackages                             burnthebook/craft-commerce-hubspot-integration - 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. [API Development](/categories/api)
4. /
5. burnthebook/craft-commerce-hubspot-integration

ActiveCraft-plugin[API Development](/categories/api)

burnthebook/craft-commerce-hubspot-integration
==============================================

Integrates Craft Commerce with Hubspot

0.0.5(1mo ago)011↓100%mitPHPPHP &gt;=8.2

Since Mar 13Pushed 1mo agoCompare

[ Source](https://github.com/Burnthebook/craft-commerce-hubspot-integration)[ Packagist](https://packagist.org/packages/burnthebook/craft-commerce-hubspot-integration)[ RSS](/packages/burnthebook-craft-commerce-hubspot-integration/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (5)Versions (6)Used By (0)

Craft Commerce Hubspot Integration
==================================

[](#craft-commerce-hubspot-integration)

Integrates Craft Commerce with Hubspot.

Warning

This plugin is built for burnthebook internal use currently. Not a lot is generally configurable, and it is specific to our clients workflows. Eventually we would like to make this generic enough that anyone could use it, hence it's existence as a public repository. You can also use the code as a reference to create your own.

Requirements
------------

[](#requirements)

- Craft CMS 5.0.0+
- PHP 8.3+

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

[](#installation)

```
# Go to your Craft project
cd /path/to/project

# Install the plugin
composer require burnthebook/craft-commerce-hubspot-integration

# Enable the plugin
php craft plugin/install craft-commerce-hubspot-integration
```

Setup
-----

[](#setup)

Go to Admin -&gt; Settings -&gt; Craft Commerce Hubspot Integration, configure your Hubspot API Base URL (default ) and HubSpot Private App Token (It is recommended to use an .env variable for this).

Order Sync Lifecycle
--------------------

[](#order-sync-lifecycle)

When an order completes, sync is queued and executed in staged jobs. The flow below references the concrete classes in this plugin.

### Runtime wiring

[](#runtime-wiring)

- Plugin bootstrap: `src/CommerceHubspotIntegration.php`
- Event attachment: `CommerceHubspotIntegration::attachEventHandlers()`
- Queue entrypoint: `src/jobs/HubspotOrderSyncJob.php`
- Orchestration service: `src/services/HubspotApiService.php`
- Low-level API client: `src/services/HubspotApiClient.php`
- Stage handlers:
    - `src/services/handlers/HubspotContactsCompaniesHandler.php`
    - `src/services/handlers/HubspotCourseHandler.php`
    - `src/services/handlers/HubspotOrderHandler.php`
    - `src/services/handlers/HubspotAssociationHandler.php`

### End-to-end order flow

[](#end-to-end-order-flow)

1. `craft\commerce\elements\Order::EVENT_AFTER_COMPLETE_ORDER` fires.
2. `CommerceHubspotIntegration::attachEventHandlers()` enqueues `HubspotOrderSyncJob` with `orderId`.
3. `HubspotOrderSyncJob::execute()`:
    - loads/creates `HubspotSyncRecord` (`src/records/HubspotSyncRecord.php`),
    - computes payload hash from `Order::toArray()`,
    - skips if previously `succeeded` with identical hash,
    - marks `in_progress`, then queues stage 1 (`HubspotContactsCompaniesSyncJob`).
4. `HubspotContactsCompaniesSyncJob::execute()`:
    - resolves order,
    - calls `HubspotApiService::syncOrderContactsAndCompanies()`,
    - queues stage 2 (`HubspotCoursesSyncJob`) with returned contact/company context.
5. `HubspotCoursesSyncJob::execute()`:
    - calls `HubspotApiService::syncOrderCourses()`,
    - queues stage 3 (`HubspotOrderRecordSyncJob`) with `courseMap`.
6. `HubspotOrderRecordSyncJob::execute()`:
    - calls `HubspotApiService::syncOrderRecord()`,
    - queues stage 4 (`HubspotAssociationsSyncJob`) with `hubspotOrderId`.
7. `HubspotAssociationsSyncJob::execute()`:
    - calls `HubspotApiService::syncOrderAssociations()`,
    - marks sync record `succeeded` and sets `syncedAt`.

### Failure and retry behavior

[](#failure-and-retry-behavior)

- Stage jobs extend `AbstractHubspotSyncStageJob` (`src/jobs/AbstractHubspotSyncStageJob.php`).
- On exception, `AbstractHubspotSyncStageJob::markFailed()` updates sync record status to `failed`, stores error text, and stores HubSpot correlation ID when available.
- Queue retry behavior is implemented via `RetryableJobInterface` (`canRetry()` / `getTtr()`).

### Auth and settings resolution

[](#auth-and-settings-resolution)

- Plugin settings model: `src/models/Settings.php`.
- Service components are built in `CommerceHubspotIntegration::config()`.
- Env vars are resolved via `craft\helpers\App::parseEnv(...)` before building `HubspotApiClient`.
- API client sends Bearer auth (`Authorization: Bearer `) and applies retry/backoff for `429` and `5xx` responses.

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance89

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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.

###  Release Activity

Cadence

Every ~1 days

Total

5

Last Release

55d ago

### Community

Maintainers

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

---

Top Contributors

[![MadMikeyB](https://avatars.githubusercontent.com/u/831828?v=4)](https://github.com/MadMikeyB "MadMikeyB (7 commits)")

### Embed Badge

![Health badge](/badges/burnthebook-craft-commerce-hubspot-integration/health.svg)

```
[![Health](https://phpackages.com/badges/burnthebook-craft-commerce-hubspot-integration/health.svg)](https://phpackages.com/packages/burnthebook-craft-commerce-hubspot-integration)
```

###  Alternatives

[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3731.2M42](/packages/tencentcloud-tencentcloud-sdk-php)[convertkit/convertkitapi

Kit PHP SDK for the Kit API

2167.1k1](/packages/convertkit-convertkitapi)[mapado/rest-client-sdk

Rest Client SDK for hydra API

1125.9k2](/packages/mapado-rest-client-sdk)

PHPackages © 2026

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