Your client signs the Portal.io proposal. Google and Meta never find out.
AV, security and IT integrators run ads that bring in inquiries, but the win happens later, when a homeowner picks Good, Better or Best in your Portal.io proposal, signs it and pays the deposit. Portal.io documents no web form and no place for ad tags, so Google and Meta never see that moment and keep bidding on whoever filled out a form. We tie each accepted proposal back to its click and report it at the total the client chose.
Free30 minutesNo obligation
Portal.io · what breaks
What goes wrong when you run ads into Portal.io
- 01
Google Ads only counts the form fill
The click lands on your site, but the signed proposal happens days or weeks later in Portal.io, often after a site survey. Bidding learns from inquiries that never buy, so your budget keeps chasing tire-kickers.
- 02
No way to tell which ads close jobs
A Portal People record holds names, emails, addresses and notes, with no documented lead source field. Once the inquiry is typed in, the campaign that produced it is gone, and you can't tell which spend to cut.
- 03
A doorbell swap counts the same as a whole-home system
Without the accepted total on the conversion, a small camera add-on and a full theater or alarm install look identical to Google and Meta, so they can't steer budget toward the big jobs.
- 04
Repeat clients and change orders pose as new wins
Portal's proposal status trigger fires on every proposal, including a second one for a client you already have, and change orders send status updates of their own. A catch-all Zap reports that repeat business as fresh ad revenue and flatters your return on ad spend.
Portal.io · the fix
What changes after we fix it — Portal.io
Ads optimize for signed proposals
Google and Meta get the accepted proposal and the paid deposit as conversions, so bidding favors the searches and audiences that turn into installs.
Every Portal client has a source
Each accepted proposal traces back to its campaign, keyword or ad set, so you can see which spend fills your install calendar.
Real job value, new customers only
Conversions carry the accepted total, and change orders and repeat clients are kept out of acquisition numbers.
Portal.io · architecture
What Portal.io actually lets you hook into
Portal.io documents no Google Ads, GA4, GTM or Meta Pixel connection. The hooks below are the ones in its own help center, and they're enough to run server-side tracking.
- 1
Zapier triggers (Premium plan and up)
Contact Modification, Update Proposal Status, Update Payment Status, Update Order Status and Update Change Order Status, all instant. Payloads include proposal ID, status, total, client name and email, and salesperson.
- 2
Proposal and payment notifications
Alerts when a proposal is opened, viewed or accepted and when a customer pays. Handy for testing, not as the conversion source.
- 3
Native Zoho connection (beta)
Proposals push one way to Zoho CRM Deals, with Portal statuses mapped to deal stages. If you run Zoho, the deal may be the better place to join the click.
- 4
API on the Unlimited plan
Portal lists API access for Unlimited customers and pre-approved partners. Public endpoint documentation wasn't available to us, so we confirm what it exposes before relying on it.
- 5
No tags on the proposal page
The client reviews, signs and pays inside Portal's own interface, so there's no place to add a Pixel or GA4 tag there. Everything after the inquiry has to go server-side.
Portal.io · diagnose
Where Portal.io tracking breaks, in the order we check
Most Portal.io setups lose data in the gap between your website and the moment someone types the client into People.
- 01
Does your site form keep the click ID?
We submit a test inquiry from an ad-tagged URL and look for the click ID and UTMs in what arrives.
- 02
How do clients get into People?
Typed by hand, imported once by CSV, or pulled from Zoho. A mistyped email breaks the match, so we check how often that happens.
- 03
Which status value means accepted?
Portal's help center doesn't list status names, so we read the Update Proposal Status payload on a real acceptance and filter on that exact value.
- 04
Does the total reflect the chosen option?
We accept a test proposal on a non-default tier and confirm the trigger carries that total.
- 05
Are change orders and repeat clients separated?
We check the change order trigger and the client's proposal history so second jobs don't count as new acquisitions.
Portal.io · prove
The QA evidence — Portal.io
Run on a real inquiry and a real accepted proposal in your live Portal account.
Source of truth
Portal.io accepted proposals and payment records: proposal ID, acceptance date, accepted total, client email and deposit status
- One test inquiry from an ad-tagged URL, with the click ID stored against the lead's email.
- The same client created in Portal People and matched to that click by email.
- One accepted proposal producing exactly one conversion each in Google Ads and Meta, sharing an event ID, valued at the chosen options' total.
- A deposit payment arriving as its own event after the processor confirms it.
- A change order confirmed absent from acquisition conversions.
- Accepted proposals reconciled against each ad platform over a closed window, then again 30 days later.
Portal.io · free audit
What we check in the free audit
- Does your site form keep the click ID?
- How do clients get into People?
- Which status value means accepted?
- Does the total reflect the chosen option?
- Are change orders and repeat clients separated?
Checked against
Portal.io accepted proposals and payment records: proposal ID, acceptance date, accepted total, client email and deposit status
Free30 minutesNo obligation
Portal.io · when not to buy
When you don't need this on Portal.io
Plenty of integrators running Portal.io are better off leaving their tracking alone.
- If your work comes from builders, designers and referrals and you don't run paid ads, there's no click to attribute.
- If you send a handful of proposals a month, a monthly offline upload of accepted proposals to Google Ads can do the job without Zapier.
- If you run Zoho CRM and already store the click ID on the deal Portal updates, the fix may belong on the Zoho side, and we'll tell you that.
- If your ads mostly drive service or monitoring calls that never become a Portal proposal, Portal isn't where your conversions live.
Portal.io · what we deliver
The event map on Portal.io
Inquiry captured on your site
Form or tracked call, with click IDs and UTMs saved against the visitor's email.
Client record in People
Portal's Contact Modification trigger fires when a contact changes; we confirm it fires for new clients, then match the record to the stored click by email.
Proposal opened
A secondary signal from Portal's opened and viewed notifications, used for reporting and never counted as a sale.
Proposal accepted and signed
The primary conversion, valued at the total of the options the client selected.
Deposit paid
From Portal's Update Payment Status trigger, sent as its own event.
Excluded on purpose
Change orders, new proposals for existing customers, and internal test proposals stay out of your ad conversions.
Written guarantee
95%+ tracking accuracy
Measured against Portal.io accepted proposals and payment records: proposal ID, acceptance date, accepted total, client email and deposit status. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Portal.io questions, answered
Not natively. Portal's help center lists QuickBooks, Zapier, Zoho and API partners, with no Google Ads, GA4 or Meta connection, so conversions have to be sent server-side from Portal's Zapier triggers.
No. Clients review, sign and pay inside Portal's own interface, and Portal documents no place for custom tags. The accepted proposal has to be reported from Portal's status data instead.
Zapier triggers are included with Premium and higher plans, and advanced notifications need Premium or Unlimited. API access is listed for the Unlimited plan only.
We save the click ID and UTMs when the inquiry hits your website, then match the Portal client's email to that record when the proposal is accepted. Portal itself never sees the ad click.
No. A view tells you the client opened it, not that they'll buy. We track it for reporting and optimize ads on accepted proposals and paid deposits.
More on Portal.io
- Bloom.ioConversion tracking for photographers booking on Bloom.io
- Stripe → Customer.ioConnecting Stripe to Customer.io
- PayPal → Customer.ioConnecting PayPal to Customer.io
RELATED GUIDES
Booking tools beside Portal.io, and what their bookings feed
- JobNimbusGoogle Ads counts form fills. JobNimbus knows which jobs sold.
- Invoice2goClients tap Approve estimate in Invoice2go, and Google Ads is none the wiser
- XactimateYour ads learn from every wet-carpet call. The paid claims sit in Xactimate.
- Contractor ForemanContractor Foreman knows which estimates got approved. Your ads don't.
- DripJobsDripJobs conversion tracking: stop counting taps, see which ads sign proposals
- D-ToolsD-Tools conversion tracking: know which ads turn into signed proposals
- Estimate RocketEstimate Rocket conversion tracking: your ads see the form fill, never the signed proposal
- BuildingConnectedYou win the bid in BuildingConnected. Google Ads never hears about it.
Free · 30 min
Find out which ads turn into signed Portal.io proposals
Free30 minutesNo obligation
