I signed an employment agreement (not a contract) with one company last week to start a month from now. I've also since received another offer for significantly higher pay, in a city I'd really like to move to, doing work that's much more interesting, with much better benefits and a work culture I like much better. I'm taking it regardless of the consequences with the first company, I'd be stupid not to. I'm not trying to re-negotiate, just let them know I won't be joining. What's the most professional way to let them know?
It's not as troublesome as you may think, and I'm sure the HR department has dealt with quite a few of these over time.
First things first. You make sure your second employer is all on-board, and you have a signed contract.
Then you email your first employer, indicating that your personal situation has changed, and that you regretfully would like to terminate the employment arrangement. You then apoligise for the any inconvenience this may have caused. You should also confirm that you are not looking to renegotiate terms of the employment arrangement. Then you should ask what the next steps are.
They may want to know more. It's up to you what you want to share. But if you want, you can let them know that a really exciting opportunity has opened itself up in another city and you are at a stage of your life where you are really keen to give it a go.
Regardless of whatever it says in your contract, most employers won't want to on-board an employee if they are likely to leave at the earliest possible chance. So, even if there is a notice period of longer than a month, they are likely to waive it.
First check which is the earliest date when you may terminate at the company at which you already signed the contract. Try to negotiate a a start date at the other company that is later than that date. Then write a mail where you state that for personal reasons (you could also provide more details, but that opens the door for discussions) you have to terminate at the earliest possible date and that you are very sorry for any inconveniences. They may or may not take this well, but it is not unprofessionell, as you do not breach the contract.
However, if you have to breach your contact in order to start at the other company (e.g. because you cannot reschedule the starting date), then it gets much more complicated. I then see two possibilities:
First possibility: See a lawyer to find out what the consequences of breaching the contract could be. If you are willing to take these consequences, sign at the other company and then ask the company where you're currently under contract if they let you go. You may be lucky and they won't sue you for cash damages. However, it's questionable whether this is professionell and it may harm your reputation.
Second possibility: Tell the company at which you are currently under contract that for personal reasons you cannot start there and ask if they agree to cancel the contract. As they probably do not want to hire people that will leave soon anyway, they likely will agree. If they don't, you still could go to possibility 1. But if things go bad, you may not get the preferred job and you also made the company at which you are under contract aware that you do not want to work there.
So all in all you really should try to schedule the starting date of the new job such that there is no unresolvable conflict with your current contract.