On iterative approach, budgets and requirements

$X was our very rough preliminary estimate for the project. It might take more or less, depending on the actual requirements which we don't have yet.

It's like you went to a car repair shop and told them that you'd like to repair everything that malfunctions in your car, plus change the engine and do some other improvements which you can't tell in detail yet. They won't be able to tell you how much this will cost, in the best case they'll give you a very-very rough budget. But the actual budget is going to depend on the actual work.

It's absolutely the same here.
There are too many unknowns to stick to any specific budget. To agree on a specific budget we need to agree on a very detailed and specific scope.
But in the current situation that would be very hard, especially for you - you'll need quite a time to specify this, and as far as I understand, you've never worked on things like that before, so it's triple the time and complexity. Plus, some tasks require research on both ends - for you and for us. Some things may be done by trial and error. It's obviously not possible to pack them all into a specific budget now.

But that's not a very big problem. As they say, to eat an elephant, you should cut it into smaller stakes.
So the standard approach in this case would be as follows.
We're going to work on milestones that you can specify in detail. These milestones are some logical parts of the whole project.
A sample milestone: subscriptions improvements.
In this milestone we'll need to agree on what exactly needs to be changed, down to each function and element on each page.
The milestone consists of tasks. Each task corresponds to a very specific piece of work to be done.
A sample task: remove fields from subscription form.
A piece of a spec for that task could be something like this:
"Currently when user clicks "Subscribe", (s)he's redirected to subscription form (page URL here). This form has fields first name, last name, credit card number, gender, age, email. We should leave only First name, last name and email, other fields should be removed."
It's just a sample that I generated right now, of course in real spec it's going to be different, but I hope you see the idea.
Each milestone will have a fixed scope and a fixed budget.

For each milestone you should provide us the list of tasks to be done. Of course, we'll have many questions, and you don't have to spend days on specifying each task. But you'll have to spend some time on specs in any case, unfortunately there's no way around that.
Again, like in building or reconstructing a house first there should be a clear set of requirements, which is then transformed into a plan by a construction company. And then the actual changes are going to be made based on that plan.
Same here - we'll transform your requirements (which are also called business requirements) into a project plan, and then we'll implement each task from that plan. Then we'll demonstrate the results on our demo server. They are going to satisfy your requirements. To make sure they are satisfied you (and/or someone from your team) will need to test the changes. Most likely some minor tweaks are going to be needed. In most of the cases extra tasks arise - you just can't plan everything in advance. We'll have some small reserve for minor tweaks in our estimate for the milestone, but for all more or less significant out-of-scope changes we'll have to create an additional (usually small) milestone. For example, you asked us to remove some field, but after testing the changes you decided that we need to bring it back. That's extra work for us, and we'll bill for it extra.

So let's summarize this. The overall process is as follows.
1. You define the next milestone - a chunk of work you'd like to have done on the website.
2. You provide the specs for that milestone. Usually it's going to consist of tasks.
3. We discuss the milestone with you, and when everything is clear, we provide the estimate for it.
4. If it sounds reasonable, you create the milestone on Upwork and we start working on it.
5. Once we're ready, we demo you the changes on our demo server.
6. You test the changes and if any fixes are needed, we do them for free.
7. When everything is fixed, and if it satisfies you completely, we mark the milestone as done, you release the funds, and we move on to point 1.
8. If you notice that some things were implemented according to the specs, but you'd like to change them, we list all such things and create a new (most likely small) milestone for updates.

Now you probably wonder how we can ensure that we don't use the whole budget you have before implementing everything you need.
That's a very difficult question, and there's no answer to it. Unless we specify everything in advance (which is almost impossible) we can't budget in advance.
In this case there should be some planning on your end. For example, if a quote for some milestone appears to be too high, we can discuss and see which parts can be simplified to reduce the budget.
The total budget is going to depend on what exactly we do and how we do it.
In any case we're going to suggest the most efficient implementation according to our experience, and we'll do our best to assist you on any stage.