Server-side

Meta Conversions API

Send server-confirmed conversions to Meta so campaigns optimise on real purchases — only for visitors who consented, with identifiers hashed server-side before they ever leave Servoki.

How it fits: you send a normal server event. If the site has a Meta connector configured and the event is consent: true, Servoki forwards it to Meta's Conversions API — hashing identifiers and deduplicating against the browser pixel. No separate API to call.

1. Configure the connector

In the dashboard, open your site → Conversions and add a Meta connector with your Pixel ID and access token. (Requires a workspace plan that includes the convert module.)

2. Send the conversion with consent + identifiers

On the server event, set consent: true and include a user_data object with whatever identifiers you have. Servoki hashes email and phone with SHA-256 before forwarding — raw values are never stored:

curl -X POST https://servoki.com/api/events/server \
  -H "authorization: Bearer $SERVOKI_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "site": "{{site}}",
    "event_type": "purchase",
    "value": 49.90,
    "currency": "EUR",
    "event_id": "order_8841",
    "consent": true,
    "user_data": {
      "email": "buyer@example.com",
      "phone": "+15551234567",
      "fbp": "fb.1.1690000000000.1234567890",
      "fbc": "fb.1.1690000000000.AbCdEf",
      "client_ip_address": "203.0.113.10",
      "client_user_agent": "Mozilla/5.0 ..."
    }
  }'

user_data fields

  • email, phone — hashed (SHA-256) server-side before forwarding.
  • external_id — your own stable user id (also hashed).
  • fbp, fbc — Meta's browser/click cookies, read from the visitor's browser, for match quality.
  • client_ip_address, client_user_agent — improve attribution; forwarded, not stored.

3. Deduplicate against the pixel

If you also run the Meta Pixel in the browser, send the same event_id from both the pixel and the server event. Meta collapses them into one conversion — you get the reliability of server-side without double-counting.

Consent is enforced, not optional. Events without consent: true are recorded for your own analytics but never forwarded to Meta. That separation is the whole point — measure everything, forward only what you're allowed to.