← All articles
API

When Off-the-Shelf Connectors Stop Being Enough

Most integrations should start with a prebuilt connector. Someone finds an app in the marketplace, pays forty dollars a month, and orders turn into invoices. That is the right call — if a forty-dollar app solves your problem, do not hire engineers.

Then the business changes and the connector does not. You add a sales channel. Deposits under 500 dollars need their own account. A customer wants one invoice a month instead of forty. The connector has a settings page, and the setting you need is not on it.

The three walls connectors hit

Always the same three. Mapping: your source system has fields the connector refuses to look at, so tax, discounts, and shipping collapse into one line. Timing: it syncs nightly, and you need the invoice before fulfillment fires. Conditional logic: any rule starting with "except when" is a rule no settings page will hold.

You can paper over one of these with a person and a spreadsheet. Two, and the person becomes a full-time job. Three, and the connector is generating work, not removing it.

If your integration needs a human to check its output every morning, you do not have an integration. You have slower data entry.

Webhooks beat polling, mostly

QuickBooks POSTs to your endpoint when an entity changes — invoices, payments, customers, vendors. The event carries an ID and an operation, not the record, so you still call the API for current state. That indirection is a feature: you read the truth, not a stale payload.

What webhooks will not do is guarantee delivery you can bet a ledger on. Endpoints go down. Retries expire. Pair them with a reconciliation sweep over the last few hours of changes, so a dropped event costs minutes of lag, not a month.

The parts nobody warns you about

  • Refresh tokens roll on every use and expire after 100 days of silence. Store the new one each time or you re-authorize at 2am.
  • Throttling sits near 500 requests per minute per company file. Batch endpoints exist for a reason.
  • Minor versions change field behavior underneath you. Pin one explicitly.
  • Sandbox differs from production on tax and payments. Test money paths in a real file.

Build the boring layer

Custom integrations that survive share a shape: an idempotency key on every write, a durable queue between event and API call, logs keyed to the source record, a dead-letter list a human can read. Two weeks of unglamorous work, and the difference between an integration you forget and one you babysit.

Buy the connector until it lies to you. Then build the thin custom layer and stop arguing with a settings page.

Outgrown your marketplace app? We build the layer underneath — see Bank & App Connections and Workflow Automation.

When Not to Automate a QuickBooks WorkflowStrategy

When Not to Automate a QuickBooks Workflow

Run a Manual Data Entry Audit Before You Automate AnythingStrategy

Run a Manual Data Entry Audit Before You Automate Anything

Bank Rules That Actually Work (And the Ones That Backfire)Automation

Bank Rules That Actually Work (And the Ones That Backfire)