Features Pricing Documentation Blog For agencies Contact
Sign in Try for free
Documentation / Server-side tracking

Server-side tracking (sGTM, Meta CAPI)

Larger sites don't send data to Google and Meta straight from the browser, but through their own server (server-side GTM, Meta Conversions API). Cookienovo guards consent for these server integrations too.

Server-side GTM: works out of the box

The banner sends Google Consent Mode v2 signals (ad_storage, analytics_storage, ad_user_data, ad_personalization), which travel with events into your server-side GTM container as well. Google's server tags thus respect the visitor's consent automatically — no further configuration is needed.

Consent state for your server (Meta CAPI and others)

For integrations outside Google, your server can verify a specific visitor's consent state with a single call. The visitor identifier (browser_id) is available in the browser — the banner shows it as “Consent ID” and you send it to your backend along with the conversion event.

GET https://cookienovo.com/api/consents/state?browser_id=BROWSER_ID
site-token: VÁŠ_SITE_TOKEN

→ 200 {
  "data": {
    "decision": "accept_all",            // accept_all | partial | reject_all
    "categories": {
      "marketing": true, "analytics": true,
      "functional": true, "statistical": false, "other": false
    },
    "config_version": "4cd038cbc4de4230", // verzia lišty pri rozhodnutí
    "decided_at": "2026-07-20T21:02:11Z"
  }
}
→ 200 { "data": null }                    // návštevník ešte nerozhodol = bez súhlasu

Meta Conversions API

Before sending an event to Meta CAPI, verify the marketing category. Don't send the event without consent — server-side measurement is subject to the same rules as the pixel in the browser.

state = cookienovo_consent(browser_id)          # volanie vyššie
if state && state.categories.marketing:
    meta_capi.send(event)                        # súhlas udelený
else:
    pass                                         # bez súhlasu sa event neposiela

Signals in the browser

Beyond Google, the banner automatically sends consent to Microsoft UET (Bing Ads) and the Meta pixel too — fbq('consent', grant/revoke). Frontend and server-side measurement thus see the same state.

Notes

  • Rate limit: 600 calls per minute per IP — under heavier traffic, cache the state per visitor.
  • Privacy: We don't store browser_id in readable form — the lookup runs through a one-way hash.
  • Consent change: the visitor can change their choice at any time; verify the state on every conversion and don't cache it for more than a few minutes.