Every MMP vendor says integration is easy. Almost none publish an actual project plan with hours, owners, and acceptance tests, which is exactly why engineering leaders do not believe the claim. "Two hours to integrate" sounds like marketing, because the person saying it is not the person who has to schedule it into a release, debate the event taxonomy, and get it through app store review.
The honest answer is that the SDK itself is a small, predictable job, and everything that makes an integration feel slow lives outside the code. This is the project plan the sales deck leaves out: the full task list, realistic hours per platform, the acceptance-test log that tells you each task is actually done, and a candid section on what turns a four-hour job into a two-month one. None of that second list is engineering effort, which is the whole point.
Why "Easy Integration" Claims Fail With Engineering Teams
An attribution SDK integration is a small coding task wrapped in a larger project: the SDK install is a few hours, but event design, QA, release timing, and sign-off are what set the real calendar. Engineers distrust "two hours" because they are pricing the project, not the code.
The claim fails for three reasons:
- It quotes the code, not the project. Dropping in the SDK and firing an install event genuinely is quick. Instrumenting every revenue event correctly is not.
- It ignores the decisions. Someone has to decide which events exist and which carry revenue values, and that debate is not the vendor's to schedule.
- It ignores the calendar. Mobile ships in release trains and passes through store review, so even a one-hour change can take two weeks to reach users. An engineering lead who has been burned once reads "easy" as "underscoped". The fix is not a bigger promise. It is a plan with hours and owners, which is what the rest of this post provides.
The Full Task List
A complete attribution SDK integration has five workstreams: SDK install, event instrumentation, deep links, postbacks, and QA. Only the first is trivial, and skipping any of the others is what produces a launch that reports wrong.
The task list, in order:
- SDK install and initialisation. Add the dependency, initialise on launch with the production key, confirm install attribution fires for organic and paid.
- Event instrumentation. Implement every event from the measurement plan, including revenue events with values and currency attached.
- Deep linking. Configure deferred and direct deep link routing, and verify it survives an install.
- Postbacks and ad networks. Connect Meta, Google, and TikTok, and configure value-based postbacks so networks optimise on paying users.
- QA and acceptance. Test each surface against expected results before any spend goes live. The single biggest predictor of a smooth integration is whether the event taxonomy was decided before this list starts. When it is not, workstream two expands to fill the whole project.
Realistic Hour Estimates by Platform
Hours vary by framework, mostly because of how each handles native modules and deep link configuration. The figures below are engineering hours for the SDK and core events, assuming the event taxonomy is already agreed.
- React Native: roughly 2 to 4 hours for SDK and install attribution, plus 3 to 6 hours for event instrumentation and deep links. The React Native SDK guide covers the native-module linking step that occasionally adds time.
- Flutter: similar to React Native, in the region of 2 to 4 hours for the base and 3 to 6 for events and links, per the Flutter SDK guide.
- Native iOS and Android: the base install is comparable, but deep link configuration (Universal Links and App Links) and store-side setup add a few hours each, so budget 6 to 10 hours per platform for a complete job. Across every platform, event instrumentation and QA, not the SDK, dominate the hours once you move past "hello world". A representative end-to-end path is the Linkrunner quickstart, which shows why first data can land within a day even though full acceptance takes longer.
The Acceptance-Test Log
Hours mean nothing without a definition of done. An acceptance-test log turns "we integrated it" into "we verified it", one testable line at a time.
The log should record a pass for each of these:
- Install attribution: organic, paid, and reinstall cases each attribute to the correct source. Pass: source matches the test condition every time.
- Events and revenue: each event fires once, with correct properties, value, and currency. Pass: parameters and counts match the test script, no duplicates.
- Deep links: a link routes to the correct screen, and a link tapped before install routes correctly after install. Pass: exact destination across a device matrix.
- Postbacks: each network receives the mapped event on the correct account. Pass: the network event manager shows it. Structure the log the way the Linkrunner integration testing docs lay out test cases, and treat "probably fine" as a fail. A test without a recorded pass is a test you did not run.
What Stretches a 4-Hour Job Into 2 Months
Across integration audits, the pattern is consistent: the delay is almost never the SDK. It is the organisational and calendar overhead around it, and naming it up front is how you compress it.
The usual culprits:
- Release cycles. The change waits for the next release train, then for staged rollout, then for store review. A one-hour code change can take two weeks to reach all users.
- Event-taxonomy debates. Marketing, product, and engineering discover mid-integration that nobody agreed what "purchase" or "activation" means, and the project stalls on a definition, not on code.
- Approval chains. Security review, a privacy sign-off, or a platform team gate adds calendar time that has nothing to do with attribution.
- Cross-team dependencies. The person who owns the ad-account access is on leave, or the payment event lives in a service another team controls. None of this is engineering difficulty, which is why "it is easy" and "it took two months" can both be true. The lever that actually shortens the calendar is deciding everything decidable before engineering starts, and avoiding the onboarding mistakes in the first 30 days that reset the clock.
Compressing the Timeline
If the calendar is set by decisions and dependencies, then the way to go faster is to remove them before the sprint, not to code faster.
Decisions to make before engineering starts:
- Freeze the event taxonomy. Agree every event and which ones carry revenue values, so instrumentation is transcription, not negotiation.
- Line up access in advance. Ad-account permissions, store credentials, and any payment-service dependency should be resolved before day one.
- Book the release slot. Know which release train the change rides and when store review closes, so the calendar is a plan, not a surprise.
- Pre-clear the approvals. Get security and privacy reviewers briefed early so their gate is a formality, not a fresh two-week wait. Teams that treat the SDK as one task among five, and front-load the decisions, routinely land the whole integration inside two weeks. The questions worth asking a vendor to expose whether their product will help or hinder this are in our list of 15 questions to ask in MMP demos.
A Sample Two-Week Integration Calendar
For a lean team, a realistic calendar sequences the work so engineering is never blocked waiting on a decision.
- Days 1-2: SDK install and install attribution on the primary platform; confirm first data lands.
- Days 3-5: event instrumentation against the frozen taxonomy, revenue events included.
- Days 6-7: deep linking and value-based postbacks to each ad network.
- Days 8-9: the acceptance-test log, run across a device matrix.
- Days 10-12: fix anything the log flagged, connect downstream tools, and stage the release.
- Days 13-14: release and first-day monitoring under real traffic. If you are integrating as part of a switch from another MMP rather than a fresh build, sequence it against the complete MMP migration playbook so you do not lose historical data, and keep the red-flags diagnostic guide handy for the first week.
How to Validate the Integration Before You Trust It
Before you call the integration done and let spend flow, prove it in the dashboard, because a build that compiles is not a build that reports correctly.
- Fire one of everything. An organic install, a paid install per network, a reinstall, each key event, and a revenue event with value. Confirm each lands correctly.
- Route a deferred deep link on a clean device. Confirm the app opens on the intended screen after first launch, not the home screen.
- Check each postback in the network's event manager, on the correct account, within its window.
- Produce the flagship cut. Generate cost per paying user by channel and confirm it reconciles with payment data within tolerance. Tech Explainer: why "first data in a day" and "two-week integration" are both true. The SDK can start recording installs and events within hours of shipping to a test build, which is what "first data in a day" describes. A trustworthy integration is a different bar: it requires the full event set instrumented, deep links and postbacks verified, and a passed acceptance log across a device matrix, which is what the two-week calendar delivers. Confusing the two is how teams either distrust a fast SDK or under-plan a real integration. Treat first data as a smoke test and the acceptance log as the go-live gate.
Do not scale spend until the log is green. The point of the plan is that "done" is a recorded set of passes, not a feeling.
Common Integration Mistakes That Blow the Estimate
The integrations that overrun rarely fail on hard problems. They fail on avoidable ones that a little planning removes.
- Starting to code before the taxonomy is frozen. Instrumentation becomes a negotiation, and the estimate doubles while three teams argue over what an event means.
- Testing on one platform only. The developer builds on Android, ships, and a null revenue value on iOS surfaces two weeks later. Test every platform you release.
- Treating deep links as an afterthought. Deferred deep link routing is where most post-launch surprises live, because it only breaks for users who did not already have the app.
- Skipping the acceptance log. "It seems to work" is not a pass. Without a recorded log, nobody can say which cases were actually verified.
- Forgetting the release calendar. A finished integration that misses the release train sits for two weeks, so the calendar, not the code, sets the ship date. Each of these is cheap to avoid before the sprint and expensive to fix during it. The pattern is the same one that runs through this whole plan: the SDK is easy, and the discipline around it is what determines the timeline.
Frequently Asked Questions
Can marketing do any of this without engineering?
Marketing owns the decisions that set the timeline, even though it cannot write the SDK code. Freezing the event taxonomy, lining up ad-account access, choosing attribution windows, and booking the release slot are all marketing-side or shared tasks, and doing them before the sprint is what turns a two-month integration into a two-week one. The code needs engineering; the calendar is mostly marketing's to compress.
What about app store review timing?
Store review is often the largest single source of calendar time, because an SDK change ships inside an app update that must pass review and then roll out. Budget for it explicitly: know your release train, submit early, and treat review as a fixed cost in the plan rather than a surprise at the end.
Is the two-to-four-hour claim real?
For the SDK install and install attribution on React Native or Flutter, yes, that is a realistic engineering estimate. It is not the whole project. Event instrumentation, deep links, postbacks, and QA are the hours that actually determine whether your numbers are trustworthy, which is why the honest figure is a two-week project with a few hours of pure SDK work inside it.
Planning the Integration So the Calendar Is Yours
The reason "easy integration" rings false is that it prices the code and ignores the project. Once you plan the whole thing, the SDK is genuinely a few hours, and the calendar is set by decisions you control: the frozen event taxonomy, the access you line up, the release slot you book, and the acceptance log you insist on before spend flows.
If you want to see the actual task list and hours against your own stack, with first data inside a day and a documented path to a green acceptance log, that is what platforms like Linkrunner are built to make legible, and you can request a demo from Linkrunner to get an implementation estimate. Start by freezing your event taxonomy and booking your release slot, then hold the integration to a recorded pass on every acceptance test.
