As a freelancer, here are a few notes and an overview on how I solved a client's contacts consolidation when the data came from external sources:
My Use Case - Client had ongoing events and conferences over several years which meant there were databases and mailing lists all over the place (many of which had crossover). - I set up ongoing JSON exports of the contact data from the external sites, which could be queried by date range to get the latest changes.