By Saad Iqbal
Somewhere in the Permian, a saltwater disposal (SWD) well that used to take 20,000 barrels of produced water a day at 800 psi is now fighting for 14,000 at the same pressure, and nobody filed a report about it because nothing “happened.” Injectivity decline doesn’t announce itself — there’s no alarm, no red light, just a slow, boring climb in the pressure needed to push the same volume underground. By the time a pumper notices the wellhead pressure creeping toward its permitted limit, the well may already be most of the way to needing an acid job, a workover, or — in the worst case — a new disposal well, while every barrel that can’t go down that well has to be trucked somewhere else at several times the cost.
That economics gap is enormous, and it’s the whole reason injectivity surveillance is worth automating. Produced water disposal in the Permian typically runs $0.40–$1.50 per barrel through a pipeline into a centralized injection well; trucked disposal runs $2.00–$2.50 per barrel, and in tight logistics windows has been reported as high as four times the cost of injecting it (Argus Media, 2023; SPE’s The Way Ahead, 2019). Water-oil ratios in the basin commonly run 2:1 to 15:1, and three to six barrels of water come up for every barrel of oil — so a disposal well that quietly loses capacity doesn’t just cost you a workover line item, it can force barrels onto the expensive side of that cost spread for weeks before anyone schedules a fix.

Why SWD Wells Lose Injectivity
A saltwater disposal (SWD) well loses injectivity for a handful of well-understood reasons, and most of them build up gradually rather than failing all at once:
- Near-wellbore plugging. Suspended solids, scale (commonly calcium carbonate or barium sulfate), and bacterial biomass in the injected water accumulate in the perforations and near-wellbore rock matrix, choking off the easiest flow paths first.
- Formation damage from incompatible fluids. Injected water chemistry reacting with the formation’s connate water or clays can trigger precipitation or clay swelling inside the pore space itself.
- Fines migration. High injection rates can mobilize fine particles within the rock, which then redeposit and bridge pore throats downstream.
- Thief-zone depletion or compartmentalization. As the receiving zone pressures up from years of injection, the path of least resistance narrows — the same underlying mechanic covered in our piece on waterflood conformance and thief zones, just running in the disposal direction instead of the sweep direction.
Every one of these shows up first as a change in the relationship between injection rate and injection pressure — the injectivity index — long before it shows up as an operator having to curtail volumes.
The Earliest Signal Is a Slope, Not a Number
The classic surveillance tool for this is the Hall plot, which we walked through step by step in Hall Plot Analysis: Catch Water Injection Well Decline Before the Workover. The short version: plot the cumulative pressure-time integral against cumulative injected volume, and a healthy well traces a straight line. A well losing injectivity doesn’t jump off that line — it bends, with the slope steepening as the same incremental barrel takes more and more pressure to place. That bend is the earliest honest signal you have, and it typically shows up well before wellhead pressure alone would raise a flag, because wellhead pressure alone can’t distinguish “the well is plugging” from “we’re injecting a little faster today.”

What AI changes here isn’t the formula — the Hall integral is decades old and doesn’t need reinventing. It’s the surveillance cadence. Most operators eyeball Hall plots manually, well by well, on whatever schedule someone remembers to pull the data. A detector that runs the same slope calculation continuously against hourly SCADA tags, across every SWD well in a field, catches the bend in the line within days of it starting instead of whenever the next manual review happens to land — and it catches it on wells nobody was specifically worried about, which is usually where the expensive surprises come from.
What That Looks Like in Practice
A workable version of this doesn’t require a new SCADA system — it requires a scheduled job that reads tags you already have:
- Pull hourly injection rate and surface pressure for each SWD well from the historian.
- Compute the rolling Hall integral and its slope over a trailing window (30–60 days is a reasonable starting point for most Permian SWD wells).
- Flag a statistically significant slope increase — not just any day-to-day noise, but a sustained change relative to that well’s own recent baseline.
- Rank flagged wells by rate of change, so the well deteriorating fastest surfaces first, and route it to a surveillance engineer to confirm before scheduling an acid job, a workover, or a capacity reallocation.

The Hall integral itself is simple arithmetic: sum (wellhead pressure × time step) for the pressure-time term, and sum (injection rate × time step) for the cumulative volume term, then track how the first grows against the second. Here’s that logic in Python with pandas, computing a rolling slope so a bend shows up as a number instead of something you have to eyeball on a chart:
import numpy as np
import pandas as pd
# Hourly SCADA tags: wellhead pressure (psi) and injection rate (bbl/hr)
df = pd.DataFrame({
"hours": np.arange(0, 1440, 1), # 60 days of hourly data
"pressure_psi": [...], # your historian pull
"rate_bbl_hr": [...],
})
df["cum_bbl"] = df["rate_bbl_hr"].cumsum()
df["hall_integral"] = (df["pressure_psi"] * 1).cumsum() # Σ(p × Δt)
WINDOW_HOURS = 24 * 14 # 14-day trailing window
def rolling_hall_slope(group):
if len(group) < WINDOW_HOURS:
return np.nan
x = group["cum_bbl"].values[-WINDOW_HOURS:]
y = group["hall_integral"].values[-WINDOW_HOURS:]
slope, _ = np.polyfit(x, y, 1)
return slope
df["hall_slope"] = [
rolling_hall_slope(df.iloc[max(0, i - WINDOW_HOURS):i + 1])
for i in range(len(df))
]
baseline = df["hall_slope"].iloc[WINDOW_HOURS:WINDOW_HOURS * 2].mean()
latest = df["hall_slope"].iloc[-1]
if latest > baseline * 1.25:
print(f"FLAG: Hall slope up {latest / baseline - 1:.0%} vs. baseline")
else:
print("OK: injectivity trend stable")
Run that same check across every SWD well in a field each night, and you get a short list of wells whose slope has moved meaningfully against their own history — which is a very different, and much more actionable, signal than a single pressure reading compared to a fixed limit.
That last step matters: the model’s job is to narrow a field of fifty or a hundred disposal wells down to the three or four actually worth a human look this week, not to auto-dispatch a workover crew. A surveillance engineer who gets a short, reliably-ranked list checks it; one buried under false alarms stops checking it within a month.
Why Catching It Early Is Worth the Trouble
The cost comparison is what makes early detection worth building, rather than a nice-to-have dashboard nobody opens:

A well caught in the early slope-change window is a candidate for a relatively cheap acid stimulation or a scheduled workover during a planned intervention. A well caught late — after it’s lost enough capacity to force curtailment — pushes volumes onto trucked disposal at roughly two to six times the per-barrel cost, on top of whatever the eventual remediation costs anyway. Produced water disposal already runs as much as a quarter of lease operating expense in parts of the Permian; letting injectivity decline run undetected is one of the more avoidable ways that number gets worse.
What to Verify Before You Trust the Flag
- Check for rate changes first. A slope change driven by a genuine, intentional change in injection rate isn’t plugging — confirm the flagged well wasn’t just turned up or down before escalating it.
- Separate seasonal and operational noise from a real trend. Short-term pressure swings from nearby offset activity or temperature effects on fluid viscosity can mimic a slope change over a few days; require the trend to hold over your trailing window, not a single reading.
- Confirm with a step-rate or falloff test before committing to a workover. The continuous model tells you where to look and how urgently; it isn’t a replacement for a proper injectivity test when real money is on the line.
- Watch for sensor drift. A pressure transmitter quietly drifting out of calibration produces the same slope signature as a plugging well — rule out the gauge before you call the rig.
None of this replaces the engineering judgment behind a workover decision. What it does is make sure that judgment gets applied while the fix is still cheap, instead of after the well has already pushed you onto the expensive side of the disposal cost curve. If scale is a contributing factor in your system, it’s worth pairing this with AI scale prediction in produced water using the Langelier Saturation Index — the two surveillance signals catch different failure modes feeding the same injectivity number, and together they give a surveillance engineer a much more complete picture of why a well is losing capacity.