Using Account, Opportunity, and Custom Object fields in Engagement Studio in Pardot is not possible. This makes setting up your branching logic in your Engagement Studio Program difficult. For example, you may want to setup a program that sends certain emails during each stage of the sales process (in other words, during each stage of the Opportunity). There are a few workarounds to this limitation that revolve around list membership.
Automation Rules + Static List, or Dynamic Lists
You can use the criteria in Automation Rules to access data from Opportunities, Accounts, and Custom Objects. You can then subsequently use use the action part of an Automation Rule to add or remote a Prospect from a list.
The idea here is that you might have one big list that feeds Engagement Program (for instance, all Opportunities). You can then create lists that are sub-segments of this list (for instance, Opportunities Stage = Sourcing Materials). From there, you can use a Rule within the Engagement Program to check if the Prospect is a part of that (sub)list.
Alternatively, you could use a Dynamic List instead of an Automation Rule to add a Prospect to a Static List. This could be a better approach because Dynamic Lists do not have a limit, but you can only create 100 Automation Rules in your Pardot account.
A Few Nuances for Accessing Opportunity Data
There are multiple ways to access Opportunity Stage in an Automation Rule. You can use the Prospect Opportunity Default Field, and then select Stage. You can also select Prospect Opportunity, then Related with Properties, then Prospect Opportunity Default Field, and then select Stage. Note that you won’t be able to use this second method if you are using a Rule Group in an Automation Rule or Dynamic List.
This second option also allows you to access Prospect Opportunity Custom Fields. For example, you could have a custom date field that tracks when the Opportunity entered into a certain stage (such as Quote). You could then reference that custom date field in an automation rule or dynamic list to create a list if the Prospect has been in a stage for x days. For instance, you could have a series of emails in your Engagement Program targeted at Opportunities who have been sitting on a quote.
You can do this automatically using Prospect Default Field, and then selecting closed. Then you can choose that the Opportunity was closed more than x days ago. This standard option works well for either new customer on-boarding Engagement Programs, or re-engagement programs after losing an Opportunity.