From jQuerys delay documentation:
The .delay () method is best delayed between jQuery effects in the queue. Since it is limited - it, for example, does not offer a way to cancel the delay .delay () is not a replacement for the setTimeout built-in function for JavaScript, which may be more suitable for certain use cases.
In other words, you should use setTimeout (), namely:
setTimeout(function () { $('#open-contact').trigger('click'); }, 3000);
source share