Fido Campaign Plan

Push & SMS Campaign Plan — Ghana 2026

Standalone campaigns only — journeys are separate and not duplicated here
📍 Ghana · CleverTap + Infobip 📅 Effective May 2026 ⚠️ Based on April 2026 spam audit (11M sends, 30% users over-messaged)
Journeys own → ← no campaign fires while user is active in these
3
Campaign pushes / user / 7 days
2
Campaign SMS / user / 14 days
1
Campaign push per user per day
30d
Sunset after no engagement
📋Campaign Roster
#CampaignPlatformChannelWhoFrequencyStatus
C1 Referral — Weekly Push CleverTap Push Active LN1+ · no DPD 1× / week ✓ Live (rebuilt)
C2 Referral — Reward Notification CleverTap Push Referrer — friend just borrowed On event · exempt from cap ✓ Live
C3 Payday Boost CleverTap Push SMS fallback Eligible · no active loan · no DPD 1× / month (26th) ✓ Run monthly
C4–C7 Seasonal Occasions CleverTap Push SMS fallback Eligible · no active loan Per calendar below ✓ Scheduled
C8 Eligible → No L0 (post-journey) CleverTap Push SMS Eligible · J03 sunsetted · 30d+ silent 1× / month New — build
M1 USSD KYC Users Infobip Manual SMS only Users not in CT who can KYC via USSD Max 2× / month Define cadence
M2 Score Reset — Old Users Infobip Manual SMS only LN1+ users with reset score · not auto-notified One-time batch · then ongoing via automation Backlog — send ASAP
Not in this plan (journeys own them): KYC nudges · Eligible → L0 (active journey window) · Repayment reminders · Post-repayment reborrow · Dormant 60-day reactivation
🗑️What We Retired — April Campaigns Killed
7 campaigns paused — journeys own these flows or they were over-firing
CampaignWhy killedReplaced by
Referrals Program - all users V329/30 days in April · avg 8.4× per userC1 (1×/week cap)
GH Referral - Push - Apr [daily × 14]Daily one-offs stacked on V3 · users hit 10–15× in AprilC1 absorbs this
GH KYC Catch All — 6× in AprilJourney J01/J08 already owns KYC nudgesJourney only
GH KYC No ID — 4× in AprilJourney J08 owns KYC drop recoveryJourney only
Push - reg completed no L0 - MonthlyWas doubling on top of J03 (double-send guaranteed)C8 (post-journey only, after 30d sunset)
GH Eligible Approved no L0 — Apr 5, 10, 23Same — J03 owns the active windowC8
Top-ups - Push after repaymentJourney J06 owns reborrow nudgeJourney only
🛡️Anti-Spam Rules
Hard caps (CT campaigns)
  • Max 3 campaign pushes per user per rolling 7 days
  • Max 1 campaign push per user per day
  • Max 2 campaign SMS per user per rolling 14 days
  • Set in CT: Settings → Campaign Limits
Timing rules
  • Send window: 8am – 8pm local time only
  • No sends before 10am on Sundays
  • 24h minimum gap between any two messages to the same user
Never fire a campaign while…
  • User is DPD 1+ (any campaign)
  • User is in active KYC journey (J01/J08/J02)
  • User is in J03 (eligible → L0) active window
  • User is in J06 reborrow window (7d post-repay) — except C2 reward
Exempt from caps
  • C2 Referral reward (reactive, friend-disbursement event)
  • Transactional messages (OTP, loan confirmation) — not campaigns
  • Journey messages — managed by journey frequency rules
  • Infobip M1/M2: separate caps (2× / 14d per user)
🎁C1 & C2 — Referral Program
C1 Weekly Referral Push
CleverTapPush1× / week
Who
LN1+ · no DPD · opted in · not in active reborrow or repayment window
Message
Push "Invite a friend, earn GHS [X] — share your code now"
Frequency
Max 1 push/user/week. The old V3 recurring + daily one-offs are replaced by this single weekly campaign. They are not additive.
No SMS
Referral is push-only. SMS is too intrusive for a referral ask — if push is dead (app deleted) we don't chase with SMS for referrals.
Exclusions
DPD 1+ · Active KYC journey · J03 active window · Already 3 converted referrals this month · User received a push today
⏱ Sunset: 0 opens in 4 consecutive weekly sends → remove from referral list for 60 days
C2 Referral Reward Notification
CleverTapPushExempt from cap
Who
The referrer — fires when their invited friend completes their first disbursement
Message
Push "Your friend borrowed — your GHS [X] reward is on its way 🎉"
Cap note
Reactive event notification. Does not count toward the 3-push/7-day cap.
Always fires — no sunset on reward notifications
💸C3 — Payday Boost
C3 Monthly Payday Boost
CleverTapPushSMS fallback1× / month
Who
Eligible users · no active loan · not DPD · not in J03/J06 active window
Timing
Sent on the 26th of each month (Ghana payday window: 25th–28th)
Push msg
Push "Payday is here — your GHS [X] is ready whenever you need it"
SMS fallback
SMS Only for push-inactive users (no push open in last 30 days — likely deleted app or disabled notifications). Same payday message. CT segment: push_last_opened > 30 days ago. SMS counts toward the 2/14d SMS cap.
Exclusions
DPD 1+ · Active loan · In J03/J06 journey · Received push today · Hit weekly cap
⏱ Sunset: 0 opens in 3 consecutive monthly paydays → skip 2 months
📅C4–C7 — Seasonal Occasions
#OccasionDateMessage AngleTargetSMS fallback?Approved
C4 Back to School Jan 10 + Sep 1 "School fees coming — cover it with Fido" Eligible · no active loan Yes — push-inactive only 2× / year
C5 Christmas / Festive Dec 15–18 "Christmas is coming — get sorted with Fido" LN1+ · no active loan Yes — push-inactive only Dec only · 1×
C6 New Year Jan 2 "New year, fresh start — your limit is ready" Eligible · no active loan Yes — push-inactive only Jan only · 1×
C7 Independence Day Mar 6 Brand moment — no hard CTA All opted-in No — brand only Optional · sign-off needed
  • SMS fallback rule: For C4–C6, add a second CT campaign variant targeting users where push_last_opened > 30 days. These users likely have push disabled or deleted the app. Send the same message via SMS. Counts toward the 2-SMS/14d cap.
  • Not approved: Valentine's, Easter, Ramadan, ad-hoc product promos (require separate sign-off, not in standing calendar)
💰C8 — Eligible → No L0 (Post-Journey)
C8 Eligible → No L0 — Monthly Campaign (post-journey only)
CleverTapPushSMSBuild
Who
Users who are still eligible (score ≥270) but never took L0 — AND journey J03 has already sunsetted them (no J03 message in last 30+ days). This is the segment that fell through the journey without converting.
Why needed
J03 gives up after 4 messages over 7 days. Some of these users are still eligible months later — a monthly re-touch with a fresh angle keeps them in play without spamming them while the journey is active.
Frequency
Max 1× per month. This campaign replaces the old "Push - all reg completed but no L0 - Monthly" — same idea, but now with the critical rule: it only fires to users who are outside the journey window.
Push msg
Push Rotate angle monthly: use-case (school fees, emergency, business) or limit reminder ("GHS [X] is still waiting for you")
SMS
SMS For push-inactive users (no push open in 30+ days). Same message, same monthly cadence. SMS counts toward the 2/14d cap.
Key exclusion
Exclude: user received a J03 journey message in the last 30 days. This is the rule that was missing before — the old campaign was firing on top of an active journey.
Exclusions
DPD 1+ · Active loan · In J03 active window (last 30d) · Hard-declined · Score now <270 (re-evaluate)
⏱ Sunset: 0 conversions + 0 opens in 3 consecutive monthly sends → mute 60 days, re-enter on limit increase event only
📱Manual Infobip Campaigns
⚠️

These are outside CleverTap — manual Infobip sends

Users in M1 and M2 are either not in CT at all (USSD segment) or need to be reached before they re-engage with the app (score reset). Push is not an option. These are managed directly in Infobip, not CT journeys or campaigns.

M1 USSD KYC Users
Infobip ManualSMS only
Who
Users who can complete their KYC via USSD (*713#) and are not registered in CleverTap — no app, no push token. They exist in the backend but CT can't reach them.
Goal
Drive them to complete USSD KYC and eventually get to L0. Not about the app — specifically about the USSD flow.
Message
SMS "Complete your Fido verification now — dial *713# from your phone. Takes 2 minutes." Include a short USSD code and a basic benefit hook (your loan limit, quick cash etc.)
Frequency
Max 2× per month per user. Send 1 SMS, wait 7 days, send 1 follow-up if no KYC event. Then stop for 30 days.
List management
Export the segment from Snowflake/backend weekly. Remove users who completed KYC before sending. Upload fresh list to Infobip each send — do not recycle stale lists.
Tracking
No CT attribution possible. Track via backend: count of USSD KYC completions within 48h of send date vs baseline days. Manual report weekly.
⏱ Sunset: User received 4 SMS attempts over 2 months with no USSD KYC completion → remove from list permanently
M2 Score Reset — Old Users (One-Time + Ongoing)
Infobip ManualSMS onlySend ASAP
Context
Fido reset the credit score for a cohort of old users. New resets get an automatic SMS via the backend pipeline. Old resets (pre-automation) were never notified — they don't know their score has been reset and there's a fresh opportunity for them in the app.
Who
LN1+ users whose score was reset before the automation was in place. Extract this list from Snowflake: users with a score_reset_date before the automation go-live date, no subsequent disbursement, and no recent CT journey entry.
Goal
Get them back into the app to check their score and take a new loan. The hook is: "Your Fido score has been refreshed — you may have a new limit."
One-time send
SMS "Your Fido credit score has been updated — open the app to check your new limit and borrow today. [deep link]"
Follow-up
If user opens app within 7 days → they re-enter CT and the journey handles the rest (J03 if eligible). No second Infobip SMS needed. If no app open → 1 final SMS after 7 days, then stop.
Ongoing
After the backlog is cleared: new score resets are already auto-notified by the backend. This campaign is one-time for the old cohort only. Monitor that the automation is firing correctly for all new resets going forward.
Priority: send the backlog ASAP — these users have been waiting without knowing. Max 2 SMS per user then remove from manual list.
📲When to Use SMS vs Push
  • SMS as fallback (C3, C4–C7, C8): If user hasn't opened a push in 30+ days, switch to SMS for that campaign. Don't send both — pick one. Segment in CT: push_last_opened > 30 days.
  • SMS as primary (M1, M2): Users not in CT or users who need to be reached before they re-open the app. USSD KYC and score reset are SMS-first by definition.
  • Referral (C1) — push only, no SMS fallback: If a user has deleted the app and disabled notifications, they're unlikely to refer friends. The SMS slot is too valuable to spend on a referral ask to a disengaged user.
  • Never send both push and SMS for the same campaign on the same day. Pick the channel based on user state. Push-inactive → SMS. Push-active → push only.
  • Total SMS budget per user / month: With the 2/14-day cap, a user can receive at most ~4 campaign SMS per month. Reserve those slots for high-value moments: payday, score reset, C8 eligible re-touch. Don't burn them on referral or brand occasions.
🚫Exclusion Rules — Add to Every CT Campaign
FilterHow to implement in CTApplies to
DPD 1+User property: overdue_days ≥ 1All campaigns
In active KYC journeyEvent: "KYC journey step received in last 7 days"All campaigns
In J03 (eligible → L0 active)Event: "J03 message received in last 30 days"All campaigns (critical for C8)
In J06 reborrow windowEvent: "loan repaid in last 7 days AND no new loan"C1, C3, C4–C8
Received push todayCT Global Limit: 1 push per day per userAll CT campaigns
3+ campaign pushes this weekCT Global Limit: 3 per 7-day rolling windowAll CT campaigns
2+ campaign SMS in last 14 daysCT Global Limit: 2 SMS per 14-day windowAll CT SMS variants
Hard declined / fraud-flaggedUser property: blocked = trueAll campaigns + Infobip lists
Opted out of marketingCT built-in unsubscribe — never overrideAll CT campaigns
🌅Sunset Rules — When to Stop Sending
CampaignSunset triggerSilence periodRe-entry
C1 Referral0 opens in 4 consecutive weekly pushes60 daysAuto re-enter once after 60d — then permanent removal
C3 Payday0 opens in 3 consecutive monthsSkip 2 monthsAuto re-include after skip
C4–C7 Seasonal0 opens in last 2 occasionsSkip next occasionAuto re-include
C8 Eligible no L00 opens + no conversion in 3 months60 daysRe-enter only on score increase or limit change event
M1 USSD KYC4 SMS attempts, no USSD KYC completionPermanent removalNo re-entry
M2 Score Reset2 SMS attempts, no app openPermanent removal from manual listIf they re-engage later, CT journey handles it
Any CT campaign (push dead)0 push opens in last 6 campaign sendsSwitch to SMS variantIf SMS also not opened → 30-day full silence on that campaign