Shit That Bites You in Production.
The stuff that looks fine in a diagram, passes a happy-path test, and then ruins your afternoon. Symptoms, why it happens, what to inspect and how to make the next incident cheaper.
The Journey Is Running. The Triggered Send Is Not.
Contacts enter the Journey, but an email activity appears to stop sending or a queue starts building.
Personalization Can Become a Throughput Problem
Journey injection looks healthy, but email build/send throughput falls behind and queue depth grows.
The Sendable Relationship Quietly Defines Your Contact Identity
Duplicate contacts, inconsistent Journey entry, or the same human appears under multiple ContactKeys.
Journey Data Is a Snapshot. Contact Data Is a Moving Target.
A Decision Split routes a contact differently from what the current source table seems to show.
Overwrite Can Change How a Scheduled Entry DE Gets Evaluated
A scheduled DE-entry Journey evaluates records differently after an upstream Query Activity changes its target action.
Skipped Automations Are Often a Scheduling Smell
An automation has Skipped instances even though nobody intentionally skipped it.
_AutomationInstance Can Duplicate a Run Because of Notification Recipients
A health query appears to show duplicate automation instances for the same run.
Automation Health Is UTC While Classic Tracking Often Is CST
Automation timestamps and email/mobile tracking appear offset in a combined operational report.
A STOP Can Exist Without a SubscriberID
You see an opt-out/subscription event for a mobile number but no corresponding contact/subscriber ID.
Status 2000 on a Shared Code Is Not Necessarily Handset Delivery
SMS tracking looks delivered, but business reports say recipients did not receive messages.
Encrypted Query String Does Not Mean “Skip Validation”
A CloudPage trusts decrypted/request parameters directly for updates, preference changes or record access.
CloudPagesURL from SMS/Push Has an All Subscribers Trap
A CloudPagesURL link used from SMS or push returns an error for a recipient.
LookupRows() Stops at 2,000 Rows
A loop over LookupRows() appears to “randomly” miss records in a one-to-many dataset.
RaiseError Can Skip the Send but Still Show Up in Tracking Metrics
Tracking/report counts include recipients for which RaiseError prevented the email from being sent.
A WSProxy Retrieve Is Not “All Rows” Just Because It Returned Results
Metadata extraction succeeds but silently misses objects after the first response page.
Do Not Mint an OAuth Token for Every API Call
Authentication calls spike, integrations slow down, or token creation starts being rate-limited.
A Tight Retry Loop Turns Rate Limiting into Self-DDoS
An integration receives HTTP 429 and immediately gets worse as workers retry faster.
Joining _Open Directly to _Click Can Explode Rows
A subscriber/job report returns far more rows than either source and aggregates start looking absurd.
“Six Months” Is a Default, Not a Universal Rule for Every Data View
A report assumes every system view has identical retention and either misses available data or plans on data that is not there.