Skip to main content
CompanyCamContractor project software

Your ads count inspections. CompanyCam knows which jobs sold.

Google and Meta stop at the form fill, but the proof that a roof, mold job or fire-damage rebuild sold lives in CompanyCam: the Sold label your crew adds to the project, the approved proposal, the paid invoice. None of it reaches your ad accounts, so bidding chases whoever fills out a form. We tie each project back to the click or call that started it and send those money events to Google Ads and Meta from a server you own.

Free30 minutesNo obligation

CompanyCam · what breaks

What goes wrong when the job ends up in CompanyCam

  1. 01

    Google thinks every inspection request is a win

    Campaigns optimize toward the form fill and never see the Sold label your crew adds in CompanyCam, so tire kickers and out-of-area leads teach bidding the same lesson as a signed reroof. You pay for more of the wrong people.

  2. 02

    The project has an address, but no click

    CompanyCam's documented create-project fields are name, address, coordinates, geofence and a primary contact. There's no slot for a GCLID, so when a crew lead creates the project from the truck, the ad that paid for it is gone.

  3. 03

    Approved proposals and paid invoices stay inside CompanyCam

    Proposal and invoice statuses aren't among CompanyCam's documented webhook events, and its public API lists no proposal or invoice endpoints, so job value never reaches the campaign that earned it. You can't tell which ads pay for themselves.

  4. 04

    One homeowner, two projects

    CompanyCam's HighLevel guide warns that repeated Create Project runs make duplicates. Count them naively and one job becomes two sales.

CompanyCam · the fix

What changes after the fix — CompanyCam

  • Bidding learns from sold jobs

    Google Ads and Meta hear when a project gets your Sold label, so budget drifts toward the searches and audiences that sign contracts.

  • Every project traced to its source

    Matched using the click ID saved upstream plus the homeowner's email and phone on the project's primary contact.

  • Real job value on the conversion

    The approved proposal or paid invoice amount rides on the conversion, so a full tear-off and a gutter repair stop counting as the same result.

CompanyCam · architecture

What CompanyCam actually lets us hook into

CompanyCam documents no direct connection to Google Ads, GA4, Google Tag Manager or the Meta Pixel. What it does document is enough to build the loop.

  1. 1

    Signed webhooks

    Events include project.created, project.label_added, project.merged, project.archived and project.deleted, signed with HMAC-SHA1 in the X-CompanyCam-Signature header. Anything but a 200 triggers retries, up to 10, and more than 25 errors disables the webhook.

  2. 2

    Core API

    Reads projects, labels and the primary contact's email and phone, and can write to the project notepad, where the originating click ID can live. Admins or Managers create tokens, on select plans.

  3. 3

    Zapier triggers and actions

    New Project and Project Labeled triggers cover simpler setups, and the Update Project Notepad action can stamp the originating click ID onto a project.

  4. 4

    CRM and estimating integrations

    CompanyCam lists HighLevel, JobNimbus, AccuLynx, Roofr, ServiceTitan and Jobber integrations, and one of them often creates the project. HighLevel's workflow actions push projects one way, into CompanyCam, so the click ID stays in HighLevel and gets matched there.

  5. 5

    Proposals and Stripe payments

    Invoices are paid through a Stripe Express account, and invoices and payments sync to QuickBooks Online. Since proposal and invoice statuses aren't webhook events and the public API has no endpoints for them, we confirm whether to read them from the QuickBooks Online sync, Stripe or CompanyCam's document events.

CompanyCam · diagnose

Where CompanyCam tracking breaks, in the order we check

Most setups fail at the handoff from lead to project, not inside CompanyCam.

  1. 01

    Find out how projects get created

    Manual projects made on site lose the ad link most often.

  2. 02

    Check that a click ID exists upstream

    Submit a test lead from an ad-tagged URL and confirm the GCLID was saved.

  3. 03

    Check the primary contact is filled in

    No email or phone means no match back to the lead.

  4. 04

    Audit label use

    If half the crew forgets the Sold label, half your sales never report.

  5. 05

    Follow the money

    Confirm where proposal totals and paid invoices can be read.

  6. 06

    Hunt duplicates

    Repeat projects at one address double count a job.

CompanyCam · prove

The QA evidence — CompanyCam

Tested on a real lead that becomes a real project, not a sample payload.

Source of truth

CompanyCam project records: projects by creation date, labels applied, proposal statuses and invoice statuses, with each project's primary contact

  • A test lead from an ad-tagged URL, click ID confirmed upstream.
  • The matching project created and its webhook received with a valid signature.
  • One Sold label producing exactly one conversion in Google Ads and Meta Events Manager.
  • Proposal or invoice value confirmed, and a refund reversing it.
  • A merged or duplicate project confirmed not to count twice.
  • Sold and paid projects reconciled one by one against each platform over a closed window.
  • Repeated 30 days later and after any CRM workflow change.

CompanyCam · free audit

What we check in the free audit

  • Find out how projects get created
  • Check that a click ID exists upstream
  • Check the primary contact is filled in
  • Audit label use
  • Follow the money
  • Hunt duplicates

Checked against

CompanyCam project records: projects by creation date, labels applied, proposal statuses and invoice statuses, with each project's primary contact

Get my free conversion tracking audit

Free30 minutesNo obligation

CompanyCam · when not to buy

When you don't need this on CompanyCam

Plenty of contractors use CompanyCam only for photos, and that's fine.

  • If JobNimbus or AccuLynx already sends sold jobs to Google Ads, we'd wire the CRM and leave CompanyCam as your photo log.
  • If most of your work comes from door knocking, insurance adjusters or referrals rather than paid ads, there's little for this to attribute.
  • If your team never labels projects, sends proposals or invoices in CompanyCam, the sale isn't recorded there to begin with.
  • If you close a handful of jobs a month, a spreadsheet upload may be enough, and we'll say so.

CompanyCam · what we deliver

The event map on CompanyCam

  • Lead captured upstream

    Form or tracked call, with GCLID, fbclid and UTMs stored before CompanyCam sees the homeowner.

  • Project created

    The project.created webhook: an inspection on the books, sent as a lead-stage signal.

  • Qualified or Sold label

    The project.label_added webhook, filtered to your signed-job label. The primary conversion for bidding.

  • Proposal approved

    Sent with the proposal total once its status is Approved. Drafts, Sent, Declined and Voided proposals never fire.

  • Invoice paid

    Fired on Paid, not Payment Processing, so failed ACH payments don't count. Refunds reverse it.

  • Excluded on purpose

    Merged, archived and deleted projects, warranty callbacks and re-inspections.

Written guarantee

95%+ tracking accuracy

Measured against CompanyCam project records: projects by creation date, labels applied, proposal statuses and invoice statuses, with each project's primary contact. Miss it and we keep working at no cost.

Get my free conversion tracking audit

From $400 · See packages

FAQ

CompanyCam questions, answered

Not directly. CompanyCam documents no Google Ads, GA4, GTM or Meta connection, so project events leave through its webhooks, API or Zapier and reach the ad platforms from a server.

Free · 30 min

Find out which ads actually sell jobs

Free30 minutesNo obligation