Business Edge Cases
Purpose
Situations specific to the Merchant side that fall outside the happy path.
Cases
- Merchant changes commission rate mid-campaign — resolved default (State Machines): existing approved creators keep their locked-in rate, new applicants get the new rate. No re-consent flow needed as a result.
- Merchant pauses or ends a campaign with active creators — resolved default (State Machines): paused campaigns keep honoring in-flight attribution within the 30-day window; ended campaigns stop attributing new clicks immediately but honor pre-end clicks within the window.
- Merchant's Paddle account gets restricted/flagged by Paddle (e.g. Paddle's own risk systems flag unusual activity) — not addressed in any prior doc. Needs a defined SellVia-side response: likely auto-pause all of that merchant's live campaigns until resolved, to avoid creators promoting a merchant who currently can't receive funds.
- Merchant never completes Paddle onboarding after creating campaigns — campaigns should not be able to go live (draft → live transition) until Paddle onboarding is verified complete; this should be an explicit gate in the Campaign State Machine.
Open Questions
Merchant Paddle-restriction handling (see above) — genuinely unaddressed until now, worth a real decision before launch given it's not a rare edge case for any platform processing real payments at scale— RESOLVED, see Update (2026-08-07) below.
Update (2026-08-07): RESOLVED — Auto-Pause Immediately
Founder-confirmed: on seller.updated webhook indicating a Paddle restriction (04. Event-Driven Architecture already tracks this event type), all of that merchant's live Campaigns transition to paused automatically — no manual Admin step required to trigger it. Existing creators keep their in-flight attribution honored within the 30-day window per the standard "paused" behavior already defined in 01. State Machines; no new applications accepted while restricted. Merchant is notified (01. Notification Logic) explaining why, and campaigns can resume once Paddle lifts the restriction (detected via a subsequent seller.updated event).
Update (2026-08-23): Paddle Removed, Swich Confirmed — Offer Replaces Campaign
Founder decisions, full reasoning in 02. Architecture Decision Log.
- Every "campaign"/"Campaign" above means "offer"/"Offer" — no separate Campaign entity (01. Domain Model).
- "Merchant's Paddle account gets restricted/flagged" → "Merchant's Swich billing gets restricted/flagged." The auto-pause response above is unchanged in principle — all of that merchant's live Offers transition to
pausedautomatically — but the trigger event is now whatever Swich's equivalent restriction/risk-flag webhook is, not Paddle'sseller.updated. Exact Swich event name/shape unconfirmed pending real integration. - "Merchant never completes Paddle onboarding" → "Merchant never completes Swich billing connect." Same gate logic (Offer cannot go draft → live until this is complete), different processor. See 05. Payment Flow, 03. State Machines' Offer State Machine.