CRM
Salesforce integration for digital marketing agencies
For B2B and considered-purchase clients, the conversion that matters happens in Salesforce weeks after the click — a qualified lead, an opportunity, a closed-won deal. Optimising campaigns on form fills instead of pipeline is the single most expensive measurement mistake in B2B marketing, and closing that loop means click identifiers surviving from the ad platform into the CRM and back out as offline conversion imports. That chain crosses a system the agency usually does not administer, which is exactly why it needs to be documented: when the loop breaks, the ad platform keeps bidding confidently on the wrong signal.
How Phloz models Salesforce
What Phloz records about Salesforce on each client's tracking map, and what it doesn't. Only GA4, Google Tag Manager and Google Ads connect to Phloz (read-only, through a connected Google account); everything else is recorded by your team. Health states are set by the person who checks, the structural audit re-runs weekly, and graph relationships show what each node connects to — so a node marked broken or overdue for verification shows up in the cross-client tracking-health view.
- Salesforce as a CRM system node: which org (instance URL), with the lead/opportunity fields the measurement depends on and where click identifiers are stored written in its notes
- Edges to the ad accounts that receive its offline conversions — so the closed-loop path (click ID captured → stored on the lead → imported back as a conversion) is a visible chain rather than tribal knowledge
- Health status and last-verified date on the node: a monthly recurring task handles the re-check, and a date older than 30 days surfaces in the audit
- A per-client record of whether closed-loop reporting is wired, or the client is still optimising on form fills
Common Salesforce configuration gotchas
The configuration mistakes agencies most often make with Salesforce, surfaced here as a checklist agencies can run at every client onboarding. Honest, useful, not gated behind a sales pitch — these are real and you should audit for them regardless of whether you use Phloz.
- The click identifier never reaching the CRM: offline conversion imports match on the ad platform's click ID (GCLID, and its equivalents elsewhere), which has to be captured on the landing page, carried through the form, and written to a custom field on the lead. If any hop drops it — a form rebuild, a hidden field renamed, a redirect stripping query parameters — imports silently fail to match and the loop looks fine while feeding nothing.
- Import windows expiring: ad platforms only accept offline conversions within a bounded window after the click. Long B2B sales cycles routinely exceed it, so deals close outside the window and never make it back. Decide which mid-funnel stage (qualified lead, opportunity created) is imported as the optimisation signal, rather than assuming closed-won will fit.
- Sandbox and duplicate records distorting the import: test records from a sandbox refresh, or duplicate leads created by a re-submitted form, get imported as real conversions and quietly inflate the numbers the bidding algorithm trusts. Filter by record type and de-duplicate before upload, and confirm what was actually accepted rather than what was sent.
At launch (V1)
Salesforce appears as a CRM system node (vendor: Salesforce): name, instance URL, notes (where the lead-source and click-ID fields the agency depends on go), and health status — linked to the ad accounts whose offline conversions it feeds. There is no Salesforce connection.
Not built yet
Verify offline-conversion import health directly — whether uploads are landing and matching — so a broken import surfaces in the audit instead of in a quarter of misinformed bidding.
Why we built the integration this way
Most agency CRMs treat third-party tools as text fields: "GA4 Property ID" goes in a custom column on the client record. That works at one or two clients and breaks at five. With Salesforce recorded on each client's tracking map — as its own typed node where Phloz has one, as fields and notes where it doesn't — the agency can answer "is this client's Salesforce setup documented, and when was it last verified?" per client, and see every client ranked by tracking health.
Most of it is entered by hand at onboarding: only GA4 properties, GTM containers and Google Ads accounts can be imported from a connected Google account, and nothing syncs afterwards. The manual pass forces explicit verification at the exact moment the agency takes over the client's tracking — the cheapest moment to catch the gotchas listed above, before they become production issues.
When to use this in your client onboarding flow
The pattern we recommend: at every new client onboarding (see the client onboarding audit use case), spend 30 minutes documenting the client's Salesforce configuration on the tracking map — IDs, tracking-code installations, conversion setup, the relationships to other systems. Verify each one fires by triggering a test event, then mark the node verified so the date is recorded. Add a recurring task (monthly, say) for the re-check, assigned to whoever owns tracking — the audit flags anything unverified for 30+ days either way.
Thirty minutes at onboarding costs far less than finding the same tracking issues during the first month of campaign optimisation — when finding them would mean a refund conversation. See the broader tracking infrastructure map use case for the agency-wide pattern.
Frequently asked questions
The three questions agencies ask most often about Phloz's Salesforce integration. Honest answers — same data we'd give a friend evaluating the integration.
- What is closed-loop reporting and why does it need the CRM?
- It is connecting the ad click to what the lead eventually became — qualified, opportunity, closed-won — so campaigns can be optimised on revenue rather than form fills. It needs the CRM because that is where the outcome lives: the click identifier must be captured on the landing page, stored on the lead record, and sent back to the ad platform as an offline conversion. Every one of those hops is a place the chain can break silently, which is why it belongs on a documented map.
- Does Phloz replace Salesforce?
- No, and the distinction matters. Salesforce is the client's sales CRM, tracking their customers and pipeline. Phloz is the agency's operations platform, tracking the agency's clients and the delivery work. For a B2B client, Phloz models the Salesforce org as part of the measurement chain — which fields carry the click identifier, which ad accounts receive the imports, whether the loop is healthy — without touching the client's CRM data.
- Does Phloz connect to a client's Salesforce org?
- Not today. Phloz models the setup — the fields, the loop, the dependencies, when it was last verified — rather than pulling records from the client's CRM. That boundary is deliberate: modelling the measurement chain is what makes a broken loop checkable, and it avoids putting the agency in the middle of the client's customer data.
Other integrations
Other crm and adjacent tools, and how Phloz handles each.
- HubSpotCRM
- Zoho CRMCRM
- Google Analytics 4Analytics
- Google Tag ManagerTag management
- Google AdsPaid
- Meta AdsPaid
- TikTok AdsPaid
- Microsoft AdsPaid
- ShopifyCommerce
- KlaviyoEmail
- LinkedIn AdsPaid
- Call trackingCall tracking
- Google Search ConsoleSEO
- Google Business ProfileLocal
- Meta Conversions APIServer-side
- Server-side GTMServer-side
- WooCommerceCommerce
- MailchimpEmail
- SegmentServer-side
- All integrations
14 days free for new workspaces · No credit card · Starter tier free forever