If you use Heroku's Github integration for deployment with CircleCI, you will run into issues with Workflows.
Each job in a Workflow receives its own job status and will report back as each job begins and ends independently. Because of the way Heroku monitors Github's status API, the deploy will trigger as soon as the first job in the workflow completes.
The way around this issue is to create a deploy step within your Workflow, and deploy directly from CircleCI. You can use the Heroku CLI to write a deploy step, and there are multiple examples for different languages.
Here is a fantastic article on creating such a workflow: https://medium.com/opendoor-labs/continuous-deployment-with-rails-circleci-and-heroku-314635d800c6