To SDK or not to SDK: Understanding the need for server to server
Recently there has been a surge in demand for attribution without having an SDK in place. That is, attribution done via server to server (s2s).
First up, we want to make it clear that Adjust does support s2s. However, we want to outline in this blog post why we strongly recommend you use an SDK whenever possible.
We know some clients still have reservations around integrating our SDK, so let’s take a look at some of the most common concerns for not wanting to use one — and explain why integrating SDKs remains the best way to ensure data integrity.
“What’s in the box?” — the aversion to black boxes
A general aversion to black boxes is understandable for us at Adjust — that’s why our SDK is open-source by nature and we are proponents of open-source solutions more generally. You can read more about the benefits of open-source here.
And while some closed-source evangelists argue that it’s impossible to secure an open-source SDK against SDK Spoofing, we’ve outlined how our SDK is secured against it here.
“The only thing we have to fear is fear itself” — maintaining an SDK
We’ve also heard concerns from some clients about the need to update an SDK on a recurring basis and the resulting workload for their developers. The good news is that Adjust has very long support cycles for its SDKs. Beyond that, most of the work of “maintaining” an SDK doesn’t have anything to do with the core functionality of attribution but the tracking of events.
Very often it is much easier to trigger events from an app’s backend instead of inside the app itself. It is also simpler to add or change events as a marketer’s needs evolve when it does not require an update to the app each time.
“I don’t want it” — knowledge barriers about integrating SDKs
Another common reason for requesting an SDK-less integration is a simple knowledge barrier. It’s easy to see why not integrating an SDK might seem like the best solution. After all — your BI team already has most of the data, so why not use it for attribution? How hard can it possibly be?
The main challenge with going with s2s and not using the Adjust SDK is that clients will instead write their own homebrew SDK. This comes with its own risks. Most importantly, without collecting device IDs and tracking sessions there can be no attribution. Without certain platform-specific signals like Apple Search Ads or Google Referrer, attribution and fraud prevention are severely impaired. Server to server attribution also throws up some other issues, including:
- Potential loss of data: The Adjust SDK ensures there is no loss of in-app data. Our SDK tracks in-app activity by placing it into a queue that sends data to our server asynchronously. In times of short connection outages, from 4G handovers through to times of prolonged offline activity, there is no data loss and all in-app actions will be securely persisted.
- Increased risk of fraud: Without data authentication, fraudsters can simply make up any install or events they like, a potential disaster for any big advertiser. Our SDK sends very specific and detailed information to our backend to confirm users aren’t fraudulent, so without it, clients will need to build similar protection methods on their side.
- Impairing deferred deep linking: Deferred deep linking can also be affected by s2s. While deferred deep linking without our SDK is possible, it requires the client’s backend to request the deferred deep link from our backend attribution API and relay that information down to the app.
- Taxing resources: On top of these problems, there is typically also some additional engineering overhead. Most importantly, the client’s backend needs to send data to Adjust’s server in the correct format, order and timing to make attribution work.
The Adjust SDK has evolved to collect all available data for attribution and transport it in an efficient and robust manner. Clients sometimes underestimate the complexity of performing the same operations within their app or do not sufficiently understand the potential downsides of not using the Adjust SDK.
To help clients evaluate, Adjust has provided a checklist of signals required from within the app to perform attribution for clients that want to use their own SDK. The checklist also explains the potential issues that might arise with a homebrew SDK.
But what about clients that really have no choice?
There’s no way around an SDK
It’s important to remember that there is no such thing as an SDK-less solution. App data needs to come from somewhere, even if it’s from a client-built SDK. From there the data can be sent via the client’s backend to Adjust as an s2s integration.
We do however understand that clients may sometimes have no other option than to go with s2s — and so we’ve set up a comprehensive process and documentation to support any such setup. This presents no major change in the way we think about s2s but simply expands our offering for those cases in which s2s is the only viable option.
Different MMPs’ s2s integrations might only differ in the complexity of the protocol required to communicate with the tracking endpoint, but not to overall functionality. All drawbacks and challenges are universal in nature and not specific to Adjust.
And for anyone asking themselves why exactly we support s2s, the reason why might surprise you — because it has an obvious answer: it is technically more complicated NOT to support s2s.
Given that Adjust’s SDK must be able to send data to our backend, we must be able to receive data as long as it is formatted in the same way.
We even have a special endpoint and authentication for these integrations. As long as clients follow the specifications we share with them about our session and SDK signal endpoints we can perform attribution.
The risk remains that whatever a client’s server tells us about app activity, we have to presume it is correct. And if any data, such as device IDs, is missing, there will be functional degradation.
Ultimately, we are here to help you find the best solution and get the most out of the Adjust platform. If you have any more questions, please feel free to contact us or reach out to your dedicated Account Manager, and we’ll be happy to help.