Marketing Tools

Server-Side Tracking and Conversions API: Closing the Gap in Your Ad Conversion Data

Nov 13, 202611 mins read
Two white ceramic devices send teal spheres through glass tubes into one server block, then on to three data destinations

By Bagas · Updated November 13, 2026

Server-side tracking sends your ad conversion data through a server you control instead of straight from the visitor's browser to each platform. Build it when infrastructure costs under 1% of ad spend and at least one of these three holds: main conversions finish outside the browser (CRM, WhatsApp, offline), many visitors use Safari or iPhones, or a 14-day reconciliation shows a consistent gap.

As of November 2026, hosting runs from a few hundred thousand to a few million rupiah a month. One thing doesn't change: a server doesn't remove your consent obligations under Indonesia's personal data protection law (UU PDP).

Key takeaways

  • Build server-side tracking when infrastructure costs under 1% of ad spend and at least one of these three holds: main conversions finish outside the browser (CRM, WhatsApp, offline), many visitors use Safari or iPhones, or a 14-day reconciliation shows a consistent gap.
  • As of November 2026, Google's default Cloud Run setup for server GTM costs about USD 45 per server a month; the two servers Google recommends come to Rp 1,641,690.
  • Server-side tracking doesn't replace consent: the choice is made in the browser and passed to the server, and Law No. 27 of 2022 applies.
  • The cheapest first step: compare conversions in Events Manager, Google Ads and GA4 against valid orders or leads in your backend for 14 days.

What is server-side tracking, and how is it different from a browser pixel?

With a standard pixel, the browser sends data straight to Meta, Google and every other vendor. With server-side tracking, the browser sends events to a server container you own, and that server forwards them to GA4, Meta and Google Ads.

According to Google's server-side tagging documentation, the server container runs on infrastructure you control, and only you see the data until you forward it.

Aspect Browser pixel Server-side only Hybrid (pixel + server)
Data completeness Exposed to ad blockers, network errors, cookie limits Depends on what the backend sends Most complete, with deduplication
Control over data Low High High on the server path
Cost Close to zero Hosting + developer Hosting + developer
Consent Handled by the CMP in the browser Still required, status sent to server Set in the browser, passed to server
Technical effort Low High Highest

Hybrid suits most advertisers.

Meta's Conversions API and Google Ads enhanced conversions: two routes, one principle

The Conversions API (CAPI) is a server-to-server channel for sending web, app and physical-store events to Meta. Meta's best-practice guide (read November 2026) recommends a redundant setup: events such as Purchase and Contact go through both the Pixel and CAPI. Each web server event gets an Event Match Quality score from 0 to 10 in Events Manager.

Google Ads enhanced conversions add first-party data such as email, hashed with SHA-256, to your existing conversion tags, in versions for web and for leads that close offline. Same principle: hashed customer data matches conversions to clicks.

When is server-side tracking worth building, and when isn't it?

Build it when infrastructure costs under 1% of ad spend and at least one of these three holds: main conversions finish outside the browser (CRM, WhatsApp, offline), many visitors use Safari or iPhones, or a 14-day reconciliation shows a consistent gap. If the cost is above 1% or none apply, wait.

Do the math. Two Cloud Run servers, about Rp 1.64 million a month, are 0.33% of a Rp 500 million ad budget but 8.2% of a Rp 20 million one. The 1% line is our rule of thumb, not a platform rule.

Offline conversions are the strongest reason. Banks, multifinance firms, property developers and B2B companies usually close sales in a CRM or on WhatsApp days after the click, where no pixel sees them. Sending those events back lets bidding learn from closed leads, not filled forms. That ties directly to lead quality in Meta Ads.

Browser limits come second, and they're often overstated. WebKit's tracking-prevention page (updated April 2023) says Safari deletes JavaScript-set cookies after 7 days without interaction, and after 24 hours when the visitor came through a link with click IDs. Chrome is different: per Google's Privacy Sandbox announcements of April and October 2025, Chrome hasn't removed third-party cookies and leaves the choice to users; we found no newer announcement.

You don't need it yet if:

  • you sell on Shopify and Meta is your main ad channel. Per Shopify's help page (November 2026), the Enhanced or Maximum data-sharing level already sends Purchase events through the Conversions API;
  • your consent banner doesn't work properly yet, because a server just moves the problem;
  • nobody can maintain it. Google asks for a server update at each major version.

What does the architecture look like?

There are four layers. The browser (Google tag, consent banner, Meta Pixel) and your CRM send events to an endpoint on your domain, and the server GTM container forwards them to GA4, Meta CAPI and Google Ads. Consent is decided in the browser, and deduplication happens at the destination.

Server-side tracking diagram: browser and CRM to a server GTM container, then to GA4, Meta Conversions API and Google Ads

Three details decide whether it works.

  • A first-party domain. Google recommends your own domain before production traffic. Same-origin serving (example.co.id/metrics) gives full access to server-set cookies, a subdomain is the middle option, and the default cloud domain counts as third-party. WebKit still caps server-set cookies at 7 days when it detects third-party CNAME or IP cloaking.
  • The consent flow. Per Google's server-side consent mode documentation, consent mode is set only in the web container. The Google tag attaches consent status to each request, and server-side Google tags adjust what they send.
  • Deduplication. Meta merges a browser and a server event when event_name and event_id match, but only within 48 hours of the first event with that event_id.

What does hosting and upkeep cost?

As of November 2026, hosting runs from about Rp 230,000 to Rp 3.6 million a month for up to 20 million requests, depending on the route; Cloud Run can reach about Rp 8.2 million if autoscaling hits 10 servers. Developer time usually costs more, and no official source prices it.

Method: official price pages, accessed November 13, 2026, converted at the Bank Indonesia JISDOR rate of November 12, 2026: Rp 18,241 per USD. Bands are server requests per month: low up to 500,000, mid about 5 million, high about 20 million. Excludes VAT, CDN and storage.

Route (price source) Low Mid High
Cloud Run, default config, 2 servers (Google) Rp 1,641,690 Rp 1,641,690 Rp 1,641,690; up to Rp 8,208,450 if autoscaling hits 10 servers
Meta Conversions API Gateway on Google Cloud, Meta events only; GA4 and Google Ads need another route (Meta estimate) Rp 229,837 Rp 229,837–985,014 Rp 985,014
Managed server-GTM host, annual / monthly billing (Stape price list) Rp 310,097 / 364,820 Rp 1,514,003 / 1,824,100 Rp 3,046,247 / 3,648,200
Shopify (Enhanced/Maximum) or the Meta for WooCommerce plugin Not published Not published Not published

Google's guide (updated May 2026) puts each server at about USD 45 a month (1 vCPU, 0.5 GB memory) and estimates 2 to 10 servers handle roughly 35 to 350 requests per second. One server (Rp 820,845) is possible, but Google advises two so a failure doesn't lose data.

How do consent and the UU PDP apply?

Server-side tracking still processes personal data, so Law No. 27 of 2022 applies in full; the two-year adjustment period in Article 74 ended in October 2024. In our reading, the advertiser is the controller; whoever runs the tagging server for you is in the processor position.

Article 1(1) covers data that identifies a person directly or indirectly, and hashing exists to match identities, so a hashed email isn't anonymous. Of Article 20's six processing bases, explicit consent is the easiest to document for advertising, provided it meets Articles 21 and 22: purpose and data types explained, consent recorded, plain language. Under Article 57, breaching Article 20(1) or Article 21 can bring administrative sanctions, including a fine capped at 2% of annual revenue.

The mapping below is our reading, not a legal opinion:

Data leaving the server Source Note
SHA-256 hashed email/phone Checkout, lead form, CRM Still personal data, since it's used to match a person
IP address, user agent Browser request Sent unhashed to Meta; can identify someone when combined
Click and cookie IDs (fbc, fbp, gclid) Browser cookies Link a visit to an ad click
Purchase value, product, URL Site, app, CRM Personal once tied to the identifiers above

Forwarding events to Google or Meta servers abroad is a cross-border transfer (Article 56), wherever your tagging server sits. Meta's Business Tools Terms also require verifiable consent where the law calls for it.

The implementing regulation, PP No. 33 of 2026, was signed on July 16, 2026 and takes effect on January 16, 2027, according to Katadata and Kompas (September 2026); Bisnis.com also reported its issue. So it isn't in force yet, and we haven't seen the official text. Per Katadata, Articles 34 and 36 require a consent mechanism and proof of consent. We found no Komdigi guidance specific to pixels or server-side tracking.

Banks, insurers and multifinance firms should also check OJK rules, including those on outsourcing. For impact assessments, see our sister site's DPIA guide. This section is general information, not legal advice.

A 10-step implementation checklist for your developer brief

From Google and Meta documentation (November 2026). Order matters: consent first, deduplication before go-live.

  1. Pick 3-6 events to optimize for (Purchase, Lead, CompleteRegistration) and their data source.
  2. Fix consent first: a working CMP, with consent mode set in the web container.
  3. Set up the server container with at least two production instances, billing alerts, and request logging off (Google logs every request by default, costly above about 1 million a month).
  4. Map a first-party domain, same-origin if you can, and check how its DNS resolves.
  5. Point the Google tag at the server; the /healthy endpoint should return "ok".
  6. Set up Meta CAPI with the same Pixel ID and an access token from Events Manager.
  7. Add a matching event_id in the Pixel and CAPI, plus external_id on every event.
  8. Hash what needs hashing. Normalize email and phone, then hash them with SHA-256 (phone with country code, no leading zero). IP, user agent, fbc and fbp stay unhashed and must be the visitor's.
  9. Turn on enhanced conversions: accept the data terms, pick one method, and don't mix tag and API.
  10. Test, then reconcile for 14 days with GTM Preview, Meta's Test Events and enhanced conversions diagnostics.

The reconciliation formula, per platform: gap = 1 − (conversions recorded by the platform ÷ valid backend transactions). Our 14-day window is a method, not a platform rule; Google says enhanced conversions show their impact after about 30 days. Track it as a fixed line on your board dashboard in Looker Studio.

Which mistakes make the data worse instead of better?

The most damaging is double counting: the Pixel and CAPI run without an event_id, or browser and server generate their own IDs. Meta doesn't remove duplicates that come from a single source.

The second is a consent leak: server tags send full data after a visitor declined, because the status wasn't passed on. Steps 7 and 8 above prevent server-IP and hashing errors.

For browser-side basics, see how to install the Facebook Pixel on a website (2022), and check that your ad landing page fires the Lead event at the right moment.

Frequently asked questions

Is server-side tracking legal in Indonesia?

Yes, if the processing has a lawful basis under Law No. 27 of 2022. For ad measurement, explicit consent that meets Articles 21 and 22 is the easiest basis to document, and a server doesn't bypass it: the choice is still made in the browser. This is general information, not legal advice.

Does the Conversions API replace the Meta Pixel?

No. Meta's documentation (November 2026) recommends sending the same events through both, with one Pixel ID, and merging the copies through a matching event_name and event_id. The server copy catches events the Pixel misses and can carry offline events from your CRM.

Is the Conversions API free?

The Meta pages we read list no price for the Conversions API itself. You pay for infrastructure: as of November 2026, roughly Rp 230,000 to Rp 3.6 million a month depending on route and volume (Cloud Run can reach about Rp 8.2 million at full autoscaling), before developer time.

How many conversions does Meta need to optimize?

CAPI doesn't change Meta's learning-phase rules; it changes how many conversions get recorded. We don't quote a threshold because we couldn't verify one on Meta's source page. If an ad set stays stuck in learning in Ads Manager, merge ad sets or optimize for a more frequent event.

Does server-side tracking get around ad blockers?

Partly. Browser ad blockers can't block data your server sends to Meta or Google, as Shopify's help page notes for its Conversions API path. The browser script that feeds your server can still be blocked, though, and a declined consent must still be respected.

To see how far your ad platforms drift from real transactions, our Performance Marketing team can map the gap and plan tracking that fits your consent setup.