All guides

Ads Integrations: Connect Meta, Google & TikTok

Connect your Meta, Google and TikTok pixels and server-side conversions (CAPI) so every lead and sale you capture is reported back to your ad platforms, making your ads cheaper, smarter and measurable.

12 min read

What Ads Integrations is — and why connect

  • The Integrations page (CRM menu → Integrations) is one cockpit for your three ad platforms: Meta (Facebook & Instagram), Google (Analytics & Ads) and TikTok. You connect each card or store once here, and Scaanme then reports the leads and sales it captures back to those platforms automatically — instead of you opening Events Manager, GA4 and TikTok Ads separately.

  • There are two halves to a connection. The pixel/measurement ID is the browser tag that fires from the visitor's device. The conversions token (CAPI / API secret) lets Scaanme also send the same event from our server, which can't be blocked. iPhone privacy and ad-blockers hide roughly 30% of browser-pixel events, so the server-side half is what lets the platform see the full picture and keep optimising your ads correctly.

  • This page matters most if you run paid ads on Meta, Google or TikTok. If you don't advertise yet, you can safely skip it for now — Scaanme keeps capturing your visitors and leads in the CRM regardless. When you do start advertising, come back here and connect in a few minutes.

  • Heads-up on plans: the connect forms, the Test button and the audience export need a marketing-enabled plan. Without it you'll see a yellow banner reading *"Ad integrations are available on a marketing-enabled plan"* and an Upgrade prompt instead of the per-card forms. The read-only delivery-health panel still shows on every plan.

Reading the cockpit (the three platform cards)

  • At the top sit three summary cards — one each for Meta, Google and TikTok. Each carries a status chip in the corner so you can see your connection state at a glance: green Connected (both the pixel ID *and* the token are saved on at least one card), amber Pixel only (an ID is saved but no token, so only the browser half fires), or grey Not connected.

  • Each card shows two big numbers. "Visits attributed" is the traffic Scaanme recognised as coming from that platform (e.g. Instagram and Facebook visits roll up under Meta). "Conversions sent" is how many leads/sales Scaanme reported back to that platform server-side. The footer line adds *":s sent · :f failed"* and the time of the last dispatch, so you can confirm events are actually flowing.

  • Under the cards, the grey "What this cockpit shows" note spells out the difference in plain words, plus an honest limit: ad spend and ROAS still live in each platform. Pulling those numbers into Scaanme by connecting your ad account is on the roadmap, not live today — so this page is about *connection health and conversions*, not your full ad reporting.

Connect Meta (Facebook & Instagram)

  • Scroll to "Connect your cards" and tap a card or store to expand it. Each card holds its own set of Meta, Google and TikTok fields, because tracking is per card — your restaurant store and your personal vCard can report to entirely different pixels. A small green Meta ✓ chip on the card header tells you that card already has a Meta pixel saved.

  • In the Meta Pixel ID field, paste your 15-digit Pixel ID (placeholder shows 123456789012345). Don't know where to find it? Click "How do I get this?" next to the field — Scaanme opens inline steps (Meta Events Manager → Data sources → your dataset → copy the 15-digit ID from the Overview) and an Open Events Manager shortcut. This ID is the browser tag; on its own it puts the card into the amber Pixel only state.

  • In Meta Conversions API token (placeholder EAAB…), paste the CAPI access token. Generate it in Events Manager → your pixel → Settings tab → Conversions API section → Generate access token — copy it immediately, as Meta shows it only once. This token is the server-side half; with both ID and token saved the card flips to green Connected.

  • The optional Test event code field (placeholder TEST12345) is only for setup. Paste the code from Events Manager → Test Events and Scaanme routes its server-side events to that tab so you can watch them arrive live. Leave it blank in normal operation — a left-in test code keeps your real conversions in the Test tab instead of production. Meta-only; Google and TikTok ignore it.

Connect Google (Analytics 4 & Ads)

  • Google has four fields because it covers two products. GA4 Measurement ID (placeholder G-XXXXXXXXXX) is your Analytics property's web data-stream ID — find it in Google Analytics → Admin → Property → Data streams → your website stream → copy the Measurement ID at the top. This is the ID half of GA4.

  • GA4 API Secret is the token half (a Measurement Protocol secret). In that same Data stream, scroll to Measurement Protocol API secrets → Create, give it a nickname like "Scaanme", and copy the Secret Value — shown only once. With the GA4 ID and secret both saved, Scaanme can send purchase / generate_lead / sign_up events to GA4 server-side.

  • Google Ads Conversion ID (placeholder AW-XXXXXXXXX) and Google Ads Conversion Label (placeholder abcDEF123) are a separate pair for Google Ads (not Analytics). Get both from Google Ads → Goals → Conversions → Summary → your conversion action → Tag setup → copy the Conversion ID (prefix it with AW-) and the Conversion label beside it. These fill the Ads side of "Google".

  • Edge case to know: when Test is clicked for Google, it validates GA4 specifically (it pings GA4's debug endpoint with the ID + secret). The two Google Ads fields are saved with the card but aren't part of that GA4 test ping, so a green GA4 result confirms your Analytics pipe — verify Ads conversions inside Google Ads itself.

Connect TikTok

  • TikTok needs two fields. TikTok Pixel ID (placeholder CXXXXXXXXXX) is the ID half. Find it in TikTok Ads Manager → Tools (or Assets) → EventsWeb Events → open your pixel → Settings tab → copy the Pixel ID. The inline "How do I get this?" guide and an Open TikTok Ads Manager shortcut are right there in the field.

  • TikTok Events API token is the server-side token half. On that same Web Events pixel → Settings tab → Generate Access Token, then copy it immediately. Once both the Pixel ID and the token are saved, Scaanme can push CompletePayment / SubmitForm / Subscribe events to TikTok's Events API directly from our server.

Save, then Test each connection

  • When the fields are filled, click the Save button at the bottom of the card's form. Scaanme cleans each value as it saves — IDs are stripped to letters/numbers/-/_, tokens have whitespace removed — and confirms with *"Tracking settings saved for <card>."* Saving is per card: the whole Meta + Google + TikTok block for that one card is stored together.

  • Tokens are secret: a saved token field shows blank with the placeholder *"Saved — leave blank to keep"*. Leaving it blank on your next Save keeps the existing token; you never have to re-paste it. To remove a token entirely, tick the small "Clear saved value" checkbox beneath that field and Save — that wipes the stored token (and drops the platform back to Pixel only).

  • Now click the Test button in each platform's section. It pings that platform live with your saved credentials: Meta is checked against the Graph API (v23.0) and returns *"Connected — <pixel name>"*; GA4 is validated against its debug endpoint (*"Connected — GA4 accepts events"*); TikTok sends a harmless test event (*"Connected — TikTok accepted a test event"*). A green line means you're live; a red line shows the platform's exact rejection reason.

  • Order matters: Save first, then Test — the test reads the *saved* credentials, not what's currently typed. If you test before saving (or with a missing half), you'll get a friendly nudge like *"Add the Pixel ID and CAPI token, then Save first."* That's expected, not an error.

What events get sent (Purchase / Lead / Subscribe)

  • Scaanme only sends events that are backed by real activity — it never fires an empty event. An order (store or restaurant) becomes Purchase; a contact form, appointment or service booking becomes Lead; a newsletter signup becomes Subscribe. A section/content view on the profile maps to ViewContent, but only when it's tied to a known contact — anonymous views never spam your pixel.

  • Each platform receives the event under its own native name. Purchase → Meta Purchase, GA4 purchase, TikTok CompletePayment. Lead → Meta Lead, GA4 generate_lead, TikTok SubmitForm. Subscribe → Meta Subscribe, GA4 sign_up, TikTok Subscribe. Order events also carry the value and currency (defaulting to USD) so the platform can attribute revenue, not just a count.

  • Sending is idempotent: every event carries a stable ID derived from the activity (a<activity_id>), and Scaanme records one ledger row per (platform, event). If a background job retries, the duplicate is skipped — your platform never double-counts a sale or lead. Historical/imported data is deliberately excluded, so back-filling old contacts won't retro-spam your pixels.

Privacy & how your customers' data is protected

  • Raw personal data never leaves Scaanme's server. Before any event is sent, each contact's email and phone are normalized (email lowercased and trimmed, phone reduced to digits) and then SHA-256 hashed — a one-way scramble. The platform only ever receives the hash, which it uses to match the conversion to an account it already knows, without you exposing the actual address or number.

  • To lift Event Match Quality (how confidently the platform matches your event to a person), Scaanme also sends a stable hashed external ID built from your account and the contact — another non-reversible value. More good match signals means cheaper, better-optimised ads without ever shipping plain-text PII.

  • On a marketing plan you can also build a Custom Audience without touching raw data. The Export ad audience (hashed) button downloads a CSV with two columns — email_sha256 and phone_sha256 — already hashed in the exact format Meta, Google and TikTok expect for audience uploads (capped at 50,000 rows). Upload that file to a platform's Custom Audience tool; again, only one-way hashes leave Scaanme.

Delivery health — confirm events actually landed

  • The Delivery health panel is your receipt for every server-side conversion Scaanme sent. It's read-only and shows on every plan (no marketing flag needed to look). It opens with a per-platform roll-up: each of Meta, Google and TikTok gets a chip — green Healthy or red Failed: N — plus counts of sent, failed and any pending, and the time of the last event.

  • Below the roll-up, Recent events lists individual dispatches with failures sorted to the top, each tagged sent / failed / error, the platform, the event name and the timestamp. A failed row expands to show the platform's exact error message (e.g. an invalid token or a rejected field), so you can fix the credential and move on instead of guessing. Hit Refresh to re-pull the latest.

  • If you've connected a card but the panel says *"No server-side conversions sent yet"*, that's normal — it only fills once a real lead or sale fires on that connected card. Run a quick test conversion (submit your own contact form or place a test order) and Refresh; the event should appear here within a minute or two.

Tips & best practices

  • Always add the token, not just the ID. A pixel ID alone (amber *Pixel only*) gives the platform only the browser-side view, which iPhone privacy and ad-blockers cut by roughly a third. The token unlocks the server-side half that can't be blocked — that's where most of the cost-per-lead savings come from.

  • Connect each money-making card separately. Because tracking is per card, point your store at the pixel of the ad account that drives its traffic, and your vCard at its own. Mixing them sends a restaurant's purchases to a personal-brand pixel and muddies both — so its AI learns the wrong buyer profile.

  • Remove the Test event code before going live. It's brilliant for confirming events land in Events Manager during setup, but if you forget it, your real conversions keep landing in Meta's *Test Events* tab and never reach production optimisation. Verify, then clear it.

  • Re-test after rotating a token. If a platform forces you to regenerate an access token, paste the new one, Save, then Test again — an expired token shows up as a red *failed* row in Delivery health with the platform's reason, which is your cue to refresh the credential.

  • Don't expect ad spend or ROAS here — yet. This cockpit covers connection health and the conversions Scaanme sends; budgets, spend and return still live inside each ad platform. Pulling them in is on the roadmap, so keep using each platform's own reporting for spend decisions for now.

Frequently asked questions

  • Do I need to be running ads for this to be useful? Mostly yes. The whole value — cheaper ads, retargeting, lookalikes, recovering blocked conversions — applies when you advertise on Meta, Google or TikTok. If you don't advertise yet, skip it; Scaanme still captures every visitor and lead in your CRM regardless of whether anything is connected here.

  • Why is my card showing "Pixel only" in amber? You've saved the ID but not the token. The browser-side pixel will work, but the un-blockable server-side conversions won't fire. Add the matching token (Meta CAPI token / GA4 API secret / TikTok Events token), Save, and the chip turns green Connected.

  • Will Scaanme send my customers' email and phone to the ad platforms? No raw data, ever. Email and phone are SHA-256 hashed on our server first; the platform only receives an irreversible hash it uses to match the conversion to an existing account. The same applies to the audience export — only email_sha256 and phone_sha256 columns leave Scaanme.

  • Could a retry or a duplicate make the platform count a sale twice? No. Every event carries a stable ID (a<activity_id>) and Scaanme logs one ledger row per platform + event, so a worker retry is skipped before re-sending. Each Purchase, Lead or Subscribe is reported exactly once.

  • Why did my Test pass but Delivery health is still empty? Test only checks that your credentials are valid — it doesn't create a real conversion. Delivery health fills only when an actual lead or sale fires on that card. Submit a real contact form or place a test order, wait a minute, then Refresh.

  • I changed a token but the old one seems stuck — what happened? Token fields are write-once for security: a saved field shows blank (*"Saved — leave blank to keep"*), and leaving it blank keeps the old value. To replace it, paste the new token over the blank field and Save. To wipe it, tick "Clear saved value" and Save.

  • Does this work for stores as well as vCards? Yes — any card or store you own appears in "Connect your cards." Stores especially benefit, because their orders become Purchase events with real value and currency, which is the strongest signal an ad platform can learn from.