About a year ago, IMBA's membership team noticed many of our members were renewing after their expiry date, and often after the "Lapsed" or grace period of two months we have in place. To help accelerate these renewals, our membership team decided to offer a "members only special"—a t-shirt normally reserved for $100 and up memberships for a lower membership fee of $50—if the member renewed as an "Early Bird" i.e. before their expiry date. Since this functionality wasn't readily available in CiviCRM, we made it a "call-in" special only, so a renewing member would have to phone up our membership team to take advantage of the offer. We had a positive response to the special, but it wasn't sustainable from a human resources perspective.
We decided to go digital.
Working with a contractor, we laid out several scenarios we'd like to use the extension—early bird renewal offers, special premiums for members who were expired, the ability to offer different premiums to different membership types, and others. A simple interface was added to the premium configuration workflow that adds the ability to display a premium on a contribution page only when a certain set of membership type and status criteria are met. While the extension only has parameters for membership status and type, they can be used independently from each other or in tandem to run a variety of special offers.
Additionally, there is also the functionality to hide an existing premium if the Early Bird premium is being displayed. This feature is helpful if you want to run a promotion where a premium your organization normally offers at one price level is being offered at a lower price for certain types or statuses of members, for instance. The Early Bird Premiums extension works when a user is logged in, or follows a checksum link. It also works on all contribution page types, not just those used for memberships. And if you want to get really specific, you can choose to hide the premium if the user selects an option from the price set that doesn't match the criteria, even if their membership does. To be fair, we haven't quite worked out a use case for that one, but thought it might be useful to someone.
We've been pleased with the results, and have just released it in the CiviCRM Extensions Directory.