Clarity Diamonds — Meta Conversions API (CAPI) Setup Guide
Date: 2026-03-15
Status: Planning
Related: Launch Plan — First 30 Days, Meta Ads Strategy
Why CAPI + Pixel (Not Pixel-Only)
The Meta Pixel fires from the browser. CAPI fires from your server. You need both because:
- iOS 14.5+ and browser privacy — Safari ITP, Firefox ETP, and ad blockers strip or block pixel fires. You lose 20-40% of conversion data with pixel-only.
- Meta's algorithm needs signal — fewer events = worse optimisation = higher CPAs. Meta downgrades delivery for advertisers with poor data quality.
- Event Match Quality (EMQ) — Meta scores how well it can match your events to real users. CAPI passes hashed email, phone, and name directly, which the pixel can't reliably capture. Higher EMQ = better audience matching = lower costs.
- Required for Advantage+ — Meta's best-performing campaign types lean heavily on strong server-side signal.
- Deduplication — Meta deduplicates pixel + CAPI events via
event_id, so you get the best of both without double-counting.
Bottom line: Pixel-only is fine for Month 1 launch (don't let CAPI block going live). But set up CAPI as soon as possible after launch — ideally within the first 2 weeks.
Events to Set Up
These match the pixel events in the Launch Plan — First 30 Days plus additional server-side signals.
Core Events (Must Have)
| Event | Trigger | Parameters | Priority |
|---|---|---|---|
ViewContent | Views a diamond detail page or house collection design | content_name, content_category | High |
Lead | Submits concierge booking form | content_name: 'Concierge Booking' | Critical — primary conversion event |
Contact | Submits contact form | — | High |
CompleteRegistration | Email signup via diamond guide or style quiz | content_name: 'Diamond Guide' or 'Style Quiz' | High |
Note:
PageViewis pixel-only — no need to send it server-side. The pixel handles it fine, there's no customer data to enrich, and losing a few pageviews to ad blockers doesn't affect optimisation.
Recommended Events (Add When Ready)
| Event | Trigger | Parameters | Priority |
|---|---|---|---|
Search | Uses diamond search or filters | search_string, filter values | Medium |
Schedule | Books a specific consult time slot (if separate from Lead) | content_name: 'Consult Booking' | Medium |
Events You Don't Need Yet
| Event | Why Not |
|---|---|
Purchase | No online checkout — funnel ends at concierge booking |
AddToCart | No cart functionality |
InitiateCheckout | No checkout flow |
AddPaymentInfo | Payments handled offline |
When to add Purchase: If you ever add online ordering or a deposit payment flow, add
Purchasewithvalueandcurrencyparameters immediately. This unlocks value-based optimisation in Meta.
Customer Information Parameters
CAPI's advantage over the pixel is passing hashed customer data for better matching. Send as many of these as you have:
| Parameter | Source | Impact on EMQ |
|---|---|---|
em (email) | Form submissions, email subscribers | High |
ph (phone) | Concierge booking form | High |
fn (first name) | Concierge booking form | Medium |
ln (last name) | Concierge booking form | Medium |
ct (city) | If captured | Low |
st (state) | If captured | Low |
country | Default to AU | Low |
external_id | Your CRM/subscriber ID | Medium |
fbp | _fbp cookie (Meta Pixel cookie) | High — links server event to browser session |
fbc | _fbc cookie (click ID from ad) | High — links conversion to specific ad click |
Important: All personal data must be SHA-256 hashed before sending. Most integration tools handle this automatically. Never send plaintext personal data to the API.
Critical: Always pass
fbpandfbccookies from the browser to your server. These link CAPI events to pixel events for deduplication and connect conversions to ad clicks.
Deduplication
When running both pixel and CAPI, Meta deduplicates using event_id. Every event needs:
- Same
event_name— pixel and CAPI must use identical event names - Same
event_id— generate a unique ID (e.g., UUID) when the event occurs, send it via both pixel and CAPI - Within 48 hours — CAPI event must arrive within 48 hours of the pixel event
Example flow:
1. User submits concierge form
2. Browser fires: fbq('track', 'Lead', {event_id: 'abc-123'})
3. Server fires: CAPI Lead event with event_id: 'abc-123'
4. Meta receives both, deduplicates on event_id, keeps the best-matched one
If deduplication isn't set up correctly, Meta will double-count conversions — inflating your numbers and messing up optimisation.
Implementation Options
Option 1: Platform Native (Easiest)
If claritydiamonds.au is on Shopify, WordPress/WooCommerce, or Squarespace:
- Most platforms have a built-in CAPI integration — it's a toggle or plugin
- Shopify: Settings → Customer Events → Meta CAPI (automatic)
- WordPress: Use the official "Meta for WordPress" plugin or "PixelYourSite Pro"
- Squarespace: Limited CAPI support — may need Option 2
Pros: No dev work, handles deduplication automatically
Cons: Less control over which events fire and what data is passed
Option 2: Gateway (Recommended for Control)
Use a server-side tagging platform:
- Stape.io — server-side Google Tag Manager hosting, Meta CAPI connector
- Server-side GTM — Google's free server-side container (requires hosting)
Pros: Full control, works with any website platform, handles deduplication
Cons: Moderate setup, ~$10-20/month hosting cost (Stape)
Option 3: Direct API (Most Control)
Implement CAPI directly using Meta's Marketing API:
- Requires server-side code (Node.js, Python, PHP, etc.)
- Full control over every parameter
- Best for custom setups
Pros: Maximum control and data quality
Cons: Requires dev work, you manage deduplication
Recommendation for Clarity Diamonds
Start with Option 1 if your platform supports it. Move to Option 2 (Stape + server-side GTM) if you need more control or your platform's native integration doesn't pass enough customer data.
EMQ Score Targets
After setup, check Event Match Quality in Meta Events Manager:
| EMQ Score | Rating | Action |
|---|---|---|
| 8-10 | Great | Maintain |
| 6-7 | Good | Add more customer parameters (phone, name) |
| 4-5 | OK | Check fbp/fbc cookies are passing, add email to all events |
| < 4 | Poor | Something is broken — debug immediately |
Where to check: Events Manager → Data Sources → Your Pixel → Event Match Quality tab
Setup Checklist
- Choose implementation option (platform native, gateway, or direct API)
- Set up CAPI for
ViewContentevent - Set up CAPI for
Leadevent (concierge form) — do this first - Set up CAPI for
Contactevent - Set up CAPI for
CompleteRegistrationevent (guide/quiz signups) - Verify deduplication:
event_idmatches between pixel and CAPI for each event - Verify customer parameters: email and
fbp/fbccookies passing on all form events - Check EMQ score in Events Manager (target: 6+)
- Test using Events Manager → Test Events → Server Events tab
- Monitor for 48 hours — confirm no double-counting in Events Manager
Timeline
| When | What |
|---|---|
| Month 1 (launch) | Pixel-only is fine — don't delay launch for CAPI |
| Week 2-3 | Set up CAPI for Lead event (highest priority — primary conversion) |
| Week 3-4 | Add remaining events (ViewContent, Contact, CompleteRegistration) |
| Month 2 | Verify EMQ scores, optimise customer data parameters |
CAPI setup is a one-time investment that improves every campaign you run. The sooner it's live, the better Meta can optimise your $1,000/month budget.