01
Agreed the rules
We agreed on the rules before moving any data, cut users over over a weekend, merged duplicates in layers, and then built the customer lifecycle in HubSpot. We did the consolidation first because nothing else could be trusted until the data sat in one place. The customer success build followed under the managed service.
02
Configure the consent rule the client set with its legal adviser
Merging a person's records from several portals could have overridden an opt-out given to one business. We raised this before the migration and brought it to a call with a senior leader and the group's legal adviser.On its adviser's guidance, the client decided how an opt-out would carry across when records were merged, with anyone who was an active client of another business reviewed by hand. The privacy policies on each site were brought into line with the same group wording. The rule and the legal basis were the client's decisions, and we configured HubSpot to match them. Any business merging portals should agree its own rules with its legal adviser. Opt-outs came across into a custom property and were reapplied after go-live with HubSpot's subscription tools. HubSpot holds subscription status against an email address, so we held back full enforcement of the GDPR settings until duplicate contacts had been merged and carried their addresses.
03
Clear the smaller portals out before the move
The client built archive lists using criteria we set. A record went if it had no last activity, no next activity, no last contacted date and no marketing email in a year, and was not a client or a live lead. Senior staff signed the lists off, and a full backup was agreed first so the team could be decisive.We exported the property model for each business and marked what to keep. Any property with no data was not migrated. The legacy workflows in the smaller portals were reviewed and switched off, along with an old form still syncing into one of them.
04
Map properties so the main portal's data stays untouched
A straight one-to-one mapping would have overwritten the main business's data. Properties specific to one business were created with that business's name as a prefix. Generic ones were prefixed as migrated. Each record's original record ID and create date were kept in dedicated properties.Lead statuses from the other businesses landed in their own prefixed property, so the main brand's lead process carried on as before. Before the move, every record in every source portal was stamped with where it came from and who had owned it, so ownership could always be traced after a merge.We set up a brand for each business, using HubSpot's Brands feature (formerly business units), and teams prefixed with the business name. People who sold for more than one business got one user in several teams.
05
Gate the main portal's workflows and test record by record
In the first sample load, some of the main portal's own workflows picked up the incoming records. No emails were sent, because those workflows were tied to specific forms. We rolled the sample back, tightened the exclusions so migrated records could not enrol and ran it again.Testing was done by hand. Testers opened a record in the source portal and the same record in the merged portal side by side. They checked properties, activity history and associations, and logged differences with screenshots in a shared sheet.We asked for 70 to 100 records per object, spread across lifecycle stages. Associations got the closest attention, because a mapping error repeats across a whole batch, while missing activity hides record by record.
06
Move users across in one weekend with a final top-up of data
Users of the other businesses' portals were set to read-only at the end of a Friday and disconnected their email and calendars from HubSpot, using short videos we recorded. The main brand's users carried on working without interruption.Over the weekend a delta migration brought across every change made since the last data cut. We tested and fixed data on the Monday, users were back in from the Tuesday, and we ran a drop-in session for anyone who needed help reconnecting.Live sequences do not migrate, but every email sent through them is logged on the contact and came across in the delta. Teams rebuilt their sequences in the merged portal and re-enrolled contacts at the right step.
07
Switch workflows back on one at a time
After the HubSpot portal consolidation went live, the main portal's workflows stayed gated until the duplicate merge had made progress. They were then restored singly, so any unexpected change could be traced to a single workflow.
08
Merge duplicates in layers, with rules the client set
The client asked whether someone would have to review thousands of records by hand. We recommended a bulk merge tool run in layers. Broad, safe rules go first, then narrower cases, and only a short list is left for a person to merge.A board member set the merge rules and the sales team added to them. Any record that is a client of any business goes to manual review. If only one record has an active owner, it wins. A record owned by a former employee loses to one owned by current staff. Open deals and recent activity count in a record's favour.We ran contacts before companies so consent could be enforced sooner. Matching used the main email property and the temporary email properties holding each source portal's address. Companies that were separate subsidiaries or regional arms of one organisation were kept apart, because the sales team treats them as separate opportunities. To show the work was complete, we built a filter for records where a source portal's email property was populated, but HubSpot held no merge record. That list was down to single figures, which we passed to the client to merge by hand.08
09
Rebuild the board dashboards across the merged data
Before the move we cloned the core board and sales dashboards and checked, report by report, which could be rebuilt across the merged data. After go-live we rebuilt them with dashboard filters for brand, service and team, and kept the originals as backups.The main brand's figures matched the old dashboards. We added deal volume next to deal amount throughout, grouped lead sources into inbound, outbound and channel, and set up stage-to-stage conversion funnels counting only deals that passed through every stage.
10
Put inactive accounts back into a pool for reassignment
Many companies were still owned by people who had left or by reps who were not working them, so new contacts went to the wrong person. A saved view found companies with an owner, no next activity, no open deals, no client lifecycle stage and no contact for 90 days.The sales manager unassigned that view, shared the pool out between reps in batches by company size and then switched on Assign company owner to contact by default. New contacts now follow their company's owner.
11
Move onboarding, quarterly reviews, and renewals into HubSpot
When a new business or expansion deal is won, a workflow creates an onboarding ticket for the company owner, a quarterly review ticket and a deal in a future renewals pipeline. The go-live date on the ticket is written back to the company whenever it changes. Every account in that brand gets a quarterly review, with key accounts flagged so the team can filter for them. The review ticket moves on with the calendar even if a review is missed, and on multi-year contracts it starts each year again with a prompt to review the price. Reps enter a contract start date and term, and the end date is calculated for them. Renewal deals move to a review stage automatically ahead of the end date, then to a send offer stage with a task even if nobody has moved them. Expansions are worked by moving the existing renewal deal, so no renewal is left orphaned. Notice periods had been held as days, dates, and free text. They are now a set list in days, written to the company when a deal closes. The client cleaned the spreadsheet, and we imported the company updates and renewal deals in one go, so nobody was left working in both places.