Sign In
← Back to Docs
Integrations · Setup

Integrations Guide

Connect your CRM, ad platforms, call tracking, and ecommerce tools to PPC TNT. Once connected, all your revenue and spend data flows into the dashboard automatically — no manual data entry, no spreadsheets.

How integrations work

Each integration uses an API key or OAuth token to securely connect PPC TNT to your external tools. Once connected, clicking Sync Now on the dashboard triggers a data pull from all active integrations, aggregating the results into monthly rows on your dashboard.

📋
CRM
Call counts, job revenue, closed customers
📣
Ad Platform
Daily ad spend across Google, Meta, Rumble
📞
Call Tracking
Inbound call volumes from CallRail
🛍
Ecommerce
Shopify orders and revenue

Minimum for a working dashboard: Connect one CRM or revenue source (for call and revenue data) and one ad platform (for spend data). With just these two, you will have all the columns needed to see your P&L and closing rate.

CRM Integrations

Housecall Pro
Completed jobs (mapped to 'Sold'), job revenue, customer records
CRM

Syncs completed jobs and revenue. Best for plumbers, HVAC, electricians, and other field service businesses already using Housecall Pro as their primary job management tool.

Required Fields
API KeyGo to Housecall Pro → Settings → Integrations → API Key. Copy the key shown. If you don't see it, you may need to enable API access under your plan.
ServiceTitan
Completed/invoiced jobs, revenue, customer phone numbers
CRM

Enterprise-grade sync for larger service businesses. Pulls jobs, revenue, and customer data from your ServiceTitan account.

Required Fields
Client IDServiceTitan Developer Portal → My Apps → your app → Client ID.
Client SecretSame location as Client ID. Keep this private — treat it like a password.
App KeyServiceTitan Developer Portal → My Apps → your app → Application Key.
Tenant IDYour ServiceTitan account ID. Visible in the URL when logged in: app.servicetitan.com/tenant/XXXXXXX
Jobber
Completed jobs, invoice revenue
CRM

Syncs jobs and revenue from Jobber. Good for smaller field service businesses that use Jobber for scheduling and invoicing.

Required Fields
Access TokenJobber → Settings → API → Create an API key. Copy the token immediately — Jobber only shows it once.
QuickBooks
Paid invoice amounts, customer records
CRM

Pulls paid invoices directly from QuickBooks Online. Useful if your field service software doesn't have a direct integration but you invoice through QuickBooks.

Required Fields
Client IDIntuit Developer Portal → My Apps → your app → Keys and credentials → Production keys → Client ID.
Client SecretSame page as Client ID. Copy the Client Secret. Keep it private.
Refresh TokenUse the Intuit OAuth 2.0 Playground at developer.intuit.com to generate a refresh token for your QuickBooks company.
Company ID (Realm ID)Your QuickBooks Company ID, visible in the URL when logged in: qbo.intuit.com/app/homepage?realmId=XXXXXXXXX
Stripe
Successful payment amounts, customer phone numbers
CRM

Syncs payments and customer phone numbers from Stripe. Ideal if you process payments through Stripe directly (common for service businesses with card-on-file setups).

Required Fields
Secret KeyStripe Dashboard → Developers → API keys → copy the Secret key (starts with sk_live_). Never share this publicly — it has full account access.
HubSpot
Closed-won deal values, contact phone numbers
CRM

Syncs closed-won deals and contact phone numbers. Best for businesses that use HubSpot as a CRM for tracking leads through a sales pipeline.

Required Fields
Private App TokenHubSpot → Settings → Integrations → Private Apps → Create a private app. Enable scopes: crm.objects.deals.read and crm.objects.contacts.read. Copy the access token shown after creation.
GoHighLevel
Won opportunities, contact phone numbers
CRM

Syncs won opportunities and contact phone numbers from GoHighLevel. Common for agencies managing client accounts inside GoHighLevel sub-locations.

Required Fields
API KeyGoHighLevel → Settings → Integrations → API Key. Important: make sure you are inside the sub-account location, not the agency level, when copying this key.
Location IDGoHighLevel → Settings → Business Profile. The Location ID is at the bottom of the page, or visible in the URL as ?location=XXXXXXXXX

Ad Platform Integrations

Google Ads
Daily spend by account
Ad Platform

Pulls daily ad spend automatically via the Google Ads API. This is the most important integration for local service businesses — without it, the spend column of your dashboard will be empty and P&L cannot be calculated.

Required Fields
OAuth Client IDGoogle Cloud Console → APIs & Services → Credentials → Create OAuth 2.0 Client ID. Copy the Client ID.
OAuth Client SecretSame page as Client ID — copy the Client Secret.
Refresh TokenUse the OAuth Playground at developers.google.com/oauthplayground. Select the scope https://www.googleapis.com/auth/adwords and complete the OAuth flow to get a refresh token.
Developer TokenGoogle Ads → Tools → API Center. Your developer token is shown there. Requires applying for API access in your Google Ads account.
Customer IDYour 10-digit Google Ads account ID shown in the top-right of the Google Ads interface (e.g. 123-456-7890). Enter without dashes.
Meta Ads
Daily spend by ad account
Ad Platform

Pulls daily Facebook and Instagram ad spend. Connect this if you run Meta campaigns alongside Google Ads so all your spend is tracked in one place.

Required Fields
Access TokenMeta Business Suite → Settings → Business Settings → System Users → Add System User → Generate Token. Select ads_read permission.
Ad Account IDMeta Ads Manager → account dropdown top-left. Your account ID is the number shown. Enter without the 'act_' prefix.
Rumble Ads
Daily spend
Ad Platform

Pulls daily Rumble advertising spend. Connect this if you run video or display campaigns on the Rumble platform.

Required Fields
API KeyRumble Ads → your profile → API Tokens (ads.rumble.com/account/api/tokens) → Generate a new token. Copy it immediately — it only displays once.

Call Tracking Integrations

CallRail
Inbound call counts, call recordings, caller phone numbers
Call Tracking

Syncs inbound call data so the dashboard can show Total Calls per month. This is the primary source for call volume if your CRM doesn't track raw inbound call counts accurately.

Required Fields
API KeyCallRail → Settings (gear icon) → API Access → Create API Key. Name it anything and copy the key.
Account IDCallRail → Settings → API Access. Your Account ID is shown at the top of that page, or visible in the URL.
Company ID (optional)Agency only — leave blank for a single-client CallRail account. For agencies with multiple clients in one account: CallRail → Settings → Companies → click the company → copy the ID from the URL.

Ecommerce Integrations

Shopify
Order counts, gross revenue, order dates
Ecommerce

Syncs orders and revenue from your Shopify store. Enables Ecommerce Mode on the dashboard — showing Orders, Revenue, Ad Spend, P&L, and ROAS instead of the service business call funnel.

Required Fields
Shop DomainYour Shopify store URL in the format mystore.myshopify.com — do not include https://
Admin API Access TokenShopify Partners Dashboard: partners.shopify.com/dev-dashboard → your app → Configuration → enable read_orders scope → Save. Then Test → Select store → Install. Copy the access token immediately.

Security: how credentials are stored

All API keys and tokens are encrypted at rest before being stored. They are never displayed in plain text after you save them. The input fields use password masking so they are not visible on screen.

Google Ads API note: The Google Ads API requires applying for access at Google Ads → Tools → API Center before a developer token is issued. Basic access (sufficient for PPC TNT) is typically approved within 1–2 business days. You also need to enable the Google Ads API in your Google Cloud Console project.

Troubleshooting connections

ProblemFix
Sync shows no data after connectingRe-enter the credentials — a common cause is copying an extra space before or after the key. Save again and re-sync.
Google Ads shows zero spendVerify the Customer ID has no dashes. Confirm the Developer Token is approved (not pending). Check the refresh token hasn't expired by regenerating it.
Housecall Pro / Jobber shows no jobsMake sure jobs are marked as 'Completed' in the CRM — in-progress or cancelled jobs are not included.
Shopify sync shows no ordersConfirm the Admin API Access Token has the read_orders scope. Re-install the custom app if necessary.
GoHighLevel shows wrong dataMake sure the API Key is from the sub-account (location level), not the agency level. They look similar but pull different data.
CallRail shows zero callsVerify your Account ID is correct (not the Company ID). Check that your CallRail tracking numbers are active and receiving calls.

FAQ

What integrations does PPC TNT support?

PPC TNT supports four categories: CRM systems (Housecall Pro, ServiceTitan, Jobber, QuickBooks, Stripe, HubSpot, GoHighLevel) for call and revenue data; Ad platforms (Google Ads, Meta Ads, Rumble Ads) for spend data; Call tracking (CallRail) for inbound call attribution; and Ecommerce (Shopify) for order and revenue data.

Do I need all integrations connected?

No. You need at minimum one CRM or revenue source and one ad platform. The more integrations you connect, the more complete your dashboard data will be.

Where do I find my Housecall Pro API key?

Housecall Pro → Settings → Integrations → API Key. Copy the key shown there.

Where do I find my Google Ads customer ID?

Your Google Ads Customer ID is the 10-digit number in the top-right of your Google Ads account (format: 123-456-7890). Enter it without dashes. You also need an OAuth Client ID and Secret from Google Cloud Console, a Refresh Token from the OAuth Playground, and a Developer Token from Google Ads Tools → API Center.

Is my API key data stored securely?

Yes. All API keys and credentials are encrypted at rest using AES-256 encryption before being stored. They are never displayed in plain text after saving and are only used server-side to pull your data.

Can I connect multiple ad accounts?

Currently one ad account per platform per workspace. If you manage multiple Google Ads accounts, connect the one that contains the campaigns for this workspace. Agency users can create separate workspaces for each client, each with their own integration credentials.