Deep linking and attribution are foundational to how Spotify grows. Deep links carry users from a shared link or ad directly to the content they want in the app. Attribution tells us which activity—a friend's share, a social post, a push notification—actually drove that listening behavior. By 2017, both functionalities were in rough shape. Fixing them took the better part of five years and taught us a lot about tackling martech problems across a large organization.

Where We Started

Before 2017, deep linking issues surfaced mostly as user complaints on social media. As marketing teams increasingly used deep links in campaigns, the volume of complaints grew. But the errors were hard to reproduce and troubleshoot, which made them difficult to address. Attribution was equally constrained: only a handful of paid marketing channels used the existing solution, so there was no way to see a complete picture of what drove engagement or registrations.

The Road to a Solution

In 2017, a survey of martech capabilities and needs identified deep linking and attribution as high-priority gaps. We compiled the findings into a report and circulated it broadly to build support. The challenge: knowledge, ownership, and use cases were scattered across multiple business units, squads, and functional domains. Coordinating goals across a group with such different objectives and key results was difficult.

We started with a formal problem statement and a prioritized backlog of known issues, sharing both with stakeholders to rally support. That groundwork paid off in 2018. A primary deep linking owner reviewed the report and committed to fixing the highest-impact bugs, scheduling the rest for future sprints. Meanwhile, we built a business case based on past benchmarks to underscore how the issues affected ongoing company bets and to create urgency.

In 2019, several R&D teams began investigating better deep linking solutions. One team evaluated alternatives, while our team collected empirical data from test users—including screen recordings—to document the broken experiences. Those recordings were surprisingly effective at communicating issues to dev teams, helping them resolve bugs faster.

By 2020, an informal cross-mission group of teams formalized its meetings and adopted a name: the (Deep Link) Jedi Council. The squad evaluating new solutions also launched a short-term proof of concept for a promising alternative that could improve both deep linking and attribution.

Making the Migration Case

In early 2021, the proof of concept yielded positive results. Deep linking saw a 79% reduction in broken links, and removing UX friction led to significant increases in engagement with linked content. That momentum helped us make the case for migrating all attribution and all Spotify apps to the new solution.

After considerable campaigning, the project was approved. The enterprise-wide migration affected at least 25 internal stakeholder teams and external partners, and because of the nuance and volume of use cases, it stretched through the end of 2022. The official scope was completed late that year, but the work didn’t end there.

Ongoing Work

While the new deep linking and attribution system is now integrated across all current apps and use cases, not every team is aligned on when and how to use it. Achieving a truly comprehensive view of attribution is still in progress. And since R&D and marketing teams continuously create new products, features, and campaigns that depend on a frictionless deep link UX, our work continues daily.

Challenges and Takeaways

Five years of effort surfaced some clear lessons.

The Incomplete Picture

Deep linking and attribution have inherent blind spots. We can’t measure how long a link takes to open because the click happens outside our platform and is often handled entirely by a device’s OS—no request reaches Spotify at all. Clicks from apps like Facebook frequently route through a mobile web browser or pop-up, adding UX friction we can’t track programmatically. Attribution had similar gaps, making it impossible to identify overlaps in marketing activity or to distinguish truly organic behavior from prompted activity.

That lack of clarity made it hard to estimate and communicate the impact of known issues. What helped was sharing first-hand video from UX testing—seeing the experience directly made it easier to explain what was broken and how often.

Takeaway: Look at both the big picture and the small details. Initially, deep linking bugs seemed isolated and minor; attribution wasn’t on most teams’ radar. Zooming out revealed patterns and made the case for a larger solution much clearer. Zooming in showed the many small problems individually, but only the big picture made the effort seem worthwhile.

Fragile Technology, Many Failure Points

A consistent deep linking UX must work across multiple operating systems, from several apps, and under many conditions. Even small changes in unrelated software—including our own—can break it. Apple’s privacy-focused changes in iOS 14 and 15 are a prime example; each required us to reprioritize our backlog and reassess our timeline.

There are countless ways a deep link can fail. Without proper monitoring and support, breakages are guaranteed. That reality was constantly in mind, and sometimes at the center of attention when things broke in big ways.

Takeaway: Be persistent and build momentum. We started with very little understanding of how deep linking and attribution worked, and we built that expertise incrementally. We didn’t move fast at first, and we didn’t have a clear map. By being thoughtful and purposeful—and allowing ourselves some grace—the pieces came together. But only through consistent, sustained effort did things land where they needed to.

No Single Owner: The Organizational Puzzle

The working group wasn't really a team in any formal sense. Its members were scattered across Spotify, each reporting into different hierarchies, serving different stakeholders, and tracking different metrics. There was no shared leadership, no common overseer, and no single person connecting all the groups. Naturally, that made it difficult to agree on priorities, sequencing, or timelines — every group brought its own constraints to the table.

Yet the effort succeeded anyway, and the reason was deliberate collaboration. The people involved leaned into each other's strengths and domain knowledge, and over time they developed a few tactics that made cross-team work productive rather than futile.

Speak in the Other Team's Metrics

Because KPIs rarely overlapped, arguments framed in one team's terms often landed flat with another. The fix was translating: when asking a team for changes, the group would frame the request against that team's own metrics, showing how the proposed work aligned with their existing goals. This gave collaborators immediate context for urgency, and armed them with language they could reuse when reporting upward to their own leaders.

When even that was a stretch, the group would step up a level and look at higher-order KPIs that depended on the lower-level metrics each team tracked. Instead of focusing purely on deep link error rates or sharing volume, they examined engagement downstream of a shared link — a number everybody could care about, even if they got there through different intermediate measures. Framing the story from multiple perspectives, and sharing the projected KPI improvements on each side, rounded out the narrative enough to move people.

Assume Nothing, Explain Everything

The collaborators rarely shared basic domain knowledge. A team deeply familiar with deep linking couldn't assume its partners understood the fundamentals of that space, and had to extend the same courtesy in reverse. The answer was humility: asking questions even when the answers seemed obvious to others, giving everyone the benefit of the doubt, and spelling out context explicitly rather than leaning on unstated assumptions. Curiosity and patience bridged gaps that technical expertise alone could not.

Show the User, Not the Slide

Perhaps the biggest turning point came when the group started running empirical UX tests. The test sessions produced screen recordings of what users actually experienced, and those clips became the most persuasive communication tool available. A short video showing a tester struggling through a broken deep link flow — with maybe a single statistic attached — conveyed the problem faster and more convincingly than any written explanation. It was the difference between describing a failure mode and letting stakeholders witness it directly.

The immediate work continues: iterating on the current support structure, advocating for changes that could unlock more attribution potential, and pushing toward a comprehensive view of attribution across Spotify's products and campaigns.

But deep linking and attribution are not isolated cases. They are two examples of a broader pattern — martech capabilities that fall into gray areas where ownership and support aren't clearly assigned. The specifics will differ each time, but the playbook won't. The skills the group developed here, navigating misaligned teams and ambiguous responsibility, will carry over to the next ambiguous problem Spotify throws at them. And the expectation is that there will be more.