An alternative to thinking in terms of a GM is semi-elasticity.
Your model for the expected value is something like $$E[\ln(y+1) \vert x]= \alpha + \beta \cdot x + \gamma \cdot z$$
Taking the derivative of that with respect to $x$, you get $$\frac{\partial E[\ln(y+1) \vert x]}{\partial x}= \frac{1}{y+1}\cdot \frac{\partial y}{\partial x} = \beta $$
This can be rewritten as $$\frac{100 \cdot \frac{\Delta y}{y+1}}{\Delta x}=100 \cdot \beta,$$
which is almost the same as the equation for semi-elasticity,
$$\epsilon = \frac{100 \cdot \frac{\Delta y}{y}}{\Delta x}.$$
Common practice is to say that when $y$ is large, the two equations are basically the same, and to interpret $\beta$ as the percentage change in $y$ associated with one additional unit of $x$.
If your X is a set of dummies rather than continuous, you can do this instead.
Having said all that, it is good to think carefully about the origin of the zeros in your model. If there are lots of them, adding .01 can often drastically change your results compared to adding 1 or .001. Since the choice of constant is usually arbitrary, doing some robustness checks with different constants or even tuning the constant can work well. Another option is GLM, like a Poisson with a heteroskedastic variance that relaxes the mean-variance equality assumption, which obviates the need for any transformation entirely. The latter is my favorite option.
If zeros come from a different process than the positives, the interpretation gets more fraught. One example is expenditures on vacation and the number of children, where a big share of HHs spend nothing. More children make it less likely that a family goes on vacation, but conditional on going on one, more children lead to higher expenditures. Here the zeros come from a different choice process than the positive values, and so a more complicated model is needed.