You are likely running into an issue where there are multiple updates funneling through your bot. Each update will process the complete row in the state it was in WHEN IT WAS EDITED. Meaning if Image Link column was empty on both edits and one edit triggered your bot but the other didn’t, the last row edit applied wins
So, for example, the user enters a new row - that’s 1 edit/change. Then an attached action to the form is fired and, for sake of example, applies some calculated amount to the row.
On the server side, the first edit applies and triggers the bot which updates your Image Link column (again for argument sake of example).
When the second edit is applied, IT KNOWS NOTHING ABOUT THE IMAGE LINK VALUE applied by the bot - the Image Link column will still be blank… If this second row edit happens to NOT trigger the bot, then it will be applied to the table on the server and its blank value, in the Image Link column, will OVERWRITE the recently applied value by the bot.
The suggestion by @Austin_Lambeth is a good one. It would be better to move the expression you have in the bot as the App Formula in the link column. This will avoid the bot issue altogether (assuming my suspicion above is correct). Additionally, if the Image for the link can be updated by any means OTHER than the Form in the app (say an external source or some other view or process in the app) then you might want to consider making the Image Link column a virtual column. This will keep the link always up to date, even of the image is changed elsewhere in the app.
Hope this helps!!