Seasonal campaigns
Ship a time-bound campaign — Black Friday, World Cup, app anniversary — by activating and cancelling a dashboard campaign on a planned calendar.
Use this when the promotion has a clear start and end date and you want to avoid shipping two app releases around it. Don't use this when the offer is permanent; evergreen offers belong in the default paywall, not a campaign.
Goal
Seasonal promos historically mean a rushed release the week before, a second release to take the banner down, and a third if the end date slips. This recipe replaces the release cycle with a single dashboard campaign that an operator activates on the start date and cancels on the end date — no code ships between the two dates.
Setup
In the dashboard
Create a campaign
bf-2026-annual-50offand keep it inDraftstate while you prepare it.Trigger: session start, plus a second campaign triggered on
CheckoutOpenedso the user sees the banner both passively and at intent.Audience: free users in markets where the offer is valid (
countryin["US", "CA", "GB", "DE"]).Action: fire
yourapp://paywall/black-fridaypointing to a holiday-themed paywall with the 50%-off annual SKU.Frequency: once per session, capped at four sessions total.
On the planned start date, move the campaign to
Active. On the end date, move it toCancel. The default paywall campaign stays running throughout and reclaims every session once the seasonal campaign is cancelled.
In the app (engineering hand-off)
Ship the seasonal paywall screen in a release before the start date. Remote scheduling cannot introduce new screens.
Ensure the correct SKU is approved in App Store Connect and Google Play well before the start date.
Register the
yourapp://paywall/black-fridaydeeplink.Set region on the user so targeting works:
await Amply.setCustomProperty('country', deviceCountry);
How it runs
Before November 24, the campaign sits in
Draft. The default paywall runs normally.On the morning of November 24, the operator moves the campaign to
Active. Users in the target markets who open the app from then on see the seasonal paywall.During the window, users can hit the paywall up to four times across sessions. After that, the frequency cap silences it and the default paywall returns for that user.
A user outside the target countries never matches. They continue to see the default paywall throughout.
On December 2, the operator moves the campaign to
Cancel. The default paywall immediately reclaims every session.The team reviews the campaign report in the dashboard and decides whether to re-run the same campaign with tweaks for Cyber Monday next year.
Metrics to watch
View-to-purchase rate during the window versus the default paywall in the same window a year prior.
Share of revenue from the seasonal SKU — cannibalization matters. If monthly revenue drops as annual-50off rises, check whether you pulled forward demand.
Post-window cancel rate at day 30 and day 60. Discount-led cohorts often churn earlier.
Regional split. If one country converts dramatically worse, the creative or the localization is off.
Related
Paywall versioning — the underlying variant pattern this recipe relies on
Testing and rollout — previewing the campaign before it goes live
Creating a campaign — moving a campaign through Draft → Active → Cancel
Targeting an audience — country and segment filters
Campaign delivery — how overlapping campaigns are evaluated
AI-assisted integration — describe this campaign in plain language and have your AI assistant build it
Last updated