New to Attio?Get 10% off when you sign up through Craftt.Try Attio free →
← All case studies

Pipedrive to Attio migration: notes, a six-object data model, two pipelines, and twelve rebuilt reports.

Keenan Reid Strategies ran on Pipedrive. Sarah Olson wanted Attio, but only if the migration preserved every note, every stage history, and every report the team relied on. We ran several calls to map the model before any data moved, then migrated cleanly in one cutover. After go-live we came back for a second round: stage-driven probability, weighted values on deals and milestones, and the forecast charts rebuilt to match how Pipedrive had calculated them.

Pipedrive

Migrated from

4

Custom objects

2

Pipelines

12

Reports rebuilt

Weighted forecast

Follow-up round

The problem.

Pipedrive handled the basics, but the team had outgrown it. Staffing assignments were buried inside deal notes. Lead intake and the sales pipeline were the same view. Forecasting relied on exporting Deals to a spreadsheet and weighting them by hand.

Any move to a new CRM had one rule: nothing gets lost. Notes had to come across. Stage history had to come across. Every report the leadership team relied on had to exist in the new tool on day one.

Objectives.

  • Move off Pipedrive without losing a single note, deal, or contact.
  • Model the business in Attio: deals, staffing assignments, leads, and revenue milestones as first-class objects.
  • Run two pipelines side by side: CashConvert+ and Commercial.
  • Recreate every Pipedrive report the team used to run the business, with no drop in visibility.
  • Give Sarah and the team a workspace they understand on day one, not a tool they need to learn.
  • Make the weighted forecast calculate itself from stage, so nobody multiplies probabilities by hand.

The data model.

Four custom objects on top of the standard Companies and People. Staffing Assignments separate operational placement work from the sales record. Milestones power the forecast. Leads keep the top of the funnel out of the Deals object so reports stay clean.

Companies

Standard object. Client companies, prospects, and partners.

People

Standard object. Contacts at client companies and candidates.

Deals

Custom object. Sales opportunities across both pipelines, with full stage history (Qualified, Contact made, Discussion scheduled, Proposal and development, Negotiations underway, Contract agreed, Active, Renewal Ready).

Staffing Assignments

Custom object tracking each placement once a deal goes active. Separates the operational record of a placement from the sales record of the deal that won it.

Leads

Custom object. Inbound leads land here first, before they get qualified into Deals.

Milestones

Custom object. Revenue milestones tied to deals, used to build weighted and booked forecasts.

Two pipelines, one stage model.

CashConvert+ pipeline

One of the two sales motions, run end to end inside Attio. Same stage progression as Commercial, separate list view so the team can see what is moving without the two pipelines blurring together.

Commercial pipeline

The second sales motion. Most current activity sits here: qualified deals, proposals, and negotiations all moving through the same eight stages.

Shared stage model

Both pipelines share one stage taxonomy: Qualified, Contact made, Discussion scheduled, Proposal and development, Negotiations underway, Contract agreed, Active, Renewal Ready. Reports compare across pipelines without translation.

The migration.

Notes carried over in full

Every note from Pipedrive landed on the matching record in Attio, attached to the right Company, Person, or Deal. No call history was lost. The team opened Attio on day one and saw the same context they had in Pipedrive.

Deal history preserved

Stage transitions and timestamps came across so reports like Pipeline Movement and Deals time in stage have real history to work with, not a flat snapshot.

Mapping reviewed before any data moved

We ran several pre-migration calls so Sarah understood exactly which Pipedrive field mapped to which Attio attribute, what was being merged, and what was being dropped. Nothing about the migration was a surprise.

Reports rebuilt in Attio.

Twelve dashboard widgets, recreating every Pipedrive report the team used to run the business. Same questions, same numbers, same shape, sitting on the new data model.

Deals won Revenue

Single-metric sum of estimated deal value across won Deals, segmented by pipeline so CashConvert+ wins show up the day the first one lands. Replaces the headline Pipedrive revenue card.

2026 Weighted Pipeline value

Single-metric sum of Weighted Deal Value across open deals in both pipelines. It started on Milestones; Sarah pointed out that Pipedrive weighted the whole deal, which still works before a deal has dates or monthly milestones, so we rebuilt it that way.

Pipeline Weighted Revenue Forecast 2026

Time-series of weighted revenue from Milestones, scoped to the 2026 forecast year.

Booked Revenue Forecast 2026

Time-series of booked revenue from Milestones, separated from the weighted view so the team can see committed vs forecast at a glance.

Pipeline Movement

Stacked bar of Deals by stage, by date changed. Shows how the pipeline shifted week over week.

Deals time in stage

Average time in each stage across all Deals. Surfaces the stages where deals sit too long.

Won Deal time to close by Stage

Average time in status for Deals that closed won, by stage. Used to benchmark a healthy deal velocity.

Lost Deal Time to Close by Stage

Same view, for Deals that closed lost. Highlights where the team is spending time on deals that do not convert.

Deals Created Last 30 Days by Pipeline

Count of new Deals split across CashConvert+ and Commercial. Replaces the Pipedrive “new this month” widget.

Deals created by Month

Monthly count of new Deals. Used for tracking top-of-funnel volume over time.

Lost Reason Trailing 180 Days

Stacked count of closed-lost Deals by reason (Price, Other, Unknown). Drives the conversation about pricing and qualification.

Leads Created Trailing 90 Days

Single-metric count from the Leads object. Top of the funnel, separate from the Deals number.

The second round: a forecast that weights itself.

A few weeks after go-live Sarah sent a precise spec for what the forecast should do. We built it and walked it through on a call the same day.

Stage sets the probability

Every stage change sets Close Probability: Qualified 10%, Contact made 20%, Discussion scheduled 50%, Proposal and development 66%, Negotiations underway 95%, Contract agreed and beyond 100%, Closed Lost 0%. The field stays editable, and a manual override holds until the next stage change.

Weighted Deal Value

Attio has no weighted value out of the box, so we added one: estimated deal value times close probability, kept current by two automations with no manual input. A deal missing either number stays out of the report instead of counting as zero.

Weighted milestones

Each milestone's weighted amount is its amount times the parent deal's probability, recalculated when the milestone changes or when the deal's probability does, so one stage move updates every month of that contract.

The Pipedrive-style revenue chart

A stacked bar on Milestones by month, split Open against Won. Won milestones count at 100% as recognised revenue, lost ones drop out. Both pipelines are included by default, and grouping by pipeline splits them.

Inside the migration: constraints, the six objects, and what did not survive

Most case studies open with goals. The interesting part of this migration was the constraints — and the four calls we ran before exporting a single record.

The constraints, not the goals

The team had two, and both are the things most CRM-to-CRM migrations quietly drop. The model had to support a clean carry-over of both before we touched any data.

  • Notes had to come across. Pipedrive held years of meeting notes, call summaries and follow-up context, and every one had to land on the right Company, Person or Deal. If a partner opened a record on day one and saw an empty notes tab, the migration was a failure.
  • Stage history had to come across. The monthly business review ran off Pipedrive reports built on stage transition timestamps — Time in Stage, Pipeline Movement, Lost Deal Time to Close. Those cannot be rebuilt from a flat snapshot of current state; they need to know when each deal entered each stage.

Four calls before anything moved

This is the part of a migration that buys back the rest of the timeline. Get the mapping right and the remaining work is mechanical. Get it wrong and the team finds out three weeks later when a report disagrees with what Pipedrive said last month, and the only fix is to redo the migration.

  • Which Pipedrive fields map to which Attio attributes, exactly.
  • Which fields get merged — Pipedrive splits Stage and Status, which Attio does not separate by default.
  • Which fields get dropped, such as Pipedrive concepts like "archived" that have no Attio equivalent.
  • Which custom objects had to exist in Attio before the migration, so records had somewhere to land.

Why Milestones became their own object

KRS bills consulting work milestone by milestone, not as a flat split of the contract. A six-month, hundred-thousand-dollar engagement does not mean about $16,700 a month. It might mean thirty thousand in month one, fourteen thousand in each remaining month, and a final invoice on completion. The shape of the cash flow is the shape of the contract.

A standard Deal carries one number: total contract value. You cannot build a monthly forecast from one number, so the team had been exporting Deals to a spreadsheet, expanding each contract into a row per month and weighting by probability by hand. Every month.

A Milestone object on Deals fixed it — one record per month, each with a date, an amount and a reference to the parent Deal. The forecast reports aggregate milestones by month rather than Deals, which is the move that took the monthly business review off a spreadsheet and put it back inside the CRM.

Two pipelines, one stage model

CashConvert+ and Commercial run as separate pipelines sharing a single eight-stage taxonomy. This is the pattern we recommend for almost every company running multiple sales motions.

The alternative — giving each pipeline its own stage names — always produces the same problem: leadership reports either ignore one pipeline or need a translation layer between stage names. Neither is acceptable. A shared stage model lets average Time in Stage, lost reasons and pipeline movement compare cleanly across both motions, so the team sees one business with two motions running through it.

Pipeline lives on the Deal as a select attribute and stage as a status, so the team filters per pipeline when they want and pulls cross-pipeline reports when they want that instead.

What we were honest about

One Pipedrive report did not survive cleanly. Pipedrive has a Conversion Rate scorecard: one tile, one percentage, won as a share of won plus lost over the trailing ninety days. Attio's reports builder does not support that directly — the funnel report only does stage-to-stage conversion, and the regular builder has no percent-of-total display.

We told Sarah on the call before we started. The dashboard workaround is two scorecards side by side, one counting won deals in the trailing ninety days and one counting won plus lost in the same window, with the reader dividing one by the other. It is one extra step, and it is not the same as a single tile.

The same honesty applied to stage history. Most Won-equivalent deals migrated as already closed, so their stage history inside Attio is short; new deals will populate the per-stage timings over the following two to three months. The reports are not lying, they are warming up — and the team knew that before go-live rather than after.

Three patterns that repeat beyond KRS

  • Milestones belong on their own object when billing is uneven. The default Deal carries one contract value; any business billing in uneven chunks needs a child object to model the cash flow, or the monthly forecast lives in a spreadsheet next to the CRM and the CRM stops being where the business gets run.
  • Staffing or placement work belongs on its own object when it survives the deal. The deal closes, the work begins, and burying the operational record inside the deal that won it makes both the sales report and the delivery report worse.
  • Two motions sharing one stage model beats two motions with their own stage names, every time. Every cross-pipeline report repays the small upfront cost of a shared taxonomy, and we have not yet seen a counterexample.

Results.

  • Pipedrive shut down with no loss of notes, deal history, or contacts.
  • Six objects in Attio (Companies, People, Deals, Staffing Assignments, Leads, Milestones) cover the full lifecycle from lead to active placement.
  • Two pipelines (CashConvert+ and Commercial) run on a shared stage model so reports compare cleanly.
  • Twelve reports rebuilt in Attio dashboards, covering revenue, forecast, pipeline movement, time in stage, lost reasons, and lead volume.
  • Sarah and the team opened Attio on day one and recognised every record and every report.
  • Probability, weighted deal value and weighted milestones now update from stage changes alone, so the monthly forecast no longer needs a spreadsheet next to it.
  • Sarah reviewed the second round and signed it off, and has since taken reference calls for us with other firms considering Attio.
“George helped us migrate from Pipedrive to Attio and it was quick and seamless! He was super responsive and had several calls with me before we started to make sure I understood everything.”

Sarah Olson

Keenan Reid Strategies

Ready when you are.

Book a call and we will tell you honestly whether this is worth doing, or start with the free 48-hour audit and decide afterwards.