AFAIK, the RPC has an addwatchonly command. This should notify you - regular walletnotify won't unless it has all the private keys for the multisig.
Otherwise, you could use blocknotify, and have a script parse every tx in every block for TxOuts where the script is something you know to look out for (payment to a particular address, etc). This is quite heavy.
You could use
https://github.com/btcdrak/bitcoin/tree/addrindex <- lets you query ANY txid / address by virtue of a patch. As well as using -txindex=1, you use -addrindex=1, then your scripts can poll for information.
Another option is to write a Stratum client, and query public electrum servers for information. (there is an `blockchain.address.get_history` command you can send). This is probably the best thing to do IMO, as every single electrum client does this. You could query two to be sure they aren't feeding you bad results. It has the disadvantage however that you're directly sending your addresses over the wire. You can also subscribe to notifications to be received at a particular callback URL, or keep the socket open and you'll get them there.
Otherwise, go all out, and DIY
Use bindings to the P2P network to to request filtered blocks from peers (only contains tx's which would be included in your filter). This is more private than Stratum, but requires a bit of work if you want access to historic transactions. But, if your service generates the address for users, you know transactions will only happen after that, so subscribe before your users know about it, and scour filtered blocks for transactions for your users. (Depending on your chosen false positive rate, you may have transactions that have nothing to do with your wallet.)
Otherwise you could use a web service's API.