Inside Mobile Action's revenue attribution rebuild

Mobile Action could not trust its own revenue attribution. Contact sources were unreliable, the buyer journey was undefined, and more than ten thousand duplicate records sat underneath the reporting. HubXpert fixed the attribution, defined the journey, and built a custom deduplication app to clean the database.
Mobile Action

10,000+

Duplicate records merged

3

HubSpot Hubs optimized

1

Custom Node.js deduplication app built

3 months

Delivery timeline

ABOUT THE CLIENT

App Intelligence, Sold to Marketers Who Measure Everything

Mobile Action is a mobile app intelligence and App Store Optimization platform used by app developers, marketers and brands to improve visibility and performance. It sells keyword research, competitor analysis and data-driven insight to people whose own job is measurement.

Selling analytics to analysts sets a standard. A company in that position cannot report its own marketing performance on numbers it does not trust, and Mobile Action had reached the point where it did not.

The problem was underneath the reporting rather than in it. Revenue attribution was returning results that did not reconcile, contact sources were unreliable, the buyer journey had never been formally defined, and more than ten thousand duplicate contact and company records were quietly distorting everything built on top.

What You Will Learn

  • 1 Why attribution problems are usually data problems first
  • 2 What duplicate records do to revenue reporting
  • 3 When a custom deduplication tool beats doing it in the interface
THE CHALLENGES

Reporting Built on a Database Nobody Trusted

The reporting was not wrong because the reports were badly built. It was wrong because the data underneath it was duplicated, inconsistently sourced and unstructured, and no amount of dashboard work fixes that.

  1. 1

    Revenue attribution did not reconcile.

    Marketing effectiveness could not be measured with confidence and conversion reporting did not hold up, which made every conclusion drawn from it provisional.

  2. 2

    Contact source reporting was unreliable.

    The true origin of a contact was difficult to establish, so channel analysis was built on a field that could not be depended on.

  3. 3

    The buyer journey had never been defined.

    Without defined stages and touchpoints there was no structure to measure against, which meant no way to see where in the journey things were going wrong.

  4. 4

    Over ten thousand duplicate records.

    Duplicate contacts and companies inflate counts, split activity history across records and corrupt every metric calculated from them. At that volume the database was actively working against the reporting.

  5. 5

    Deduplicating by hand was not viable.

    Ten thousand merges through the interface is not a task a team completes, which is why the duplicates had accumulated in the first place.

WHAT WE BUILT

Fix the Data, Then Fix the Reporting

The engagement ran across three areas: diagnosing and correcting the attribution, building source reporting and a defined buyer journey on top of it, and clearing the duplicate records with a purpose-built tool.

  1. 1

    A full audit of the HubSpot setup.

    The attribution discrepancies were traced to their causes rather than worked around, which is the only way to know whether a fix has actually worked.

  2. 2

    Conversion tracking errors resolved.

    The technical faults preventing accurate tracking of marketing and sales activity were corrected so attribution aligned with what had actually happened.

  3. 3

    Attribution models restructured.

    The models were rebuilt to reflect the real customer journey rather than a default configuration, so credit lands where the influence was.

  4. 4

    Contact source reporting built.

    A source reporting system was built so lead origin is tracked reliably, which makes channel effectiveness analysis a measurement rather than an estimate.

  5. 5

    The buyer journey defined.

    A structured framework of stages and key touchpoints was mapped, giving the funnel a shape that can be reported against and improved.

  6. 6

    Automated lead routing.

    Leads are segmented and assigned by journey stage, so contacts receive the right interaction at the point they are ready for it.

  7. 7

    A custom Node.js deduplication app.

    Rather than merging by hand, a purpose-built tool identified and consolidated more than 10,000 duplicate contact and company records against defined matching rules.

  8. 8

    Ongoing data hygiene.

    Automated processes were put in place to prevent duplicates re-accumulating, because a one-time cleanup on a live database buys time rather than solving the problem.

HOW WE GOT THERE

Diagnose, Correct, Clean, Prevent

The order matters. Restructuring attribution models on top of a database with ten thousand duplicates in it would have produced a different set of numbers that were wrong in a new way.

Phase 1

Audit

Reviewed the HubSpot setup end to end to locate the specific causes of the attribution discrepancies.

Phase 2

Tracking fixes

Resolved the technical errors preventing accurate tracking of marketing and sales activity.

Phase 3

Attribution rebuild

Restructured the attribution models to reflect the actual customer journey.

Phase 4

Source and journey

Built contact source reporting and the structured buyer journey framework, with automated routing by stage.

Phase 5

Deduplication

Built the Node.js deduplication application and consolidated over 10,000 duplicate contact and company records.

Phase 6

Hygiene and handover

Implemented automated prevention processes and handed the system to the team.

THE OUTCOMES

Reporting the Team Can Stand Behind

Mobile Action now reports on a database that has been cleaned and an attribution model that reflects the real journey. The reporting is not merely different, it is defensible.

10,000+

Duplicate records merged

3

HubSpot Hubs optimized

3 months

Delivery timeline

Over 10,000 duplicate records merged. Contact and company duplicates were consolidated by a purpose-built tool, removing the largest single source of distortion in the reporting.

Attribution reflects the real customer journey. Tracking errors were fixed and the models restructured, so marketing strategy decisions and ROI tracking rest on numbers that reconcile.

Contact source is reliable. Lead origin is tracked consistently, which makes channel effectiveness a comparison rather than an argument.

The buyer journey has a defined shape. Stages and touchpoints are mapped, so the funnel can be measured and the weak points located.

Leads reach the right person at the right stage. Automated routing by journey stage replaced manual assignment.

Duplicates are prevented, not just removed. Automated hygiene processes keep the database clean rather than returning it to the same state over the following year.

Before

  • Attribution numbers that did not reconcile
  • Contact source unreliable
  • No defined buyer journey
  • Over 10,000 duplicate contacts and companies
  • Manual lead assignment
  • No process preventing new duplicates

After

  • Attribution models rebuilt on the real journey
  • Consistent contact source reporting
  • A mapped journey with defined stages and touchpoints
  • Duplicates merged by a custom Node.js application
  • Leads routed automatically by journey stage
  • Automated hygiene preventing re-accumulation
What SaaS teams ask about attribution cleanup

Frequently asked questions

  • Because attribution problems are usually data problems. Rebuilding dashboards on a database with duplicate records and unreliable source data produces a new set of numbers that are wrong differently.

  • They inflate counts, split activity history across two records so neither tells the whole story, and corrupt every metric calculated from contact or company totals.

  • At over 10,000 duplicates, merging through the interface is not a task that gets finished. A purpose-built tool applies consistent matching rules at volume and can be rerun.

  • Three months, covering audit, tracking fixes, attribution rebuild, source and journey work, deduplication and prevention.

  • Automated hygiene processes were implemented to prevent re-accumulation, because a cleanup on a live database is only durable if the intake path is fixed as well.

bOOK CONSULTATION

Can't Trust Your Own Revenue Numbers?

Broken attribution and duplicate records don't fix themselves. We'll trace your reporting issues to the source, rebuild your models around the real customer journey, and clean up the database underneath.

Icon-Apr-08-2026-10-02-31-8097-AM Takes 30 minutes
Ratul-Rahman