Workflow for default contact on calls

I’m trying to decide whether I need to code custom logic or whether this can be done in a workflow; since I’m new to workflows, maybe somebody here can help me.

My use case is this: when logging calls related to opportunities, I want the first (or only) contact for the opportunity added as an invitee to the call by default. If the user selects one or more invitees, that selection overrides the default. This should happen only on the initial creation of the record: if the user goes back and deletes all invitees from a call, then no invitees will be added automatically since the call was only updated and not created.

Based on what I’ve seen, I suspect that workflows won’t support this level of complexity (loading one related record, then pulling the first ID from one of its relationships, and adding that to the record being saved) and I’m probably going to have to do this in code. But before I dive into that, I thought I’d better ask here.

You can try it quickly, see if the Workflow let’s you pull in that value from the Invitees. Probably not, but have a look…

If not, you can advance into Logic Hook where this should be easier to achieve:

Has anyone here done something with the level of complexity I’m talking about? I’m so new to workflows that I’m not sure what I’m looking at.