HubSpot + ServiceChannel integration
ServiceChannel holds the work order your customer raised and the invoice that closes it, which is why the contractor never owns the record.
- Into HubSpot
- Two way
- Out of HubSpot
Is there a native ServiceChannel + HubSpot integration?
No. The HubSpot App Marketplace holds no ServiceChannel app as of September 2026, only fuzzy matches on the word. Because the work order is raised on the customer's platform rather than yours, the honest route is a service that subscribes to ServiceChannel webhooks and keys every record on the work order id. A contractor holding more than one provider account needs that service to be tenant aware from the first line of code.
- Recommended route
- Custom middleware
- Build effort
- 70 to 150 hours
- In the HubSpot App Marketplace?
- No listed app
- Typical elapsed time
- 4 to 8 weeks
Marketplace checked September 2026.
Why teams connect ServiceChannel to HubSpot
A facilities maintenance contractor does not choose ServiceChannel. Its customers do. A national retailer or grocer runs its estate on the platform, raises every repair there, and expects the provider to accept, check in, propose and invoice inside it. The contractor’s own operations live somewhere else entirely, which for many is an ageing in-house database that only two people understand.
That split produces a specific and expensive problem: nobody can see all the work in one queue. Work from one customer arrives by webhook into a platform account, work from another arrives by email, and work won directly arrives in a spreadsheet. Dispatchers reconcile by hand. A project manager watches a periodic work order in one tab and a subcontractor’s paperwork in another. Nothing in the business can answer how many open jobs exist tonight without someone counting.
The second reason is harder to see and costlier to ignore. A contractor that grows by winning a second platform-holding customer, or by acquiring a firm with its own provider account, ends up with two tenants on the same platform and no single view across them. Building the CRM as the one shared work queue, partitioned by brand, is the decision that makes that growth survivable. It has to be made before the first integration, because retrofitting tenant scope into a service that assumed one account is close to a rewrite.
What syncs
Seven objects cover the shape. Work orders become deals, because a work order has a value, a status that progresses and an outcome. Locations become a custom site object rather than companies, since one customer can carry thousands of stores and a company record per store would drown the portal. Subscribers and providers both become companies, separated by a record type property.
Everything keys on the identifier ServiceChannel already assigned. The work order id is the anchor, and proposals, invoices and check-ins associate back to it. That matters more here than in most integrations because the contractor never creates the work order: the customer does, the id exists before your service hears about it, and any attempt to match on a description or an address will eventually merge two stores in the same plaza.
Invoices run the other way. The provider raises the invoice in HubSpot at a defined stage and the service posts it to ServiceChannel, one per work order, at or under the not-to-exceed amount agreed on the job.
| | | Direction | Match key | Notes |
|---|---|---|---|---|
| Work order | Deal | Two way | ServiceChannel work order id in a custom HubSpot property | The customer creates it, so the id exists before your service sees it. |
| Location | Custom object | Into HubSpot | Location id, associated to the subscriber | A site object, because one national customer carries thousands of stores. |
| Subscriber | Company | Into HubSpot | Subscriber id | The customer whose platform issues the work. |
| Provider | Company | Into HubSpot | Provider id, with a record type property separating it from a subscriber | |
| Proposal | Custom object | Two way | Proposal id, associated to the work order | |
| Invoice | Custom object | Out of HubSpot | Work order id plus invoice number | One invoice per work order, at or under the not-to-exceed amount. |
| Check-in and check-out | Engagement | Into HubSpot | Work order id plus the technician timestamp |
Architecture
The shape is a webhook queue with a polling backstop. ServiceChannel posts the event, the service verifies the Sign-Data header as an HMAC computed with SHA256 over the payload, returns a 2xx inside the five second budget and enqueues the work. Only then does a consumer fetch the full record, map it and upsert into HubSpot on the work order id.
Tenant scope is part of the envelope, not an afterthought. Every queued item carries the account it came from, and every write is checked against an allowlist of portal and tenant pairs that fails closed. Watermarks sit beside the link store so a sweep can re-read a window of work orders when an event never arrived, and every write is recorded in an append-only ledger. That ledger is what makes the invoice rule enforceable: an invoice already posted is never posted twice, however many times the event replays.
What the API allows
- API style
- REST
- Authentication
- OAuth 2.0
- Webhooks
- Yes
- Changed-since filter
- Unknown
- Sandbox
- Yes
- Rate limit
- 300 requests a minute per client id and 600 a minute per subscriber or provider in production, and 40 and 80 in the sandbox
Developer documentation developer.servicechannel.com
Three ways to connect
The deciding question is how many things must stay true at once, not how much volume there is. A work order has a status the customer owns, a not-to-exceed amount that caps the invoice, a proposal that may or may not be approved, and check-in records that prove a technician attended. Those constraints belong somewhere that can hold state.
A per-task automation platform holds none of it. It is a good way to prove the connection in a week, and a poor place to run a business that invoices from it. The second question is tenants: one provider account can be automated, two cannot, because tokens scope to the authenticating user and something has to decide which credential answers for which brand.
-
Custom middleware
RecommendedEvents, a queue and a link store are the only shape that keeps a work order, its proposal and its invoice consistent across two tenants while respecting a rate limit counted per client id.
-
Automation platform
PossibleA per-task platform can move a new work order into HubSpot and will do that well. It has nowhere to hold tenant scope, nowhere to enforce the not-to-exceed rule and no replay when an event is missed.
-
Native app
AvoidNothing to install. The marketplace returns only fuzzy matches, so there is no listed ServiceChannel app to weigh against a build.
What breaks and how we prevent it
Events missed after three retries
Missed events are the quietest failure. Delivery stops after three retries at five minute intervals, and a subscription that accumulates a thousand consecutive failures is disabled outright. An endpoint that answers fast and defers its work is the prevention, and a scheduled sweep that re-reads recent work orders is the safety net for what still slips through.
Replica lag after a write
Read-after-write confuses new integrations badly. Reads come from replicas and writes go to the primary, with replication taking up to thirty seconds. A service that creates an invoice and immediately reads it back will see a 404 and conclude the write failed. The fix is to trust the acknowledgement and confirm with a later read.
Ten minute access tokens
Access tokens last ten minutes, which is short enough that any component holding one across a long batch will fail midway. Refresh ahead of expiry rather than on a 401, and keep refresh tokens, valid for thirty days, somewhere encrypted.
Limits per client id and company
Limits are counted per client id and per company, so a backfill for one customer can exhaust the budget that the live event stream needs. We give backfills a smaller share of the budget than real-time work and let them take longer.
Our approach
- Scope. We list the tenants, the customers behind them and the events each one actually emits, because that catalogue varies by account and drives everything else.
- Architect. The work order as the anchor object, the site model, the invoice rule and the tenant allowlist, written down before any code.
- Build. Signature verification, queue, ledger and mapping against the sandbox, which refreshes weekly and is shared, so tests assume nothing persists.
- Validate. A scripted run through create, accept, propose, check in and invoice, with counts reconciled against the platform.
- Operate. Watch the dead letter queue, replay what failed, and re-verify the event catalogue whenever a new customer joins.
Common questions
Is there a ServiceChannel app in the HubSpot App Marketplace?
No. The marketplace returns only fuzzy matches, apps whose descriptions happen to mention the words rather than apps built for ServiceChannel. Every route into HubSpot is therefore a service you commission or a per-task automation platform you configure, and both leave the work order on the customer's platform.
How does a ServiceChannel webhook prove it came from ServiceChannel?
Each callback carries a Sign-Data header holding a base-64 encoded string. You recompute it as an HMAC over the payload using the SHA256 algorithm and your signing key, which the API returns from its signing key endpoint and which stays the same until you regenerate it. Compare the two before you trust a single field.
How long does a ServiceChannel endpoint have to respond?
Five seconds, and the response has to be a 2xx. Miss it and ServiceChannel retries the event three times at five minute intervals, then deletes the event data. A thousand consecutive failures disables the webhook for twelve hours, and it stays disabled after that until someone reviews the endpoint and turns it back on.
How many ServiceChannel webhooks can one integration register?
Up to twenty webhooks, each holding up to twenty subscriptions, so four hundred subscriptions in total. Creating them needs an account with the Super Admin secondary role on the subscriber side, or Provider Automation Admin access on the provider side, which is worth arranging in week one rather than week four.
What are the ServiceChannel API rate limits?
Production allows 300 requests a minute for an application, counted per client id, and 600 a minute for a company, counted per subscriber or provider id. The sandbox allows 40 and 80. Exceeding either returns a 429 with a Retry-After header in HTTP date format telling you when the window ends.
Can one app serve two ServiceChannel provider accounts?
The token scopes to the account of the user who authenticates, so one registered application with a user per tenant covers reads across both. Whether webhook subscriptions scope the same way is something to verify against your own tenants before you design around it, because the answer changes the number of registered apps you need.
Why does a record created in ServiceChannel sometimes read back as missing?
Because reads come from replica servers while writes go to the primary, and replication can take up to thirty seconds depending on load. A create followed immediately by a read can return a 404. Treat the write acknowledgement as the truth, and confirm by reading later rather than retrying the create.
What does a ServiceChannel to HubSpot build take in hours?
Work orders, locations, proposals and invoices across two tenants, with signature verification, a queue, watermarks and a replay endpoint, come to ten to twenty hours of discovery and seventy to a hundred and fifty hours of build. Confirming which events your tenants actually emit is the discovery task that moves the estimate.
Also in Field service and facilities
Related reading
Partnerships and accreditations
HubSpot accreditations
Industry specializations
Partnerships
Scope a ServiceChannel integration
Send the systems, the direction and the record volume. We reply with a scope and an effort band within one business day.
Thanks, we will reply within one business day
Prash or Sean reads every one of these and comes back with a scope, or with the one question we need answered first.
Where these facts come from
- Authentication and Authorization - ServiceChannel developer.servicechannel.com
- Throttling - ServiceChannel developer.servicechannel.com
- Environments - ServiceChannel developer.servicechannel.com
- About Webhooks - ServiceChannel developer.servicechannel.com
- Receive Events and Respond - ServiceChannel developer.servicechannel.com
- Guides - ServiceChannel developer.servicechannel.com