It depends on the data. If $x$ is given uniquely by solving the system of equations, $x = Gy$, you can simply check if $G^TH+HG$ is positive semidefinite. If it is, you are done as you have a convex mixed-integer QP. If it is indefinite/negative definite, or your equation is underdetermined in $x$, you will not arrive at a convex MIQP, and you have to take another approach.
One possibility is to look at the problem as a bilevel program, where you look at the problem w.r.t $x$ and $y$ as an inner nonconvex QP with $z$ as a parameter, and then on the outer stage you optimize for $z$. When doing so, you can replace optimality of $x$ and $y$ with kkt conditions (a nonconvex QP can be solved by writing KKT conditions using binary variables, and then using the fact that the quadratic indefinite objective can be written as a linear function of the duals, and the "right-and-side" of the inequalities. The only remaining problem then is that the right-hand-side in the inner program involves $z$, so the normally linear objective will actually be bilinear in $z$ and the duals. However, as $z$ is binary, this expression can be linearized.)
Pretty involved perhaps, but here is an example using the MATLAB toolbox YALMIP just as a proof-of-concept.
% Generate random problem
n = 3;
m = 2;
H = randn(m,n);
A = randn(n,1);
ymin = -rand(n,1);
ymax = rand(n,1);
x = sdpvar(m,1);
y = sdpvar(n,1);
z = binvar(n,1);
Model = [ymin.*z <= y <= ymax.*z, x == randn(m,n)*y];
% Inner problem
Objective = x'*H*y;
% Derive KT conditions
[KKTModel,details] = kkt(Model,Objective,z);
% Express the indefinite quadratic using duals
newObjective = (details.c'*details.primal-details.b'*details.dual)/2;
% Big-M linearize since details.b involves binary parameters z
[LinearObjective, cut] = binmodel(newObjective, [0 <= details.dual <= 1e4]);
% Solve outer problem
optimize([Model, KKTModel, cut], A'*z+LinearObjective)
value([x;y;z])
% Compare with simply calling a global solver
optimize(Model,A'*z + x'*H*y,sdpsettings('solver','bmibnb'))
value([x;y;z])