The upload failed, so they mailed it in
At 10:40 at night, on a phone, the upload says it failed and gives no reason. Three tries later the resident gives up, and a week later an envelope lands on a clerk's desk.

When residents can't attach documents to an online application, most of the fix is plain: accept the files phones actually produce, resize and convert them for people instead of rejecting them, say exactly what went wrong and how to fix it, keep everything else they entered, and give a clear second route that stays tied to the same case.
Ten forty at night
This is a composite, but anyone who has run a public portal will recognize it.
A resident is renewing something that matters: a permit, a benefit, a license. They started after the kids went to bed, on their phone, because that's the computer they have. The form went fine. Name, address, the household questions. Then the page asks for two documents: proof of address and a recent pay stub.
They take a photo of the pay stub on the kitchen table. They tap Upload. A spinner, then a red line: Upload failed. Please try again.
They try again. Same line. They retake the photo with the light on. Same line. They try the utility bill instead. Same line. Somewhere around the fourth attempt they close the tab, because it's late and the page has given them nothing to change.
The next week, an envelope arrives at the office. Inside: a printed pay stub, a utility bill, and a sticky note with a name and "applied online, couldn't upload." A clerk now has to find the online application, match the paper to it, scan both documents, and hope the deadline didn't pass in the post.
Nobody in this story did anything wrong. The upload step did.
What the error didn't say
There are only a handful of reasons a document upload fails, and almost all of them are fixable by the person holding the phone, if they're told which one it is.
The file is too big. A phone photo is often several megabytes. If the limit is lower and the page doesn't say so before the button, the resident can't know.
The format isn't on the list. Phones save photos in formats a validator may not expect. A scanned document might arrive as something other than the PDF the system wants.
The connection dropped. On a weak signal, a large file can time out halfway. To the resident it looks identical to every other failure.
The document has more than one page. The form wants one file. The pay stub is two photos. There's no way to send both.
The filename upset something. Odd characters, very long names, a duplicate from a second try.
Each of these has a different fix. One red line that covers all of them is the same as no answer. An upload error that doesn't say why is a closed office with the lights on.
Decision guide
Five reasons an upload fails, and what to tell people
| Consideration | What went wrong | What the page should say |
|---|---|---|
| Size | Photo is larger than the limit. | Name the size and the limit, or resize it for them. |
| Format | Phone format not on the list. | Convert it on our side; say nothing. |
| Connection | Upload timed out halfway. | Say the signal dropped and offer Try again. |
| Pages | Document is two photos. | Let them add pages to one document. |
| Filename | Characters or duplicates rejected. | Rename files on our side. |
An upload error that doesn't say why is a closed office with the lights on.
Take what phones actually make
The cheapest improvement is to stop asking residents to be file converters.
Accept the image formats phones produce, and convert them on your side to whatever the case system stores. Resize large photos automatically instead of rejecting them; a pay stub doesn't need to be twelve megapixels to be read. If the system truly needs a PDF, build the PDF from the photos after upload.
Let people add more than one image for one document, in order, and stitch them into a single file behind the scenes. Show a thumbnail after each upload so the resident can see that the right thing went through, and let them remove and retake one without starting over.
State the rules before the button, in a sentence: "Photos or PDFs, up to 20 MB each. You can add several pages." Then make the rules generous enough that most people never hit them.
One more thing about photos: they capture more than the document. A pay stub shot on a kitchen table can include the school letter lying next to it. A simple crop step after upload, or a line suggesting a plain surface, keeps the case file to what you actually asked for.
Show progress for large files, and retry quietly when a connection blips. If it still fails, keep the file name and say the upload didn't finish because the connection dropped, not that it failed.
Say what happened, then keep their place
When an upload does fail, the message should name the reason and the next move in plain words. "This photo is 31 MB. We'll accept up to 20 MB. Try again, or take the photo a little further away." "We couldn't finish sending this file. Check your signal and tap Try again. Everything else you entered is saved."
That last sentence matters most. A failed attachment should never cost someone the rest of the application. Save the form as they go, so leaving and coming back tomorrow on a laptop picks up exactly where they stopped.
And offer a second route that stays connected to the same application: "Can't upload tonight? Submit without it and we'll send you a link to add documents later," or a drop-off option that asks for the application number. The envelope with the sticky note happens because the paper route and the online route don't know about each other.
How the work moves
One application, two routes, one case
- Start online
The form saves as they go.
- Upload or skip
Submit without the document if it won't go through tonight.
- Link later
A link to add documents tied to the same application number.
- Or drop off
Paper at the counter asks for the application number first.
- One record
The clerk sees both routes on one case, including failed attempts.
What the clerk sees
The office side of this is where the real cost hides. Every mailed envelope or counter visit that follows a failed upload is matching work: find the record, compare names, scan, attach, note it.
If you log upload failures by reason, you'll know which of the five problems you have before anyone complains. A cluster of size failures means the limit is wrong. A cluster of timeouts on phones means you need resumable uploads. A spike right after a change to the form means the change broke something.
Staff should be able to see that an application has a failed upload attempt attached to it. Then a clerk who opens the case can reach out with the link instead of waiting for paper, and the resident hears from a person rather than from silence.
Put this into practice
This week, have three people on staff apply through your portal on their own phones, at home, using a real photo of a real document. Don't help them. Write down every place they hesitated and every message they saw. Then pull the upload error logs for the last month and sort them by reason, if your system records one. If it doesn't, that's the first fix.
We help public-sector teams make online services people can actually finish. If your upload step is sending paper back to the counter, talk to us.
Related work: Wellthie.
We build alongside the people doing the work.
Bring us the problem you’re thinking about.