Design the reward before the puzzle
Start from what people get: a discount code, a link to an unlisted page, a downloadable file, a short video, a message. The reveal supports all of those, and several at once, which means the puzzle can be as small as the reward is real. A three-letter password in a shop window is enough when the code behind it is worth using.
Print the code, keep the link
Download the QR as a PNG and put it on a flyer, a window, a table tent, a slide or a pack insert. The link behind it stays yours to edit: change the offer, change the answer, change the end date, and the printed code keeps working. That is the difference between a campaign and a reprint.
Limit it the way an offer should be limited
Set an opening date so a launch code does nothing before its hour. Set an expiry so a seasonal offer closes itself. Cap the number of players, add a shared access code for a private list, or make it single use for a one-winner mechanic. Everything is enforced on the server, not in the page.
Measure whether it worked
Sessions, attempts, success rate and completion tell you whether the puzzle was the right size. Too easy and everyone completes on the first attempt; too hard and you will see the abandonment. Both are useful before the next print run.