Best Practices

Server-side tag manager or reverse ETL: Which one should you use? | Census

Timo Dechau
Timo Dechau November 10, 2022

Businesses need data to need to drive more conversions. But expectations and regulations around user privacy are rising – and rightfully so – which can make it hard to meet both performance and privacy needs. That, paired with all the buzz around reverse ETL might have you wondering:

Should I add a server-side tag manager or reverse ETL to my stack?

What about both? 🤔

In order to answer this question, you need to compare your options. 

Wait a second, we can compare server-side tag managers and reverse ETL?

Yes, we can. Allow me to explain.

But first, let’s start with some definitions to make it easier for us to draw comparisons between both solutions. 👇

What is a server-side tag manager?

Let's start with what you can do with a tag manager in general (client- and server-side):

  • It's a central place where you define which destinations you want to send data to
  • You can define when something should be triggered in the code of your website (i.e. if someone clicks on "add to cart")
  • Everything happens in real-time. User interaction triggers a tag, and the data is immediately sent.

Server-side tag manager flow diagram
Server-side tag manager flow diagram

Now, what makes a server-side tag manager different from a client-side tag manager?

There’s one key difference: The client-side tag manager runs in a user's browser, while the server-side tag manager runs on your server.

What does that mean for you? Code that runs in your browser is inherently less reliable since your browser can block things, or the network connection can be reduced.

Also, it can allow advertisers to inject faulty Javascript in their code (that you add in the tag manager) and send your data to different places — especially places you likely have not agreed to. Or it can track form inputs, user interactions, and submissions and collect sensitive business data.

Ultimately, the server-side tag manager gives you more control over your data because:

  • You send the data to a defined API endpoint and not to places you don't know about
  • You can remove data you don't want to send to ad platforms (like your personal information).
  • You can load and send data asynchronously to reduce the load from the browser
  • You can enrich data with sensitive information (like profit margins of products) without it being visible to website users

While client-side tag managers reside in your browser (less secure), server-side tag managers reside in your server (more secure)
While client-side tag managers reside in your browser (less secure), server-side tag managers reside in your server (more secure)

Right now, however, the server-side tag manager still needs the client-side tag manager because 

  1. Not all ad platforms support sending data from the server side
  2. Some data is only available on the client side (like scrolling)

So, today, you'll always see both versions working in tandem. The client-side tag manager collects user interaction and sends it to the server side, and from there, the data is sent to the final destination (analytics, ads, CRMs).

What is Reverse ETL?

Reverse ETL describes the process of loading data from an analytical database into destinations (like CRMs, customer service, and other databases). So, what makes it reverse? ⏪

History. Classic ETL loads data from sources like an application database or a CRM in an analytical database; reverse ETL is now the other way around. In the end, both are ETL, but the "reverse" descriptor identifies the specific process from the analytics database to a destination.

Unlike classic ETL, reverse ETL extracts data from your warehouse, transforms it so it plays nice with the target destination’s API (whether Salesforce, HubSpot, Marketo, Zendesk, or others), and loads it into the desired target app. 🎯
Unlike classic ETL, reverse ETL extracts data from your warehouse, transforms it so it plays nice with the target destination’s API (whether Salesforce, HubSpot, Marketo, Zendesk, or others ), and loads it into the desired target app. 🎯

Here’s a simple example of what you can do with a reverse ETL product like Census:

  • Identify and gather the data you want to send to a destination, either by selecting a table or by writing a SQL query
  • Select the destination this data should be sent to (like a CRM)
  • Define the identifier in the destination the data should be matched against (like the customer ID)
  • Define the fields to which the column values of the query should be added
  • Run the sync and schedule it (this is usually done in batch runs)

How server-side tag managers and reverse ETL compare

As you’ve probably noticed, server-side tag managers and reverse ETL deal with similar concepts. But which one is better for your use case?

Source data

In the server-side tag manager, we get the initial data from the client-side tag manager which collects it from the website. The downside is that this data is often limited to what is visible on the website. 🔍

In reverse ETL, we get the initial data from the analytical or application database by running a query which can be extensive depending on what data has been added to the database.

What can happen when you pull your data straight from the warehouse? Check out how Coalition uses reverse ETL to provide secure, clean access to data.

Tag managers pull your source data from your browser whereas reverse ETL pulls it from your single source of truth: Your data warehouse. 🌟
Tag managers pull your source data from your browser whereas reverse ETL pulls it from your single source of truth: Your data warehouse. 🌟

Destinations

The server-side tag manager maps the data to the destination's endpoints based on their API definition. But to do the mapping, you may need to write some custom Javascript code. Also, the server-side tag manager can send data using predefined configurations (aka tags) to custom HTTP endpoints (not supporting complex authentication).

Similarly, reverse ETL also maps the data to the destination's endpoints based on their API definition. To do the mapping in this case, you’ll usually need to write a custom SQL query.

It can also either send data to predefined configurations (AKA destinations) or to a custom destination using Census's Custom Destination feature.

To see how this works in the real world, check out how Prolific supercharged its new Sales team with data in Hubspot using Census.

While both tag managers and reverse ETL map data to the destination
While both tag managers and reverse ETL map data to the destination's endpoints based on their API definition, tag managers use tags (hence the name) while reverse ETL uses configurations.

Syncs and schedules

The server-side tag manager runs based on requests. When the client-side tag manager sends data, the server-side tag manager passes it on to the destination in real time. But it can only pass on the data it gets (with small enrichments); there’s no way to do historical syncs.

Also, the server-side tag manager has no fail handling. When a request fails, it can't be recovered and retried, so constant monitoring and alerting are essential. Unfortunately, though, it doesn’t come with these features out of the box. 📦

On the other hand, Reverse ETL usually runs in batches at defined times — commonly, this is every hour or every night —and it can sync all historical data into the destination and continue to update incrementally based on inserts and updates. Plus, with Reverse ETL, there are usually options to implement fail handling, like retries and validation – and it even comes with inherent monitoring and alerting as an added bonus.

Curious about how these alerts work? See how Bold Penguin reduced support response times from 24 hours to 30 minutes with operational Slack alerts. If you’re more interested in how automated syncs can benefit your team, learn about how Guru saved its team 8 hours per week with Census.

Tag managers are known to sync your data in real-time while reverse ETL operates using scheduled syncs
Tag managers are known to sync your data in real-time while reverse ETL operates using scheduled syncs

Okay, so when should you use server-side tag managers and when should you use reverse ETL?

As you probably gathered, there are three significant differences between the two:

  • Server-side tag manager can handle requests in real-time and pass the data to the destination
  • Reverse ETL can load historical and more extensive data
  • Reverse ETL can ensure data sync and delivery

So, let's break this down into actionable use cases:

👉 Use server-side tag manager for all things that need streaming in real-time (like tracking events) or near real-time (like welcome emails). You could also use this for onboarding notifications, but primarily use it for tracking purposes.

👉 Use reverse ETL to sync extensive data regularly to a destination. If you use it for data enrichments like enriching your CRM with usage, financial, or configuration data, you can re-use it for better pipelines and targetings.

  • Your sales team can use enriched contacts data in Hubspot when you extend it with usage data, such as logins or features used. This enables them to make decisions about priorities based on a prospect's intent to buy and create marketing automation based on synced data.
  • Your support team can work with extended product usage and customer data to make better decisions about priorities and act on more context that usually needs to be pulled together manually.

As you can see, both services can go hand-in-hand and cover different use cases. 🤝 For example, the tracking data that the server-side tag manager collects can be enriched, qualified, and then passed on to a CRM with reverse ETL to see if a lead has checked the pricing page at least four times.

TLDR: It makes sense to invest in both products to pass data from different sources to different destinations. Bringing the right data into the tools where your different teams work every day can unblock extensive productivity gains.

✨ Want to start operationalizing your data to unlock its potential? Book a demo with a Census product specialist.

Related articles

Customer Stories
Built With Census Embedded: Labelbox Becomes Data Warehouse-Native
Built With Census Embedded: Labelbox Becomes Data Warehouse-Native

Every business’s best source of truth is in their cloud data warehouse. If you’re a SaaS provider, your customer’s best data is in their cloud data warehouse, too.

Best Practices
Keeping Data Private with the Composable CDP
Keeping Data Private with the Composable CDP

One of the benefits of composing your Customer Data Platform on your data warehouse is enforcing and maintaining strong controls over how, where, and to whom your data is exposed.

Product News
Sync data 100x faster on Snowflake with Census Live Syncs
Sync data 100x faster on Snowflake with Census Live Syncs

For years, working with high-quality data in real time was an elusive goal for data teams. Two hurdles blocked real-time data activation on Snowflake from becoming a reality: Lack of low-latency data flows and transformation pipelines The compute cost of running queries at high frequency in order to provide real-time insights Today, we’re solving both of those challenges by partnering with Snowflake to support our real-time Live Syncs, which can be 100 times faster and 100 times cheaper to operate than traditional Reverse ETL. You can create a Live Sync using any Snowflake table (including Dynamic Tables) as a source, and sync data to over 200 business tools within seconds. We’re proud to offer the fastest Reverse ETL platform on the planet, and the only one capable of real-time activation with Snowflake. 👉 Luke Ambrosetti discusses Live Sync architecture in-depth on Snowflake’s Medium blog here. Real-Time Composable CDP with Snowflake Developed alongside Snowflake’s product team, we’re excited to enable the fastest-ever data activation on Snowflake. Today marks a massive paradigm shift in how quickly companies can leverage their first-party data to stay ahead of their competition. In the past, businesses had to implement their real-time use cases outside their Data Cloud by building a separate fast path, through hosted custom infrastructure and event buses, or piles of if-this-then-that no-code hacks — all with painful limitations such as lack of scalability, data silos, and low adaptability. Census Live Syncs were born to tear down the latency barrier that previously prevented companies from centralizing these integrations with all of their others. Census Live Syncs and Snowflake now combine to offer real-time CDP capabilities without having to abandon the Data Cloud. This Composable CDP approach transforms the Data Cloud infrastructure that companies already have into an engine that drives business growth and revenue, delivering huge cost savings and data-driven decisions without complex engineering. Together we’re enabling marketing and business teams to interact with customers at the moment of intent, deliver the most personalized recommendations, and update AI models with the freshest insights. Doing the Math: 100x Faster and 100x Cheaper There are two primary ways to use Census Live Syncs — through Snowflake Dynamic Tables, or directly through Snowflake Streams. Near real time: Dynamic Tables have a target lag of minimum 1 minute (as of March 2024). Real time: Live Syncs can operate off a Snowflake Stream directly to achieve true real-time activation in single-digit seconds. Using a real-world example, one of our customers was looking for real-time activation to personalize in-app content immediately. They replaced their previous hourly process with Census Live Syncs, achieving an end-to-end latency of <1 minute. They observed that Live Syncs are 144 times cheaper and 150 times faster than their previous Reverse ETL process. It’s rare to offer customers multiple orders of magnitude of improvement as part of a product release, but we did the math. Continuous Syncs (traditional Reverse ETL) Census Live Syncs Improvement Cost 24 hours = 24 Snowflake credits. 24 * $2 * 30 = $1440/month ⅙ of a credit per day. ⅙ * $2 * 30 = $10/month 144x Speed Transformation hourly job + 15 minutes for ETL = 75 minutes on average 30 seconds on average 150x Cost The previous method of lowest latency Reverse ETL, called Continuous Syncs, required a Snowflake compute platform to be live 24/7 in order to continuously detect changes. This was expensive and also wasteful for datasets that don’t change often. Assuming that one Snowflake credit is on average $2, traditional Reverse ETL costs 24 credits * $2 * 30 days = $1440 per month. Using Snowflake’s Streams to detect changes offers a huge saving in credits to detect changes, just 1/6th of a single credit in equivalent cost, lowering the cost to $10 per month. Speed Real-time activation also requires ETL and transformation workflows to be low latency. In this example, our customer needed real-time activation of an event that occurs 10 times per day. First, we reduced their ETL processing time to 1 second with our HTTP Request source. On the activation side, Live Syncs activate data with subsecond latency. 1 second HTTP Live Sync + 1 minute Dynamic Table refresh + 1 second Census Snowflake Live Sync = 1 minute end-to-end latency. This process can be even faster when using Live Syncs with a Snowflake Stream. For this customer, using Census Live Syncs on Snowflake was 144x cheaper and 150x faster than their previous Reverse ETL process How Live Syncs work It’s easy to set up a real-time workflow with Snowflake as a source in three steps: