Connect Meta, Google, and LinkedIn Ads

Connect Meta, Google, and LinkedIn Ads

Connect an ad account in Console → Settings → Integrations so SMOC can send server-side conversions from published web flows and overlay paid spend on Agents dashboards.

This integration is Beta. Setup is limited to invoiced companies. Super-admins can open the pages to dogfood. SMOC does not create or publish ads — you still build campaigns in Ads Manager, Google Ads, or Campaign Manager.

Console Meta Ads integration

Google Ads and LinkedIn Ads use the same page: connect, accept the DPA, pick the ad account, then copy the UTM recipe.

What you get

After you connect an account, accept the DPA, and select an ad account:

  • Conversions — interaction, lead, and Smart Click (coupon redeem) events upload automatically from a published web flow. No Custom HTML step callbacks are required for those events.
  • Spend — campaign-day spend, impressions, and clicks sync hourly. Agents dashboards show a paid-spend strip under the KPI row.
  • SMOC share — the share of that spend on campaigns whose current platform campaign name or id matches a utm_campaign from SMOC visits (exact match, or the UTM name is a prefix of the Meta name). Put the stable campaign id in utm_id so a rename does not break the join.

Head Tags pixels are still useful for PageView / tag load on the landing page. Server upload replaces Google gtag and LinkedIn lintrk step callbacks once that platform is connected. For Meta, only dual-tag in the browser if the fbq event uses the same event_name and eventID ({type}:{conversationId}).

Workspaces that are not invoiced, or that have not connected yet, keep the Head Tags + Custom HTML path.

1. Connect the account

  1. In Console go to Settings → Integrations.
  2. Open Meta Ads, Google Ads, or LinkedIn Ads.
  3. Connect with the platform OAuth screen.
  4. Accept the data-processing acknowledgement (DPA).
  5. Select the ad account SMOC should use. For Meta, also set the pixel used for Conversions API.
  6. Copy the UTM recipe from that page. On Meta, paste it into the adTrackingURL parameters field (or Build a URL parameter). Meta has no account-level UTM setting; use the same recipe on every ad (or bulk-edit) so you are not tagging the Website URL on each ad set. On Google and LinkedIn, put the recipe on the account or campaign tracking template / final URL suffix.

Accepting the DPA also backfills the last 30 days of stored leads that still look paid, and starts a 90-day spend pull. After that, spend refreshes hourly for the last two days. Use Refresh spend on the same page to pull the last 90 days again.

Interaction, lead, and Smart Click events are on by default. You can turn an event type off on the account if you do not want it uploaded.

2. Point ads at the Flow URL with the recipe

Use the published Flow URL as the landing page (https://go.smoc.ai/<company>/<flow>/<variant> or your custom domain).

Use the campaign name in utm_campaign for Console filters and reports. Put the campaign id in utm_id so spend still joins after a rename. Meta Insights shows the current campaign name; the UTM name is whatever the campaign was called when the person clicked.

On Meta, open an ad in Ads Manager, scroll to Tracking, and paste the recipe into URL parameters (no leading ?). Use the same string on every ad — {{campaign.name}}, {{campaign.id}}, and {{ad.name}} fill at click time. Bulk-edit to apply it across ads. Do not put those tags in the Website URL on each ad set. Meta’s help article: Add URL parameters to your Meta ads.

Platform Typical parameters
Meta utm_source=meta&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_id={{campaign.id}}&utm_content={{ad.name}}
Google utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_id={campaignid}&utm_content={creative}
LinkedIn utm_source=linkedin&utm_medium=paid_social&utm_campaign={{CAMPAIGN_NAME}}&utm_id={{CAMPAIGN_ID}}&utm_content={{CREATIVE_ID}}

Google ValueTrack has no campaign-name token, so {campaignid} stays in utm_campaign (and utm_id). If you want a readable Google filter, set utm_campaign to the name and keep {campaignid} in utm_id.

utm_medium must stay a paid value (cpc, ppc, paid, paid_social, pmax, display, or paid-social). That, or a Google/Microsoft click id on the URL, is how SMOC decides the visit is paid.

3. Click IDs — no tracking cookies required

SMOC reads the click IDs the ad platforms already put on the landing URL (gclid, gbraid, wbraid, fbclid, li_fat_id, and similar), stores them on the conversation, and sends them server-side. It does not read _fbc, _fbp, or _gcl_* cookies.

For Meta, fbclid is sent as fbc. Google needs gclid, gbraid, or wbraid (and drops events older than 90 days). LinkedIn needs li_fat_id or a hashed email.

If the click never lands with those query params (or a paid utm_medium), the conversion is not enqueued. Organic traffic is skipped.

4. What fires automatically

On a published web flow (not a Studio draft, not a LinkedIn message flow):

SMOC event When Meta Google LinkedIn
Interaction First recorded outgoing interaction ViewContent SMOC_Interaction SMOC_Interaction
Lead Lead form captured Lead SMOC_Lead SMOC_Lead
Smart Click Coupon marked redeemed Contact SMOC_Click SMOC_Click

Each event is sent at most once per conversation per platform (lead:conversationId, and so on).

Consent: hashed email, phone, IP, and user-agent are included only when marketing consent is granted, or the visitor is outside the EEA/UK/Switzerland and consent was left unspecified. Denied or restricted + unspecified → no enhanced matching. Meta also applies Limited Data Use in those restricted cases.

5. Paid spend on Agents

On Console Agents (and the company dashboard when a company is selected), a Paid spend row sits under the KPI cards. Each connected platform with spend in the date range gets its own card.

  • The big number is all campaign spend in the selected dates — not only SMOC campaigns.
  • SMOC campaigns is the share whose campaign id or name matches a utm_campaign from SMOC visits (plus the Campaign filter if one is set). Matching is case-insensitive, and a UTM name also matches a Meta campaign title that adds a suffix (for example Retrade Smoc Selgere matches Retrade Smoc Selgere - View Content).
  • Show campaigns lists the campaigns and a SMOC yes/— column.

Hourly sync covers today and the previous two days. If a new campaign is missing, use Refresh spend on the integration page (last 90 days). Agents defaults to the last seven days, so older spend only appears if you widen the date range.

Check that it works

  1. Open the published Flow URL with the recipe UTMs and a real or test click id (fbclid, gclid, or li_fat_id).
  2. Complete an interaction and a lead on the published flow.
  3. In Console, open the integration page and confirm recent events are accepted (not failed / expired token).
  4. In the ads UI, wait for the conversion action or CAPI event (can take a few hours).
  5. After Insights has data, Refresh spend and check Paid spend on Agents.

If the OAuth token expires, admins get a Reconnect notice in the Console notification center (the bell). Open it to return to Settings and reconnect. Google and LinkedIn access tokens refresh automatically; Meta (and a failed refresh) needs a new Connect. New conversions and spend sync pause until the connection is active again.

Related

Stay close to the shift in AI sales

Get product updates and perspective on proactive AI agents, multichannel orchestration, and conversion—without the noise.

Product of the Year Weekly signal on proactive AI sales
Join the newsletter