Salesforce
CRM & Sales Engagement
Opportunities and quotes stay in step, with the CRM owning the deal and CPQ owning the price.
Your sellers are not leaving Salesforce and your controller is not leaving QuickBooks. Neither should have to. Here are 15 native connectors — 8 of them writing in both directions — published with the field mapping, the auth method, the cadence, and the system of record for every entity they touch.
90 mapped fields are listed by name on this page. A logo wall tells you a partnership exists; it does not tell you whether a quote becomes an invoice.
SOC 2 Type II audit underway · PIPEDA compliant · Canadian data residency · ca-central-1 · SAML 2.0 single sign-on
Your sellers keep working the pipeline they already know. The quote is built here and the opportunity value, stage, and close date land back there without anybody re-keying a number.
The scope of work is agreed on a call, not in a form. These connectors take what was said on the call and turn it into configured line items an estimator can price.
Your controller does not change systems because you bought quoting software. Invoices, job cost, and revenue post into the ledger of record with the tax treatment already correct.
The things that decide a crew's day are not in anybody's CRM: the certification on a driver, the addressing scheme on a motor, the traffic between two sites. These are the connectors the technician feels.
6 of 15 connected in Sample: Electrical
Every connector here is first-party
Every connector here is written and maintained by Novel Systems against the vendor's published API. None is a reseller listing, a marketplace entry, or a middleware subscription resold at a markup — when a sync breaks there is no third party to escalate to. 9 of 15 are enabled in configuration on any tenant; the rest are scoped before they are switched on, and every card says which it is.
The connected states and sync times above describe a sample workspace, not a live tenant — they are illustrative, and no figure on this page is read from a running integration. The field mappings, directions of travel and auth methods behind each card are the real contract.
CRM & Sales Engagement
Opportunities and quotes stay in step, with the CRM owning the deal and CPQ owning the price.
CRM & Sales Engagement
Cadence activity and reply sentiment land on the quote, so the estimator knows the deal is warm.
CRM & Sales Engagement
Sequence replies route to the account owner with the site and trade already attached.
CRM & Sales Engagement
Buying-committee changes at your key accounts surface against the account, not in a separate tab.
Call Intelligence & Communication
Parses the scope agreed on a call into draft CPQ line items, each one linked to the sentence it came from.
Call Intelligence & Communication
Inbound service calls open against the right site, and technician ETA texts go out on your own number.
Call Intelligence & Communication
Approvals and dispatch escalations arrive as adaptive cards that can be actioned without leaving Teams.
ERP & Financial Operations
Completed work becomes an invoice with HST already mapped to the right tax code and account.
ERP & Financial Operations
The same invoice posting for Enterprise and Premier Contractor Edition, over the Web Connector.
ERP & Financial Operations
Job cost actuals, committed cost, and WIP post against the real job and cost code structure.
ERP & Financial Operations
Multi-subsidiary revenue recognition, projects, and inventory across entities and currencies.
ERP & Financial Operations
An approved quote becomes a finalised Stripe invoice, and — on request — a hosted card page carrying the same integers.
Field Systems & Routing
Checks every specified driver and controller against the certification the spec asked for, before the quote goes out.
Field Systems & Routing
Motor inventory, channel plan, and position — with RTS honestly marked as having no feedback.
Field Systems & Routing
Swaps the routing model's estimated drive time for observed traffic, and leaves the stop overhead alone.
Everything above describes what a connector does. It does not tell you whether pressing Connect on this deployment reaches a consent screen or reaches nothing — and those are different questions with different answers. The three system-of-record connectors report their own state through a public endpoint, and the panel below is that endpoint’s answer, read when this page was last built rather than written into it.
3 of 15 connectors answer here — the ones that hold the ledger, the opportunity and the payment. The rest are implementation-led and start with a scoping call either way.
Stripe runs on our account and is live for every tenant.
QuickBooks Online is built and not yet connectable: this deployment holds no QuickBooks Online application credentials, so there is no consent screen to send you to.
Salesforce is built and not yet connectable: this deployment holds no Salesforce application credentials, so there is no consent screen to send you to.
Derived from the adapters themselves, not from a table someone maintains. The endpoint is GET /api/connectors, it needs no key, and it is documented in the published OpenAPI document. It reports no customer data and does not name the environment variables behind a gap; those stay behind an admin token, where they belong. If a connector says it is not connectable here yet, that is us saying so on the page that sells it.
Everything above is a description. A field-mapping table and a green badge are things you have to take our word for, and an integrations page is exactly where a buyer has learned not to. So this one does the thing: it creates a Checkout Session in our Stripe test account, against a quote it approves in our sandbox tenant, and prints the object it got back.
The objects this adapter constructs, listed on its card above and not retyped here: Customer, InvoiceItem, Invoice, Checkout Session, PaymentIntent. Approval is the event that finalises the invoice; the hosted page is a second way to pay the same quote, not a different one.
All of it also stands alone at the billing sandbox — same invoice, same button, same test card, without the rest of the catalogue in front of it.
No answer arrived from the sandbox API when this page was generated.
Billing sandbox — Stripe test mode
Pressing that button approves a quote in our sandbox tenant, which is the event that makes the Stripe adapter find or create a customer, write invoice items, and finalise an invoice. It then asks the API for a hosted payment page against the same quote. Nothing runs until you press it, because all of that leaves objects behind in a real Stripe account.
Stripe mode
Test mode. Every object this button creates carries a cs_test_ or in_ id in our Stripe test account, and the mode printed after a run is read off the object itself rather than off a sentence here.
Test card
4242 4242 4242 4242
Stripe’s published test card. Any future expiry, any CVC, any postal code. No money moves — the charge exists only in our test account.
Nothing has been created yet. The panel fills in with the session id, the amount, the expiry, the payment link, and the finalised invoice — its number, its line items, its HST line and its total — once you run it.
Plan prices, included allowances and the overage rates quoted above are published on the pricing page, which is the same module this section reads them from.
The call goes to this site’s own route, which holds one sandbox credential server-side; your browser never sees a key and is never asked for one. The endpoint underneath is POST /api/v1/quotes/{id}/checkout-session for the payment page and GET /api/v1/quotes/{id}/invoice for the invoice, both documented in the published API reference alongside the webhook events that close the loop. What is not built, said here rather than found later: subscriptions, payouts and refunds. No code calls those APIs.
On a commercial job the scope is settled verbally — a walkthrough, a site call, fifteen minutes with a facilities manager — and then somebody retypes it from memory two days later. That gap is where margin dies. The Avoma connector runs the transcript through the same catalogue the CPQ engine prices from and proposes draft line items with quantities, dimensions, and product families already resolved.
Every derived line carries a citation: the transcript offset and the sentence that produced it. Nothing auto-prices and nothing auto-sends — a draft line is proposed, never committed. That is the difference between an assistant and a liability.
Integration is where a platform quietly becomes a risk: a token with too much scope, a write with no owner, a partial sync nobody noticed. These are the answers, and they are the same on every connector in the catalogue.
Entity mapping is modelled during implementation by Novel Systems, against your own chart of accounts, cost codes, and price book. It is the part of onboarding that takes the longest and the part that makes every figure above mean something.
Every connector authenticates with the narrowest grant that works — 6 distinct auth methods across the catalogue, each scoped to the object types listed on its card. A token that can do everything is a token that eventually does.
Bidirectional sync without a declared owner is two systems taking turns overwriting each other, and the customer finds out which one won at month end. Each connector names who breaks the tie, per entity, and the drawer shows it before you connect.
QuickBooks Desktop polls on a 30-minute Web Connector interval and Sage 300 CRE batches hourly. Those are stated here rather than discovered in week three, because a customer who plans around a real interval is not disappointed by it.
Writes are idempotent on an external id or event id, so a replayed webhook updates one record instead of creating a second. Failures raise an exception rather than posting a zero — a silent partial sync is the expensive kind.
Tell us which CRM, which ledger, which phone system, and which control platform your crews commission, and we will walk the field mapping with you against your own objects before anything is signed. If a connector here does not carry a field you depend on, that is a better thing to find out now.
Bidirectional ERP sync is a Growth Contractor and Enterprise Fleet capability; standard events and webhooks are on every tier. The comparison matrix on /pricing states which is which.