Playbooks · 5 min read
Building a Holiday Campaign Automation Before It Goes Live
There is already a post on this site about how holiday campaigns die, and it is the more important one. A Diwali template still answering strangers in February is the failure that actually happens, and the teardown is written up properly there.
This is the half that comes before it. What you build, in what order, in the week before a festive push — assuming you have accepted that the campaign will need switching off and have already put that date in the calendar.
Everything here is build-time. If you have not read the teardown piece, read it first; a campaign built well and never removed is still a campaign that goes wrong.
Start by deciding what is campaign and what is not
The first decision is a filing decision and it determines whether the rest of the season is manageable.
Two sets, kept physically apart. Evergreen automations answer the questions that are true in March and in October: where you ship, what the fabric is, how long delivery takes, whether you do COD. Campaign automations answer everything with an expiry: the offer, the deadline, the festive bundle, the code.
Never edit an evergreen automation to mention the campaign. It feels efficient. It is how a discount line survives into next year. Build a new automation, scope it to the campaign posts, and leave the permanent ones untouched.
The build, in the order that keeps it debuggable
- Pick the posts first, not the keywords. Under Advanced there is a specific-posts scope. Set it before anything else. A campaign automation that watches your whole account is a campaign automation that will answer a comment on a two-year-old reel.
- Write the negative keywords before the triggers. Everything that must never get a festive sales message:
refund,return,cancel,payment,paisa,order nahi aaya,late,complaint, plus the reaction words your comments always fill with. Building the refusal list first is the habit that separates an automation you trust from one you supervise. - List the trigger words the way people actually type them. Matching folds case and punctuation, so
PRICE?andpriceare one keyword and you do not need variants. It does not fold Indic vowel signs, so Devanagari spellings have to be listed individually — the localisation post covers that properly and it matters most in exactly this season. - Write the public reply short. Four to eight words under the comment. A receipt, not the offer. The offer goes in the DM where it is not sitting permanently under a post that will outlive it.
- Write the private reply with the date in it. "Offer till 12th November" is checkable. "Offer live now" is true forever and will be wrong forever.
- Turn on capture to Leads. Festive traffic is the largest list of interested people you will collect all year, and it leaves as a CSV. There is no CRM sync and no integration, so decide now where the file goes.

Test on yourself, properly
There is a Test on myself button. It sends the full pipeline to your own account and changes nothing publicly. Most people press it once, see a message arrive, and go live.
Test the failures instead:
- Send the trigger word with a hash in front of it. A
#is punctuation, so#diwalioffermatches adiwalioffertrigger. If your festive hashtag contains your trigger word, everybody pasting a hashtag block sets it off. - Send a negative keyword and confirm nothing arrives.
- Send a comment on a post outside the scope and confirm nothing arrives.
- Read the private reply on a phone, not a laptop. Festive templates are always longer than they look in the editor.

The clocks, in a season where they bite
Two things about timing that specifically affect festive campaigns.
The comment window is seven days from the comment, not from the post. A good festive reel keeps getting found for weeks, and every new comment on it is answerable — which is a gift during the season and the mechanism by which a stale template reaches a stranger afterwards.
The DM window is twenty-four hours and is restarted only by their message. So the "last day of the offer" reminder does not exist. You cannot message someone who asked about the bundle on the 3rd to tell them it ends on the 12th. Whatever the person needs to know has to be in the reply they get while the window is open. Put the deadline, the price and the way to buy in that one message and assume you will not get a second turn.
Write the festive reply as though it is the only message you will ever be allowed to send them. Structurally, it usually is.
Quiet hours on a festival night
Quiet hours hold replies until morning, which is normally correct and is occasionally wrong in exactly this season. A festival evening is when people are on their phones, and a 10pm question held until 9am is a question answered after the moment passed.
Decide it deliberately rather than discovering it. Either widen the window for the campaign days and accept that you are messaging people late, or leave it and make sure the template does not promise same-day anything.
The two dates
Before Go live, the campaign brief should have two dates and a name against each: the launch, and the teardown. Written at the top, not the bottom.
That is the whole of the discipline, and it is the reason the teardown post exists. Everything else here is a checklist you can learn in an afternoon. If this is your first campaign, the paced setup guide covers the underlying build, and the mistakes post collects what goes wrong when a campaign is built in a hurry.


