Transferring assets via custom contract

I just want to make sure when transferring assets we’re not restricted to only using the Moralis Moralis.transfer() function?

I going to setup bundled NFT/Token swap with a custom contract and I can use the Web3 API to sign the transactions. Moralis can listen for the transfer event of the custom contract so everything should work if I set it up correctly right?

The transfer function is just an simpler method for people to choose to use if they need but not restricted to only using this for transfers if we know how to code it?

You are not limited to Moralis.transfer only. You can call a smart contract function using executeFunction that executes your custom function