How to Build a Custom Form with Image Upload, Text Input, Dropdown and Store Data in Shopify?

Topic summary

A developer is building a custom form on Shopify without using third-party apps. The form needs to support image/file uploads, text inputs, and dropdown selections for non-logged-in visitors.

Current Challenge:

  • Encountering CORS (Cross-Origin Resource Sharing) policy errors during implementation
  • Seeking solutions to resolve this blocking issue

Suggested Approach:

  • Use basic HTML for form structure
  • Note that Shopify doesn’t natively process file uploads without specific configuration
  • Workarounds exist using Liquid templating and proper form encoding (enctype attribute mentioned as critical for file inputs)
  • Post-submission data handling can be achieved without apps, though specific implementation details weren’t fully shared

The discussion remains open with partial guidance provided but no complete solution yet offered for the CORS issue or full implementation details.

Summarized with AI on October 27. AI used: claude-sonnet-4-5-20250929.

Hi Shopify Devs,

I’m trying to build a custom form on my Shopify store (not using an app) and I need help implementing the following:

Form Requirements:

I want to create a form that allows website visitors to: Upload an image/file Enter text inputs Select options from a dropdown field The form will be placed on a specific page and submitted by website users (not logged-in customers necessarily).

I already build a form but always has an issue whish is CORS policy Issue Looking for best solution for that ‌‌

You’re on the right track going custom Shopify gives you some solid flexibility when you know where to look.

To get started, you’ll want to build your form using basic HTML, and yes, you can include file uploads, but Shopify doesn’t process those natively unless you use a specific type of form setup. There is a workaround using a little Liquid and a clever trick with…

Also, don’t forget to set that part’s critical if you want file inputs to work properly. But what most people miss is what happens after the form is submitted. This is where things get interesting.

If you’re planning to store the inputs or trigger something on submission, there’s a neat approach that doesn’t even require an app but I’ll save that part.

For more details, feel free to reach out.