QuickBooks
The QuickBooks connector imports invoice and payment data from QuickBooks Online, giving you revenue numbers to pair with your marketing and experiment data. If your business uses QuickBooks for invoicing, this is how Apex attributes revenue back to the marketing channels that generated the customer.
Authentication
QuickBooks uses OAuth 2.0 through Intuit's platform.
Click Connect on the Sensors page
Find the QuickBooks card and click Connect.
Authorize with Intuit
You'll be redirected to Intuit's authorization page. Sign in to your QuickBooks account and select the company to connect.
Verify the connection
Apex validates the connection by fetching your company info. If successful, the QuickBooks card shows a green "Connected" badge.
Info
QuickBooks automatically detects whether you're using a sandbox or production account based on your app credentials. Sandbox connections are labeled accordingly.
Data Synced
Each sync fetches paid invoices from QuickBooks for the configured date range:
| Data | Description |
|---|---|
| Paid invoices | Invoices with a zero balance (fully paid), including amount and timestamp |
| Customer email | Resolved from the invoice's BillEmail field |
| Revenue total | Sum of all paid invoice amounts |
Credit memos (refunds/adjustments) are also supported and are recorded as negative revenue events when processed.
How Apex Uses This Data
- Revenue attribution — Match invoice payments to contacts via customer email. When a QuickBooks customer's billing email matches a contact captured by the tracking snippet, Apex attributes that revenue to the original marketing channel.
- LTV calculation — Aggregate payments per customer to build lifetime value metrics.
- Unit economics — Combine with Google Ads, Meta Ads, or LinkedIn Ads spend to calculate CAC, ROAS, and payback period using real invoice data.
- Funnel completion — Invoice payments serve as the revenue stage in conversion funnels.
Tip
Revenue attribution works best when your QuickBooks invoices include a billing email address. Invoices without a BillEmail are skipped during revenue matching — ensure your invoicing workflow captures the customer's email.
Configuration
| Parameter | Type | Description |
|---|---|---|
access_tokenrequired | string | OAuth access token (set automatically during the connection flow). |
realmIdrequired | string | QuickBooks company ID (captured automatically from the OAuth callback). |
sandbox | boolean | Whether this is a QuickBooks sandbox account. Detected automatically. |
Environment Variables
| Variable | Description |
|---|---|
QUICKBOOKS_CLIENT_ID | Your Intuit OAuth app's client ID |
QUICKBOOKS_CLIENT_SECRET | Your Intuit OAuth app's client secret |
Troubleshooting
| Issue | Cause | Fix |
|---|---|---|
| "Authorization failed" | OAuth credentials are invalid or expired | Disconnect and reconnect the sensor |
| No invoices returned | No fully paid invoices in the date range | Expand the sync date range or verify invoices are marked as paid in QuickBooks |
| Revenue not matching contacts | Billing emails don't match contact emails | Ensure your QuickBooks invoices use the same email addresses captured in your forms |
| Sandbox data appearing | Using sandbox credentials | Switch to production QuickBooks credentials for live data |
Next Steps
- Connect Stripe for subscription and payment data alongside invoicing
- Connect HubSpot to pair invoice revenue with CRM deal stages
- View unit economics to see CAC, LTV, and ROAS with your QuickBooks data