Hello @dacarter ,
That is a great question, and you are correct - there is no built-in option for different price structures / early-bird pricing in Canvas Catalog (to my knowledge).
My office has implemented Catalog for over 4 years, and our recommendation would be to either implement promotion codes like you mention - or better yet set the initial price as the Early Bird price, then (manually) have someone update the price to the higher amount on the date which the Early Bird rate expires.
While this could technically be automated via a script + the Catalog API, we have fortunately had the bandwidth to quickly update any Early Bird prices on the morning of the switch.
My advice would be to avoid using multiple Catalog listings for the same offering, as this would require multiple Canvas course environments, potentially complicating both the student experience and the admin/management of the students.
I hope you can find a solution that makes it easy on your staff, please let me know if I can assist.
P.S. feel free to submit Instructure Community Ideas (i.e. Catalog suggestions) here: https://community.canvaslms.com/t5/forums/postpage/board-id/canvas-ideas/search-before-post-mode/tru...
Best,
Kevin Hitt
USF Corporate Training and Professional Education