How to Build a Shopify Product Inquiry App Using React Router (Step-by-Step Guide)

A Shopify product inquiry app is essential for stores where customers have pre-sale questions before purchasing a product. By default, Shopify does not provide a native product inquiry system.

In this blog, we will learn how to build a Shopify product inquiry app using React Router, including storefront integration and admin management.

What We Are Going to Build
  • Product page inquiry form
  • Storefront to backend communication using App Proxy
  • Admin panel to manage inquiries
  • Admin response system
  • Product linking using GraphQL
Product Page Inquiry Form (Frontend)

We added a custom inquiry form on the product page with the following fields:

  • Name
  • Email
  • Phone number
  • Message

Key Points:

  • Uses App Proxy to submit form data
  • Avoids exposing API credentials
  • Works seamlessly inside Shopify theme
Shopify product inquiry form on product page
Shopify product inquiry form on product page
Create Shopify App Using React Router

Shopify now supports building apps using React Router (Remix-based architecture).

Why React Router?

  • Server-side rendering
  • Built-in loaders/actions
  • Better performance
Inquiry Dashboard & Analytics

The app includes a dedicated dashboard that gives a quick overview of total inquiries, recent activity, and top-performing products. It helps merchants track customer interest and manage responses more efficiently.

Product Inquiry Dashboard
Shopify product inquiry dashboard screen
Manage Inquiries (Admin Panel)
Product Inquiry List
Shopify admin inquiry management screen

This screen shows all customer inquiries.

Features:

  • List of inquiries
  • Product association
  • Status (Active/Inactive)
  • Search & filter

Implementation:

  • Data fetched using loader()
  • Polaris DataTable used for UI
Create Inquiry (Admin Side)

Admin can manually create an inquiry.

// Code Example:
export async function action({ request }) {
  	const formData = await request.formData();
  	// validate data
  	// store in database
}
Product Inquiry Add
Shopify Polaris inquiry add screen
Edit Inquiry & Respond

Admin can:

  • View customer message
  • Add response
  • Toggle frontend visibility
Product Inquiry Edit
Shopify Polaris inquiry edit screen

Fetch Products Using Admin GraphQL API

We use Shopify Admin GraphQL API to fetch products.

const response = await admin.graphql(`
  query {
    products(first: 10) {
      edges {
        node {
          id
          title
        }
      }
    }
  }
`);

Benefits:

  • Faster than REST
  • Fetch only required fields
  • Better performance
Validation Logic (Reusable)

Create a utility file for validation:

export function validatePhone(phone) {
    // custom logic
}
Email Notification Templates (Admin & Customer)

To make the app more flexible and production-ready, I also implemented a custom Email Notification Template system inside the admin panel. This allows store owners to fully customize email content sent during inquiry workflows without changing code.

Key capabilities:

  • Separate templates for:
    • Admin (New Inquiry Alert)
    • Customer (Reply Notification)
  • Dynamic placeholders support:
    • {{customer_name}}
    • {{customer_email}}
    • {{product_title}}
    • {{message}}
    • {{admin_url}}
  • HTML-based editor for rich email formatting
  • Real-time variable replacement at send time

This approach ensures that merchants can control communication style, branding, and messaging directly from the app interface.

Email template configuration
Email template configuration
Product inquiry form theme settings for product page
Conclusion

This Shopify Product Inquiry App demonstrates:

  • Full-stack Shopify app development
  • Real-world use case implementation
  • Clean architecture using React Router

This approach is highly useful for:

  • B2B stores
  • Custom products
  • Lead generation

We hope this blog may be understandable and useful to you. You can email us at mage2developer@gmail.com if we missed anything or if you want to add any suggestions. We will respond to you as soon as possible. Happy to help 🙂

 

Need Further Help? or Questions?

Contact Us

Create your account

chatsimple