Yes, if a photo would change the number you quote. A picture of the water heater label, the stain spreading across a ceiling, or the panel with its cover off tells you more than three text fields ever will. Make the field optional, keep the file small, and test it from your own phone before you trust it.

When a photo is worth asking for

A photo earns its place when it answers something you would otherwise drive out to answer.

The model plate on an outdoor condenser. The fitting under the sink. The breaker panel with the cover off. The row of shingles missing after a storm. Each one turns a vague call into a part number and a rough price.

If your work does not price that way, leave the field off. A whole house rewire or a full roof replacement gets sized on site, and the field just adds a step.

Here is the test. Think about the last ten quotes you gave. How many times did you say “can you send me a picture of that”? If it was most of them, put the field on the form.

What the browser actually does with a photo field

A photo field is one HTML input with its type set to file. The HTML Living Standard defines that state and the attributes that go with it. It is restamped whenever it changes, and the copy read for this article was dated 18 August 2026.

The accept attribute is the one that matters on a phone. The spec says it “may be specified to provide user agents with a hint of what file types will be accepted”, and that the value is a set of comma separated tokens: image/, video/, audio/*, a MIME type, or a string starting with a period, like .jpg.

Set accept to image/* and the picker opens on photos instead of the whole file system. The spec spells that out. Given image/*, it says, “a user agent could offer the user the option of using a local camera or selecting a photograph from their photo collection”.

The same spec says that “unless the multiple attribute is set, there must be no more than one file in the list of selected files”. A roof usually needs three photos, not one. Add multiple, or the customer sends one and stops.

Then there is capture, the attribute that opens the camera straight away. It gets recommended a lot, and it is not in the HTML Living Standard at all. It comes from a separate document, HTML Media Capture, a W3C Recommendation dated 01 February 2018. That document says capture takes the keywords user and environment, and that “when the capture attribute is specified, the user agent SHOULD invoke a file picker of the specific capture control type”. It also says that if the accept value is a MIME type with no capture control type behind it, the browser must act as if there was no capture attribute at all.

Think hard before you use it. capture pushes the customer into the camera app and takes away the photo they already shot an hour earlier while standing in the rain. Most people fill in your form after they saw the problem, not while looking at it.

The size cap is where these break

Here is the part nobody checks.

Apple’s support page on ProRAW, published April 19, 2024, says “the file size of a ProRAW image at 12 MP resolution is approximately 25 MB and approximately 75 MB at 48 MP”. That is one photo.

Now the other side of the pipe. Netlify’s forms setup documentation, last updated July 14, 2025, says a form request “has a maximum size limit of 8 MB”, that only one file upload per field is supported, and that file uploads time out after 30 seconds. Web3Forms says its “Default HTML5 File uploader works only for single files up to 5 MB only”, on the same page that marks file attachments as something you need a paid subscription for. That page dates its last update to 3 November 2025. Formspree allows up to 10 files per submission at 25 MB each, inside a total request size of 100 MB, and gives every request 30 seconds to finish. That page says it was updated January 8, 2026.

So the same photo sails through one service and bounces off another. A 75 MB file fails on every one of them.

Most phones are not shooting ProRAW. The same Apple page says ProRAW files are 10 to 12 times larger than an ordinary HEIF or JPEG, so divide that 25 MB back down and an everyday 12 MP shot lands nearer 2 MB, under all three caps. The uploads that fail come from the customer who turned RAW on, and that customer will never tell you it failed. They just stop.

Go read your own form service’s page today and write its per submission cap down. Then test against it.

Test it like a customer, not like an office

Do this yourself, once, on the phone in your pocket.

  • Walk outside and take a photo the way you normally do, at whatever setting the camera is already on.
  • Turn wifi off, so you are on cell data like a homeowner standing in a driveway.
  • Fill in your own form, attach the photo, and send it.
  • Open the email. Can you actually see the photo, or only a filename?

Thirty seconds is the stated timeout at both Netlify and Formspree, and thirty seconds is not long on one bar of signal outside a house.

If that email lands somewhere you never look, that is a separate problem, and an attachment can make it worse. Form emails end up in junk for reasons that have nothing to do with the photo.

What a photo field will not do for you

It will not bring you more calls. It sorts the calls you already get and saves some driving. That is the whole of it.

It will not let you quote firm. A photo shows a stain, not the joist behind it. Put a number on a photo, then find rot, and you own that first number in the customer’s head. Give a range and say plainly what would move it.

And accept is not a lock. The spec says user agents “should prevent the user from selecting files that are not accepted”, which is should, not must. It also warns that “data received from a client should be treated with caution, as it may not be in an expected format even if the user is not hostile and the user agent fully obeyed the accept attribute’s requirements”. The attribute is a convenience for the customer, not protection for you.

Adding the field is one input and one attribute on a site you already own. Whether the photo arrives at the other end is a question for your form service, and there the answer is often a paid one. Web3Forms lists file attachments as a feature you need an active subscription for. Formspree lists file uploads as available on its Personal, Professional and Business plans. Read your own service’s page before you tell a customer their photo came through. Nothing on our pricing page is needed to add the field, and a new site build is worth thinking about for other reasons, not for this one.

If your work is mostly no heat, no power, or water coming through a ceiling, the photo field is beside the point. Those people reach for the phone number.

What to do next

  • Decide whether a photo changes your quote. If it does not, skip the field.
  • Make it optional. Never block the send button on it.
  • Set accept to image/*, and add multiple so three photos can go at once.
  • Leave capture off unless you truly want a live shot.
  • Find your form service’s per submission cap, and print it on the form in plain words, like “photos up to 8 MB”.
  • Test it from your own phone, on cell data, and open the email at the other end.
  • Read that cap page again twice a year. All three of the pages above stamp a last updated date on themselves, so you can see whether the number moved since you wrote it down.