For some reason, when users request integration it often seems to have to be "real-time" integration. This may just be because 'real-time' is a bit of a buzzword, or because it is used without really being fully understood, or it may be because someone (a salesperson?!) once told them they simply had to have this... But if you quiz them more deeply then I would suspect that very few applications which charities run have to truly be "real time".
And the reason that is important is because real-time = really more complex and expensive.
First off, it is worth defining real-time within this context: real-time for a charity could be when, say, someone makes a donation on your website and then that donation is transferred 'immediately' into your fundraising/CRM system. But even here, 'immediately' could be several seconds which for us as a charity pretty much is real-time - as opposed to, say, a share-price system or a car's ABS system which has to react within nanoseconds. The important thing to note is what real-time does not do which is that it does not simply pass the data to a 'queue' of similar transactions which is then transferred into your CRM system sometime later using a 'batch process' of some sort.
So, if we consider this definition, then when do we as charities really need real-time integration between another system and our fundraising/CRM system? The above example of online donations or event registrations is a good case in point: if a donor was to phone your supporter care team within moments of making an online donation then maybe real-time (or near real-time) would be very important. But although I know that scenario does happen, it's rare. And there could quite feasibly be a simpler, cheaper workaround for that such as your supporter care team having access to, say, a web portal to your online donation/event management system. I'm not saying that is definitely the best approach, but it should be considered if a real-time option is prohibitively expensive or complex. If it's not - and actually, these days, such real-time integration between CMS and CRM is increasingly more straight forward - then go ahead, knock yourself out with it.
But I would really question the need for real-time for many other applications. For example: if you are only getting a handful of online transactions a day and no-one needs to know about (or is available to know about) them instantly anyway; if you have a fulfilment house processing your campaign cheques; if you are receiving files from CAF; and so on. In those instances, it is probably perfectly acceptable to have batch process integration. And batch integration doesn't have to be daily, which is how it is often thought of. If it is automated then it could be every n hours etc. But it will (almost certainly) be a lot easier and cheaper to implement and maintain.