Valid App Growth

How He Set Up Mobile Attribution 10x Faster With Claude Code

Valid

Use Left/Right to seek, Home/End to jump to start or end. Hold shift to jump forward or backward.

0:00 | 43:37

Learn how to set up mobile attribution 10x faster with Claude Code! 📈 Achieve profitable & scalable growth through paid ads here ➡️ https://perspectivefunnel.co/6983af76f4d6ec0083341606/698b94e6dfdc8963496731d6/

Radu integrated Adjust's SDK, mapped Superwall events, and built out an entire mobile attribution stack as a first-time mobile developer by leveraging Claude Code to do the heavy lifting. In this episode, he and Adjust's Nicolina Strom Jensen reveal why grounding Claude in real documentation is the difference between hours and weeks, when to use SDK events vs server-to-server, and how to debug attribution events without losing your mind. If you're building a mobile app or trying to integrate your marketing tech stack faster, this is the playbook you need.


If you're running Meta ads for a mobile app, this episode is a must-watch.

Subscribe for future episodes where we break down real growth systems, performance frameworks, and AI-powered marketing.

SPEAKER_02

Utilize and leverage Cloud Code to just 35x the speed of one, just building the app itself, and two, integrating all detribution tech stack and just marketing tech stack in general.

SPEAKER_00

Claude is really, really good as long as you give it very specific instructions and you keep a close eye on what it's actually doing. As a first-time mobile dev, I don't know what an MMP is, I don't know what revenue tracking looks like. And so Claude was able to explain that data flow to me and give me the context.

SPEAKER_03

First, you have to know what events you want to track to begin with. Focus on events that tell the story of how good your advertising campaigns were and bringing in valuable users.

SPEAKER_02

Today we have Nicolina from Adjust and Radu from Valid joining us as guests. I'm Diego, one of the performers and marketing directors here at Valid, and I will be hosting you guys today. We'd love to get just a minute or two of intros from each of you just to get started.

SPEAKER_03

I will start, ladies first. My name is Nicolina Stromjensen. I am from Adjust. I work at Adjust for, I've been there for eight years almost, and I started as a technical account manager, then I moved over and started our program management team, working closely with our engineering and product teams. And now I focus a lot on bridging the gap between product and engineering and our client-facing teams. And so I have the joy of spending a lot of time with prospects and clients talking about our products and giving demos and helping with uh product adoption. So yeah, it's been a fun journey.

SPEAKER_00

Great. Thank you. Um nice to meet you, Nicolina. I'm Radu. I've been with Valid for uh almost six months now. Um I'm a software engineer and I work on anything from our data ingestion platforms to our uh interfaces for clients, um AI analytics and insights to figure out what's going on in our ad accounts, what is performing well and what's not performing well. Um and I helped power the tools and the systems that our marketers use on a database basis to uh support a client. So recently I worked on a project um that involved valid mobile app, and I got to work hands-on with the just and uh learn about attribution and event tracking and uh the different methods of getting that data into uh the system. So excited to talk about that, talk about my experience and uh learn more from you guys.

SPEAKER_02

Uh great. This this episode's uh will this this content will be about um using AI, specifically cloud code, to help integrate an MMP SDK, uh map events, uh map events from other analytics platforms such as Superwall, um, and just speed up the process, you know, delegate the heavy lifting to the cloud, and all of this under the context of a great software engineer like Radu, but who wasn't particularly specifically an app developer engineer. Um so uh he utilized and leveraged Cloud Code to just 35x the speed of one, just building the app itself, and two, integrating all the attribution uh tech stack and just marketing tech stack in general. Um you know the the final piece of context is Valid, as you know, we we are a performance marketing tech enabled uh company. We work at the media buying, you know, performance marketing agency at campaign management. We also have a creative offering, but we are product enabled. We have our own product in in our office in San Francisco where RADA sits, and we decided a couple months ago to build our own mobile app to learn from firsthand uh how it is to you know decide on a monetization model, branding, onboarding flow, um, events, and all that app growth strategy that we help our clients build. We grow apps for a living, so we decided let's learn firsthand by building our model app. Um so the episode is about leveraging cloud code to lower the barrier of entry on integrating all your marketing tech stack, particularly one of the biggest uh hurls out there, which is mobile attribution, right? With with Adjust, which is one of our preferred um MMPs. A lot of our clients, if not most of them, use Adjust. We love it. Um and that's essentially the context. So let's let's just uh get started. Um, Radio, with you. I would love to just get a sense of if you can just share what were the biggest you know surprises, those both positive and negative, when you were used Cloud to first build the app, you know, it was a very it's a very relatively simple, simple app, single feature app. Um but while you were building the the whole the whole app and then mapping all the integrating all the tracking SDKs and mapping the events, what were some of the positive, negative um surprises things you learned?

SPEAKER_00

Yeah, Diego. So Claude is really, really good as long as you give it very specific instructions and you keep a close eye on what it's actually doing. Um one of the positive surprises that I had was how good it is at reading documentation and following that documentation pretty faithfully. So uh, for example, when I wanted to integrate with the Adjust SDK, all I had to do was drop a link to the Adjust docs and it went, it crawled, it read everything, and it had a good picture. But when I tried doing it without that step, um it kind of got lost and tried strategies from two or three years ago that had since changed. So uh one surprise was like how good it is at following things if you give it docs, and how bad it is at uh remaining faithful to your task if you don't root it in some sort of ground truth like that. Um It was also really helpful for me to understand the context of why I was doing what I was doing, right? As a first-time mobile dev, I don't know what an MMP is, I don't know what revenue tracking looks like, I don't know what this adjust thing is and why I have to send it events when I'm already doing analytics somewhere else. And so Claude was able to explain that data flow to me and give me the context as an engineer, even though I was unfamiliar with exactly what the ask was, like it helped me understand what this was for and how it was helping us and what the bigger picture was. Yeah.

SPEAKER_02

Yeah, and and Nicolina, we again we we advise and consult with our clients on what the best uh attribution setup is. Uh, but this was our first time, and me as a mobile marketer, as a non-technical uh growth mobile mobile growth marketer, it was the first time me being involved in the actual setup, right? Um so what what are some like, for example, using Cloud Code, we were thinking about uh mapping once we integrate the just SDK, super well SDK, um in uh like mixed panel, we were thinking of what is what was the best way to map the app level events uh for for those events to then be mapped to uh whatever app partner we would use in this case, for example, meta, right? There's a lot of options, right? Like SDK, server to server, use the third-party analytical platform events. What are some of like your recommended setups uh for an app that is just getting started sending over the attribution tech stack?

SPEAKER_03

Yeah, absolutely. And that can get that can get confusing. Um, you do have to understand your first you have to know what events you want to track to begin with, which surprisingly this is an interesting question. And when because there's different contexts, so I'll start with when you're thinking in the context of a mobile measurement partner like adjust, you're wanting to focus on events that tell the story of how good your advertising campaigns were and bringing in valuable users. And so when you're measuring with a mobile measurement partner, you're not looking at all of the activities that can possibly happen within your app. You're wanting to focus on the key indicators that show valuable users whatever that means for you. So obviously, every different vertical has different types of events that tell that story that help uh marketers optimize their campaigns, right? So the first step is really understanding okay, which events do I want to track that tell that story, and then understanding how are those events triggered and what kind of information needs to be sent with those. So in the context of you're talking about a subscription uh app, then you've got a couple nuances. So traditionally, we have in the SDK, you can track any event when the user is playing a game or interacting, has the app open, is performing some sort of function, the SDK can pick up that event in real time. We also have functionality where if you're offline, it'll save it and send it when it's online again and things like that. But when you start to have something a little bit more nuanced with how we function with subscriptions, because a lot of times in our world, you the actual user has a, you know, start a trial. And then it's the typical, okay, your trial lasts seven days or 30 days or whatever it is. And then it will generally auto start your subscription. And so that means that the user isn't necessarily in the app, actually open, doing something, saying, Yes, start my subscription. And so we have to cover for that. So in that case, it's not convenient to have an SDK event trigger because it's kind of happening in the background. And that's where you start to have the importance or relevance of S2S events. And there are many other reasons. Sometimes people just prefer to send S2S events. But this was a major use case for S2S events, is the example of okay, a trial started, the subscription starts automatically, and so the marketer um knows the subscription started so they can send that information to adjust server side so that we can track it in real time and associate it with that user. When you have subscriptions, though, you also, like you were mentioning, you've got partners like Revenue Cat, Superwall, who are managing um managing subscriptions, managing paywalls, and have these kinds of services. And so in that case, you know, we also part partner with them to be able to receive the events that you know, marketers are already integrated with them. They have that the management of those events happening. And then we have the opportunity to just have them, those through SuperWall or the others send us the events um, typically server-side, because again, the timing uh is is is important. Uh so so yeah, so you kind of have to understand first what do I even want to track and why? And is it is it the valuable events? Then how do they trigger what happens, what kind of information needs to be sent with them, and then also am I working with another partner that manages some element of this? And then to ensure that all of that information comes back into adjust through S2S typically with those um those integrations, and and then we are able to continue to do the mapping to that attributed install so that our um clients can then see, okay, I've got this campaign, this meta campaign, brought in this many users. Now I can see they this many of them started a trial, this many, you know, then turned into subscription or a renewal, et cetera, et cetera, and be able to then make those most important, those optimization decisions on their campaigns and where to spend their marketing budgets.

SPEAKER_02

Gotcha. That's actually uh, I mean, you you skipped through one of my questions I wanted to ask. Sorry, specifically a trial converted. And then we actually get asked this question by all of our clients. Um most of our clients are subscription apps. Um, and um, a lot of them have a free trial, some are hard paywall, you know, the direct purchase. Um, our particular app actually was a hybrid, you know, it has a three-day trial for the yearly plan, annual plan, but then monthly has a uh no trial, so direct purchase. Um I'll touch into this hybrid approach of of the of a paywall, of a I call it a hybrid paywall, well, but it's not an official term. But on trial converted, which is a very, very important topic we get asked a lot. Um, essentially, correct me if I'm wrong, what happens is if we map the uh SDK event for trial start and trial converted, the trial start will fire when the trial starts. The app is launched and the user is live on the app. But then when the trial converts automatically in three days, seven days, six months of days, the app doesn't have to be launched. The phone can be off, the user can be asleep, and that means if it's an SDK event, the trial converted uh post like one fire immediately after it converts, it has to it will wait until the next time the user opens the app, right? And that can be one day, two, five days, or maybe they just go forget for a month, right? And that that does two things. One, it limits the thing that we feed back to an art partner, like meta, TikTok, Google, right? And we have a limited view of our conversions that we are actually driving through our campaigns, but then something I just want your confirmation is when the user does open the app, let's say they start a trial on Monday, two-day trial, so then Thursday, if there's a it's a trial converted, but the the user takes another two days to open the app. So on Saturday, they open the app. That trial conversion event will be attributed to Thursday, right? It will be rejobed because we rejobed from the backfield to Thursday. It won't have to happen on Saturday.

SPEAKER_03

Yeah, it would it would have the timestamp from Thursday, but we wouldn't, but then in if you looked in our logs, we received the event on Saturday or Sunday, whatever.

SPEAKER_02

Yes, yeah. Yeah, this is a very important question, and something we try to set as a decision deciding fact deciding factor for using ADK or uh server to serve as to res events.

SPEAKER_03

Yep, exactly. That is definitely the consideration.

SPEAKER_02

Yeah. Um, me and Radio were we were mapping the the you know the hybrid paywall, you know, trial for yearly, direct purchase for monthly. We were struggling to not struggle, but we were deciding what what are the best ways to map both the app level events and then the partner events. What are some of the like the most common cases you see for apps that have this type of paywall? Subscription apps.

SPEAKER_03

Mapping in terms of oh, do do other clients map it that way?

SPEAKER_02

Yeah, yeah, just like the way they map uh you know, they have a three-day trial or seven-day trial for yearly, but then a direct purchase happens on day zero for monthly or weekly. Um what have you seen as like the best for us to practice on mapping both app events and then tie them to a partner event in a just uh I see.

SPEAKER_03

Yeah, I mean, I've seen kind of a whole mix of different subscription approaches. Um I actually the this uh the hybrid I've I've seen or similar where if you do the yearly, you get a little bit longer trial, or if you do, you know, different things. Um I've I've seen, I mean, some some apps just they have a trial that like one option, you know, the trial is three days, then it's a subscription. Um, and I think I honestly see that mo most often is there's a very strict you don't really have choices. Um but uh but yeah, but then mapping it to partners is pretty easy. So whatever we're we're tracking, whatever of events you've set up, um we receive that, you know, trial started, or it's a you know, yearly subscription, monthly subscription. Um once we receive that event, when you're setting up your partners in in the adjust platform, you choose which events you map to each partner and what they are sent. And so for Meta, for example, you would just um it's pretty easy in dropdowns, you select, you know, here are my five events, and then you map them to some kind of equivalent uh or whatever makes sense to you that you can then read it on the Facebook side of of what they what they would call that same event. Um, and then when it's triggered and when it's attributed to their campaigns, we send those those events along for and then it's in their systems for optimization and and and such. So the mapping to partners is the is the easy part.

SPEAKER_02

It's easy, it's a front end, and it's what us markers do usually, right?

SPEAKER_03

Yeah, yeah, and it's and it yeah, it's it's it's front end and it's usually just drop downs and saying this goes to this, this goes to this, this goes to this, and um, and you can set it exactly for and forget it.

SPEAKER_02

Yeah, I want to take the conversation back again to uh using cloud code for attribution setup. Um I'm sure you you see or you get asked uh a lot of questions about uh testing events, Nicolina. So Ricardo, I would love to for you to share what are some of the you know hassles you had when you were testing uh the SDK events or all the events you mapped and adjust before pushing uh the SDK live to production, right? Before pushing the app release to Apple, because we know like we're we were constantly testing onboarding flows, paywall, um, and you know making sure an event is actually defined correctly before pushing the SDK live uh or the new app release live to Apple is very important because if not, we need to set up a new app build, right?

SPEAKER_00

Yeah, I think um the most helpful tool that I found for this was the testing console within Adjust, where um Adjust has an app that you can install and you get your device's advertiser ID, and then you can send that to yourself and paste it into the Adjust console and see a list of uh all the events that they had received from that user. And that's the closest to real-time troubleshooting tool that I was able to find because it's a little bit uh tricky to see whether or not an event you have has fired due to the number of different ways you can be running your app as a developer. Um we were using something called Expo, which is a framework on top of a framework called React Native, which is a framework on top of Swift UI by Apple, which is a framework on top of iOS uh from the beginning of iOS development. So all these layers have their own like way to run the app and their own debugger tool and sandbox. And uh if you're running it in like test flight, that's very true to what will be actually on the device. But if you're running it in your little browser simulator for expo, um that's gonna be a very different environment from what will actually run on an iPhone or Android. Um and that as a variable was very confusing to pin down. Um the testing console, though, was the best thing we found to actually debug. Okay, what did Adjust receive? How does it interpret what it received, and what do we need to fix?

SPEAKER_02

Yeah. And the another um alternative is also, which is probably the least real-time and accurate, is just going to adjust uh reports dashboard, setting the the environment to sandbox instead of production, and just see if you're seeing that it's fire, but those are not necessarily real-time, right? Um yeah.

SPEAKER_00

And then there was the naming confusion, for me at least, between adjust sandbox and running an app in sandbox mode for developers. And it's like, okay, does this automatically turn on that sandbox, or do I need to turn on two sandboxes that are independent of one another? Um, but yeah, Claude was able to weed do that.

SPEAKER_03

Oh, I was I was gonna ask, uh, just hearing you talking about the different layers and sandbox. So did you end up, was it easiest to do in test flight? And then and Claude code was able to clarify that the adjust SDK has a sandbox mode and a production mode, and you were testing in the adjust uh sandbox mode?

SPEAKER_00

Or yeah, so the easiest way that we actually found On to test it was to run it outside of test flight to run it just in the uh iOS emulator and then use adjust without uh sandbox mode. Just use adjust as if it were like testing in production and go through the testing console and see what events were actually received and um kind of ignore the adjust sandbox was my preferred approach. But yeah.

SPEAKER_02

Right, I I I remember that I mean we set a lot of uh like in app events, uh right, in app actions, like onboarding complete, sign up, paywall view, troll started. I remember when we were testing these events, let's say out of five events, three were firing, and we you you use you utilize cloud code to troubleshoot the couple that weren't. For example, we were seeing onboarding complete and troll start, but we weren't seeing registrations or signups. Can you share about how you use cloud code to like troubleshoot what was the issue on each event that wasn't firing?

SPEAKER_00

Yeah, so our app's onboarding was controlled in a pretty modular way where we had a list of components that would get instantiated for each page of onboarding, and then some events that would fire as the user progressed through them. Um so that's where Claude kind of integrated the adjust events was whenever we would hit an onboarding page in our onboarding controller that had a certain ID, it would flag the event for that page. Um and that was great. Um more often than not, the problem was our onboarding flow like being out of order, or Claude missing up things in the app while he was trying to um like change parts of the onboarding and then forgetting to update the adjust event that was tied to that onboarding page. Like we had an onboarding with, I don't know, 28 screens, and at some point we shuffled them around, and we had an adjust event that was tied to one of those that represented a bottom of funnel relative to the onboarding. It became more top of funnel, but then um we had to go in and manually tell Claude, okay, now go find the adjust events that were tied to those onboarding pages and fix those two because we shuffled the order, make sure they make sense in terms of what's being tracked for top of funnel and and middle of funnel. Um yeah, those were two kinds of situations I ran into.

SPEAKER_02

Yeah. It's a it's an important topic because we see a lot of apps testing their onboarding for a lot. They test it either through a third-party tool, like Ravenica superwall, adaptive, or uh on their own, like back and way, hardcoding it. And we experienced firsthand how some of this, what we call the mid-final events, you know, like an onboarding complete final, sometimes there's a quiz, so it's like a quiz-completed event. Um, they get swapped around and they break when we test new onboarding flows, right? So that was a big use of using cloud code to troubleshoot those events. Right, and just while you're talking about cloud code, any any like limitations uh using cloud code to map events, test, troubleshoot events that you thought um cloud code wasn't gonna was gonna be able to manage, but at the end you might have just done it the the manual, you know, software engineering way.

SPEAKER_00

Yeah. Um one thing I will talk about here is the iteration loop. So with Claude, the the superpower of Claude Code is when it can actually evaluate what it's doing and see if it worked and then try again until it gets something to work. And it won't do that out of the box until you tell it and until you give it the tools it needs to look at your simulator or your phone and figure out does it work and interact with it, take a screenshot, look at the screenshot, and so on. But once you do that, it's like superpowers because suddenly it can you can walk away from your desk and come back with confidence that it actually did the task and verified that it worked.

SPEAKER_01

If you're in the mobile app space and are struggling with paid ads, we'd love to chat. We'll even go to your ad account and tell you what you should work on. Just head over to valid.co, click book a demo, and we'll get in touch.

SPEAKER_00

So how this um ties to adjust is like let's say you have an app with an onboarding flow and you want to make sure an adjust event is being received by the adjust testing console when a certain thing happens in your app. First of all, you have to give clawed code access to your iOS simulator that's running the app. So there is an MCP unofficially for iOS simulator. There might be an official one coming. Uh, this was a couple weeks ago when MCP was just becoming a thing. So um it's all moving very fast, but there is a way you can give clawed code access to take screenshots and swipe and tap in your simulator with an MCP. Likewise, adjust also has an MCP. I didn't use it too much, but I used browser automation where Claude was able to open a playwright browser, go into the Adjust website, open the testing console, paste in my advertiser ID, and make sure that it was getting the events. And so once I gave it access to the simulator and access to adjust, then it could check its work and keep iterating until it got the event to show up when it wanted it to. Um so that's something that I would keep like testing myself is opening it on the actual iPhone, checking the event, tapping, going, resetting everything four or five times until I figured there's gotta be a better way. And I set up this MCP connection.

SPEAKER_03

Nice. Yeah, on that topic, I have a question just you because you said you know, things are moving fast and and certain, you know, some of these capabilities are new and and everyone's you know kind of adding new capabilities to their platforms and and connections and things like that. Did you find in this you know, using our documentation uh for the for the SDK and then also just uh MCP? Um I imagine there's room that we could improve on our side because you know we've been writing our dev docs in a certain way for a long time. And I feel like now there's probably certain instructions or um uh elements that we need to or should consider including that makes it easier for a Claude Code or Codex or you know, any of these systems to to read it. Would you say that that there was any that you ran into that? Or is that is that you know, having experienced it, am I on the right track like with my thinking?

SPEAKER_00

Yeah, I think that's uh it's a really good point you bring up, but it's less of a you problem. It's more of a claude code problem. Um the documentation as you have it is great. Your docs are well written and they are accessible and a human being can follow them, which at the end of the day is what docs should be. Uh the problem is like getting Claude to actually read them before it does what it does. Like I have a saying that I operate by, and it's you need to know what you need to know before you do what you need to do. And Claude has not learned that life lesson yet. So he will just plow forward and try to implement without going and consulting the docs first. Um the important part is as a developer, you need to be careful that you actually understand like the marketing rationale of why you're tracking those events, and then you drill down to okay, how are we gonna track the events? And then you go to the implementation of okay, Claude, go track these events. Here's how. Because if you don't have the full picture and you just uh one day you're a mobile app developer and you get told to add adjust, like you're not gonna come up with something useful until you understand why you're doing what you're doing.

SPEAKER_02

Yeah, so mobile attribution is probably the key element or one of the top two, top three uh biggest elements into have a positive ROS user acquisition setup. So uh we brought in Nicolina and Radu uh from Adjust uh the technical team and our value technical team to talk about how to leverage AI cloud code and just overall best practices for attribution to um have the best thing that's fed into your ad campaigns and have the best performance raw possible. Um as a bonus question, Nicolina, um you have not under the front like planned, but we've been getting a lot of questions, and I'm personally excited about the new, I think it's like two weeks old, uh Superwall Adjust integration, right? Before that, uh in order to send superwall events into adjust, you needed a server-to-server integration. It wasn't uh you know, plug-and-play front-end like the way Romnicat or other tools do it. Now you've released it. We actually just started testing it with a couple clients. Um, anyone says or anything you want to share about that latest uh release?

SPEAKER_03

Yeah, I mean it's so yeah, at the moment it's still kind of unofficial, official, because they're still working out the the kinks. Like you said, it's it's a couple weeks old. We had one of our um amazing implementation engineers kind of did the first stab at putting out the spec, has been working with the superwall team uh specifically on one of our mutual clients to get them set up on SuperWall and being able to ingest their their subscription uh events and and the paywall activity. So so yeah, I mean I I um think that it's exciting because it's it's I know that superwall is growing and we've had actually a lot of clients recently um mention them and and leveraging their their tool. I think the next step on our side that I'm aware of is the the spec and and such has been kind of passed on to our larger integrations team to formalize um everything, and then hopefully soon we'll have actually you know public documentation on okay, this is how the integration works, and and you know, as we've learned here, the good documentation is important so that you can um you know put it into those tools, uh and as just a human to be able to read it and understand. So so yeah, so that's so that's in the works. And yeah, we were very excited to to be the first MMP uh integrating with them. And uh it's been it's been a joy to see uh things come to fruition, especially with the one of our new our one of our new clients.

SPEAKER_02

As a marketer, uh, this is a very important uh like just milestone because we a lot of our clients ask us, you know, they they try their onboarding flow performance on like superwall and they ask us how can we match uh more closely our superwall conversion events to our JavaScript conversion events, right? Um I'm trying to get like a clearer picture of um the overall app, you know, metrics and drop-offs versus our attributed uh drop-offs to basic media. And stitching the two together, I think with this new integration, it'll be much, much easier.

SPEAKER_03

Yeah, no, absolutely. I mean, the most important thing is to try to get as accurate a data as you can. And when you have uh the integrations where we're receiving exactly what they're tracking, then you've got numbers that you can trust much more, and then being able to tie that to your attribution data and feel confident in in what you're seeing, and then being able to optimize off of that is is what's really key and important for uh at the end of the day, ROAS or LTV um metrics that you're that you're working towards.

SPEAKER_02

Yeah, I agree. Uh we're getting close to um ending up the episode. Any last comments or questions? Anyone want to share cloud code attribution related?

SPEAKER_00

I have a question uh for Niklina. So as a as a developer, I often struggled to know whether I should come up with uh or whether I should send an SDK event or an S2S event to adjust for a given action. Is there a rule of thumb or a guide to like, hey, aren't our server knows this happened? The app also knows this happened. Um, it's probably more reliable for the server to server to send it, but it's probably faster for the app to send it, or what does that trade-off look like?

SPEAKER_03

Yeah, that's a great question. Um, for me, what I've seen is that for the larger ecosystem and accuracy um and reliability, I'm a fan of anytime you can use the SDK that you should have SDK events. Um, but that really is events that your users are open, they have the app open, they're completing it. They're um and yes, okay, sometimes they could be maybe in airplane mode or something, um, and offline, but it's the because you get the reliable information and and um parameters from the SDK, I find that to be also easiest. And I and a little bit looking back to my technical account management days is that it's also just easier to troubleshoot. Um there's you know just some more information and um that we can that we can uh look at and and discover. But so I would say primarily if the user is completing the action themselves with the app open, that you should use SDK events. If it's something like we were discussing earlier, where it'll happen automatically in the back end and it doesn't require the user to actually trigger, then using an S2S event is is important because it's a timing issue and you want to have that data as soon as possible. Um, because in the example that Diego was giving earlier, like it the renewal or the subscription start started on a Thursday, the user didn't open the app until Saturday. So now you've got a two-day delay on getting that that information about that user and ultimately the attribution. Um, but that all being said, it does sometimes come down to um the preference of the marketer because there's for one example, uh a big example of um uh why the difference between an S2 event and an SDK event is if you have if you're adding an event that you want to start tracking, if it's SDK, then you have to add it into the SDK code, you have to re-release your app, all your users have to update the app, you know, and then there's that delay of how long it takes for all of the apps to be updated in the ecosystem. Whereas an S2S event, you just you don't have to do any of the coding, you don't have to re-release your app. And so then you start to get into more of these nuanced situations where you're weighing other factors in on deciding on certain events. Uh so it's easier to change S2S events because you don't have to worry about the code. Uh so I we have clients who, when they first get set up with Adjust, they do their, they have their SDK events for you know everything that they know at that moment, like the common events that users are completing. And then after that, they start to do S2S events when they're you testing out different features within their app, and then they want to see if that, you know, tracking that helps them in making marketing decisions. Um, so then they can they have that flexibility because it doesn't involve the code.

SPEAKER_00

Yeah, I I'm drawing a parallel here to our system ingests um metrics for ads, like performance and engagement metrics for thousands and thousands of creatives across different platforms. And we get those responses back in formats that are different from each provider, be it Meta or TikTok or Snap or Google, whoever's sending us payloads. And we have a complicated way of you know mapping those to our internal names and unifying those into uh a payload that we can understand and process. But what we're finding more and more is that uh at the end of the day, we're always gonna be changing what we care about. And we're always gonna be changing what events we care about out of the history and trying to go run a backfill and trying to then go make the old data work with the new way of looking at it. And uh mix panel, mix panel solved this beautifully with their auto checkpointing and their auto-recording because when I put the mix panel SDK into an app or a website, it will record any click on any generic element, and then I can come back and filter it later based on okay, I have a huge data volume now, and maybe it's slower, maybe it's more expensive, but I can come back and I can say, retroactively get me the clicks on these buttons, and I don't have to come in and map the event. Is there anything that adjust is is looking at down the roadmap or has explored already with automatic tracking or like retroactive tracking that doesn't need an event to be explicitly sent and mapped, like a pull instead of a push-based?

SPEAKER_03

Yeah, um, that's an interesting idea. Not that I know of. I think because from and I think from our perspective it's it's challenging, right? Because to your point, you can kind of you change what you care about. And suddenly, oh, well, now these are our KPIs versus these were the core of our business. You know, you make updates in how that functions, different features and all of that, and and different focus. And so to cover that, what you're describing would be extremely beneficial. Then on our side, part of the challenge is understanding that from an MMP side, we're not focused on all of the behavioral, every nuanced activity within the app. We're focused on what activities lead to return on investment. And and so you don't want to be to have a glut of data that you're sifting through in order to make your marketing decisions. You want to have it narrowed to these are the key indicators and activities that users perform that will return my investment on you know the ad spend that I that I spent. So it's kind of trying to find that balance. Um and you know, we we love big data sets, but at the end of the day, we also, you know, you don't want to get too distracted by more nuanced events or engagements of of your users. And so I think it's that it's an interesting, it's an interesting idea. I I should I should find out if if anyone's you know thought about that. Um but I think that's what be my initial reaction is like you know, we're trying to focus, focus it on, you know, these are the these are the directional events that let our marketers understand that they spent their dollars well, or how to shift their budget, shift their um the camp the type of campaigns or you know, explore other markets um and what brings them, brings them that return.

SPEAKER_00

Yeah, I think that's a a really good takeaway for listeners, actually. And I'm glad that we we talked about that, is just because we're saying now you can map a lot more events in a just with Cloud Code doesn't mean you always should. And it in it means now more than ever, you should think about what events really matter to you and and what matters from a business perspective rather than just throwing everything at the wall now because you can. So thank you for highlighting that.

SPEAKER_02

Great summary, guys. Um we're reaching our end, so I just want to wrap things up. Thanks a lot, Nicolina and Radu, for joining the Valley Podcast, the better word attribution. As you know, we could stay to speak about this for four hours and wouldn't even scratch the surface. So uh it's definitely a complex topic. We are gonna do more episodes on overall mobile attribution uh and more specific issues later, but it this is a great start. So thanks for joining, and uh I'll catch you later.