@{ ViewData["Title"] = "Settings"; }

Overview

The Settings section is where Administrators and Managers configure how the system behaves for your company. Settings control everything from the company name that appears on your printed documents to the pricing rates used in every quote the system generates.

Changes in Settings take effect immediately and apply to all users in your company. Because changes are company-wide, only users with the Administrator or Manager role can access the Settings section. Users with lower permission levels will not see the Settings link in the navigation.

You can find Settings under Settings in the left sidebar.

Company Information

Set your company's basic contact information. This data appears on all customer-facing documents — quotes, invoices, and PDFs — so it is important to keep it accurate and professional.

  • Company Name — appears in the page header and on all printed documents.
  • Address — your shop's street address, city, state, and ZIP code. Printed on quotes and invoices.
  • Phone — your main business phone number.
  • Email — your business email address. Used as the reply-to address for notifications sent to customers.
  • Website — optional. Shown on printed documents if entered.
  • Company Logo — upload a logo image (PNG or JPG recommended). The logo appears in the top-left corner of the sidebar and at the top of all printed quotes, invoices, and PDFs.

Pricing Configuration

Pricing Configuration defines the rates used by the quoting engine to automatically calculate the cost of every quote. You can find these settings under Settings › Company Settings › Operating Costs. These are your shop's default rates — individual quotes reflect these settings at the time they are created.

Labor

  • Standard Labor Rate ($/hr) — the hourly labor cost applied to all coating work. Sandblasting prep is calculated at 1.5× this rate; masking at 0.5× — these multipliers are built into the pricing engine and are not separately configurable.
  • Additional Coat Labor (%) — the percentage of the base labor cost charged for each coat beyond the first. For example, at 30%, a two-coat job charges 100% labor for the first coat and 30% for the second.
  • Per-Role Labor Rates — you can optionally set a different hourly rate for each shop worker role (Coater, Sandblaster, Masker, etc.). When set, the role-specific rate overrides the standard rate for that type of work. If no role rate is configured, the standard rate is used as the fallback.

Equipment Hourly Rates

  • Default Oven Rate ($/hr) — the cost of running your curing oven per hour. Used when no specific named oven is selected on a quote.
  • Sandblaster Rate ($/hr) — the cost of running the sandblasting equipment per hour.
  • Coating Booth Rate ($/hr) — the cost of running the spray booth per hour.
  • Named Ovens — if your shop has multiple ovens with different capacities or costs, you can add them individually (e.g., "Large Oven — $18/hr, 200 sq ft"). When a named oven is selected on a quote the correct rate is applied automatically.

Material & Shop Supplies

  • Powder Coating Cost per Sq Ft ($/sq ft) — the baseline material cost per square foot of surface area, representing your average powder and consumables cost.
  • Shop Supplies Rate (%) — a percentage applied to material and labor costs to cover miscellaneous shop supplies (abrasives, tape, fasteners, etc.) that are not tracked per-job.

Facility Overhead (Rent & Utilities)

Facility overhead lets you recover your shop's fixed occupancy costs on every quote automatically. Rather than burying rent and utilities in your General Markup, entering them here makes the cost transparent in the pricing breakdown and ensures accurate job costing.

  • Monthly Rent ($) — your monthly shop lease or mortgage payment for the production facility.
  • Monthly Utilities ($) — monthly gas, electricity, and water costs for the shop. Do not include costs already captured in your oven/equipment hourly rates.
  • Monthly Billable Hours — the number of productive labor hours your shop operates per month (default: 160 — roughly one full-time worker for a month). This is used to convert the combined rent + utilities into a per-hour overhead rate.

How it is applied: The system calculates a per-hour overhead rate as (Monthly Rent + Monthly Utilities) ÷ Monthly Billable Hours. For each quote, it multiplies that rate by the total estimated labor hours across all line items and adds the result as a separate line in the pricing breakdown. If rent and utilities are both $0, no overhead charge is added.

Pricing Mode, Markup, Minimums & Rush Charges

  • Pricing Mode — controls how the General Markup % is applied:
    • Markup on Materials (default) — markup is added on top of costs: price = cost × (1 + markup%). A 25% markup on $100 = $125.
    • Target Margin on Total Cost — markup % is treated as a gross-margin target: price = cost ÷ (1 − margin%). A 25% margin on $100 = $133.33. Use this mode if you think in terms of gross margin rather than markup.
  • General Markup (%) — your profit percentage. Its exact effect depends on the Pricing Mode selected above.
  • Shop Minimum Charge ($) — a floor price for any job. If the calculated total falls below this amount the minimum charge is used instead. Set to 0 to disable.
  • Rush Charge — an automatic surcharge applied to jobs with Rush or Urgent priority. Choose between a percentage of the quote total or a fixed dollar amount.

Part Complexity Multipliers

Each item on a quote is assigned a complexity rating (Simple, Moderate, Complex, or Extreme). These multipliers add a percentage to the calculated item price to account for the extra handling and prep time involved with intricate parts.

  • Simple (%) — flat panels, basic shapes. Default: 0% (no adjustment).
  • Moderate (%) — standard brackets, moderate curves. Default: 5%.
  • Complex (%) — intricate assemblies, deep recesses. Default: 15%.
  • Extreme (%) — highly ornate, heavy prep required. Default: 25%.

Tax & Oven Defaults

  • Default Tax Rate (%) — the sales tax percentage applied to quote and invoice totals. Set to 0 if you do not charge tax or handle it separately. Individual customers marked as Tax Exempt will always default to 0% regardless of this setting.
  • Default Oven Cycle (minutes) — the default cure time used when scheduling oven batches. Individual named ovens can have their own default cycle time.

Pricing Tiers

Pricing Tiers let you offer volume discounts to commercial customers who send you regular work. You define each tier once in Settings, then assign a tier to each qualifying customer on their customer record. The quoting engine applies the discount automatically when generating a quote for that customer — no manual adjustment needed.

Creating a Pricing Tier

  1. Go to Settings › Pricing Tiers and click New Tier.
  2. Enter a Tier Name (e.g., "Preferred Shop", "Volume Partner", "Wholesale").
  3. Enter the Discount Percentage (e.g., 10 for a 10% discount).
  4. Add an optional Description explaining the criteria for this tier.
  5. Click Save Tier.

Assigning a Tier to a Customer

Open the customer record you want to assign the tier to, click Edit, and select the pricing tier from the Pricing Tier dropdown. Save the customer record. From that point on, any new quote created for that customer will automatically show the tier discount in the pricing breakdown.

Chart of Accounts

The Chart of Accounts is the master list of all accounting categories used in the system for tracking income, expenses, and liabilities. Every bill line item is assigned to an account from this list; every invoice generates an entry in Accounts Receivable; every payment records a credit to the relevant bank account.

Typical accounts for a powder coating shop include:

  • Accounts Receivable — money customers owe you (created automatically from invoices).
  • Accounts Payable — money you owe vendors (created automatically from bills).
  • Cost of Goods Sold — direct material costs: powder, primer, consumables used in jobs.
  • Shop Supplies — indirect shop materials not tied to a specific job.
  • Equipment Maintenance — service and repair costs for shop machinery.
  • Utilities — gas, electricity, and water.
  • Rent / Occupancy — monthly rent or lease payments for the shop premises.
  • Operating Expenses — general overhead not covered by other categories.
  • Revenue / Sales Income — income from completed jobs (created automatically from paid invoices).

The chart of accounts is typically configured once during initial setup. You can add new accounts at any time if your accounting needs expand.

Notification Settings

The system has two notification channels: the in-app notification bell for real-time activity alerts inside the application, and email/SMS notifications for outbound customer and team communications.

In-App Notification Bell

The bell icon () in the top-right header appears for all logged-in users. A badge shows the count of unread notifications. Click it to open the dropdown showing your 20 most recent notifications — both read and unread.

  • Unread notifications have a purple left border, a light indigo background, and a blue dot.
  • Read notifications are dimmed with no border.
  • Click any notification to open a detail modal. If there is a linked record, click View to navigate to it.
  • Use Mark all read to mark everything as read at once.
  • Click View all notifications at the bottom of the dropdown to see your full notification history.

The bell fires automatically for external customer actions only:

  • Customer approves a quote online
  • Customer declines a quote online
  • Customer pays an invoice online via Stripe
  • Customer pays a deposit online via Stripe
  • Platform announcement sent by the Powder Coating Logix team

Notification History

The Notification History page shows a full paginated list of all in-app notifications. Unread rows are highlighted. Click any row to open the detail modal, which also marks the notification as read. Email and SMS notification history is available separately at Notification Logs.

Platform Announcements

The Powder Coating Logix platform team can send announcements to your company. These are delivered directly to your notification bell — not as page banners. Announcements may cover scheduled maintenance, new features, or policy updates. They appear as Announcement type items in your bell dropdown and can be cleared with "Mark all read."

Email Sender Identity

Set the From Email Address and From Display Name used on all outgoing emails. If left blank, the system-wide SendGrid sender address is used. Using a domain-verified address (e.g., billing@yourshop.com) greatly reduces the chance of your emails landing in customers' spam folders.

Notify On

Each toggle controls whether that event type sends a customer-facing or internal notification email:

  • New Job — emails your team when a new job is created.
  • New Quote — emails your team when a new quote is created.
  • Job Status Change — notifies the customer when a job's status changes.
  • Quote Approval — notifies the customer when a quote is approved.
  • Payment Received — sends the customer a payment confirmation email when a payment is recorded against their invoice.

Alert Thresholds

These values control how many days before an event the system highlights it as upcoming in the UI (for example, flagging a quote as expiring soon in the quotes list).

  • Quote Expiry Warning (days before) — quotes expiring within this many days are flagged in the quotes list.
  • Due Date Warning (days before) — invoices coming due within this many days are highlighted.
  • Maintenance Alert (days ahead) — upcoming maintenance tasks scheduled within this many days are highlighted.

Automated Payment Reminders

The payment reminder system automatically emails customers when their invoices become overdue. You control whether this feature is active and exactly how many days past due each reminder fires.

  • Enable Payment Reminders — master on/off toggle. When off, no automated reminder emails are sent regardless of the day settings below.
  • Reminder Days — a comma-separated list of day milestones (days past the invoice due date) at which a reminder email is sent. For example, 7,14,30 sends one reminder at 7 days overdue, another at 14 days, and a final one at 30 days. You can use any positive whole numbers (e.g., 3,10,21,45).

How Payment Reminders Work

  1. Every morning the system checks all invoices that have a due date in the past and are in Sent, Partially Paid, or Overdue status.
  2. For each invoice, it calculates how many days past due it is and checks whether that number matches one of your configured reminder day thresholds.
  3. If a match is found and a reminder has not already been sent today for that invoice and that milestone, the reminder email is sent to the customer.
  4. Customers who have opted out of email notifications are never contacted.
  5. Each reminder sent is recorded in the notification log, visible via Settings › Notification Templates & Logs.

SMS Notifications

SMS text messages are an opt-in feature at both the company level and the customer level. When SMS is not available on your plan the toggle will not appear.

  • Enable SMS Notifications — master company toggle. The first time you enable it you must agree to the SMS terms of service, which covers your obligation to obtain prior written customer consent before texting them (required by FCC/TCPA regulations). Once agreed, you can toggle SMS on and off freely without re-agreeing unless the terms are updated.
  • Per-customer opt-in — even with SMS enabled here, a customer will only receive texts if their record has a Mobile Phone number and the SMS Opt-In box checked. You are responsible for obtaining each customer's consent before enabling this on their record.

What events send an SMS

  • Job Completed — notifies the customer their job is done and ready for pickup.

Compose-before-send vs. auto-send

When a Company Admin or Manager marks a job complete, the system pre-fills a draft SMS from your notification template and opens a compose window so you can personalize the message before it sends. A Send SMS button on the job details page lets you send a follow-up at any time.

When a Shop Floor worker marks a job complete the SMS is sent automatically using the template — no compose step.

Named Ovens

If your shop has more than one curing oven, or if you want to assign specific costs and capacities to your oven for the Oven Scheduler, configure each oven individually under Settings › Company Settings › Named Ovens.

For each named oven you can set:

  • Oven Name — e.g., "Main Oven", "Small Parts Oven".
  • Operating Cost ($/hr) — the hourly cost to run this specific oven.
  • Max Load Capacity (sq ft) — the maximum total surface area that fits in one batch. The Oven Scheduler uses this to show remaining capacity as you add jobs.
  • Default Cycle Time (minutes) — the default cure duration for this oven, used when scheduling batches.

When a named oven is selected on a quote or job, its specific cost rate is used instead of the default oven rate. The Oven Scheduler at /OvenScheduler uses named ovens to group and track job batches.

Data Lookups

The Data Lookups tab in Company Settings lets you customize the dropdown options that appear throughout the application — job statuses, job priorities, quote statuses, appointment types, and inventory categories. You can rename labels, change colours, reorder items, and add new ones to match your shop's terminology.

Adding a New Lookup Item

  1. Go to Settings › Company Settings › Data Lookups.
  2. Select the sub-tab for the lookup type (e.g., Job Statuses, Job Priorities).
  3. Click Add to open the form.
  4. Type a Display Name — the Code field auto-fills as you type (e.g., "In Progress" → IN_PROGRESS). You can override it if needed.
  5. Choose a color and fill in any additional fields.
  6. Click Save.

About the Code Field

Each lookup item has a Code — a short uppercase identifier used internally (e.g., QUALITY_CHECK, URGENT). When adding a new item:

  • The Code auto-derives from the Display Name as you type — spaces become underscores, everything is uppercased.
  • You can edit the Code directly; it will stay uppercase and only allow letters, numbers, and underscores.
  • Once saved, the Code cannot be changed — it is locked to prevent breaking existing records that reference it.

Inventory Categories — Is Coating Flag

The Inventory Categories sub-tab includes an important flag: Is Coating. Only inventory items whose category has this flag enabled will appear in the powder color dropdown when building a quote or job. If your powder colors are not showing up in the quote wizard, go to Data Lookups › Inventory Categories, find the category that holds your powders, and enable Is Coating.

AI Profile

The AI Profile tab in Company Settings lets you describe your shop's specialties, typical work, and pricing preferences in plain text. This context is automatically included in the system prompt sent to AI for photo quoting — resulting in more accurate and relevant estimates.

Examples of useful AI Profile content:

  • "We specialize in automotive parts and wheels. Most items are steel or aluminum."
  • "Our minimum charge is $75. We charge a 20% premium for intricate wrought iron."
  • "We rarely do sandblasting in-house — assume parts arrive pre-blasted."

The AI Profile is optional but recommended. The more specific you are, the better the AI quotes will match your actual pricing. Update it whenever your shop's focus or pricing strategy changes.

User Management

Manage who has access to your company's account under Settings › Users (or navigate to /CompanyUsers).

Adding a User

  1. Go to Settings › Users and click New User.
  2. Enter the user's name, email address, and select their role.
  3. The system sends an invitation email. The user follows the link to set their password.

Roles

RoleAccess level
CompanyAdminFull company access including settings, users, and billing.
ManagerJobs, quotes, invoices, customers, inventory, reports — no settings or user management.
WorkerCreate and edit jobs and quotes; no settings, billing, or user management.
ViewerRead-only access to most data.

Resetting a Password

Select a user from the list and click Reset Password. The user receives an email with a link to set a new password.

Deactivating a User

Use the active/inactive toggle on the user list or the edit form to deactivate a user. Deactivated users cannot log in but their records and activity history are preserved.

Download Your Data

Company Administrators can export a complete copy of their company's data at any time from Settings › Download Your Data (or navigate directly to /AccountDataExport). This feature is available even when a subscription has expired — your data is never locked away.

What Can Be Exported

Choose any combination of the following data types:

  • Customers — all customer records including contact info, type, and credit settings.
  • Jobs — all job records with status, priority, assigned worker, and dates.
  • Quotes — all quote records with status and pricing.
  • Invoices — all invoice records with amounts paid and status.
  • Inventory — all inventory items with quantities and costs.
  • Equipment — all equipment records and statuses.
  • Vendors — all vendor/supplier records.
  • Shop Workers — all shop worker records.
  • Users / Logins — all user accounts and their roles.

Export Formats

  • Excel (.xlsx) — all selected data types in a single workbook, one tab per data type. Best for viewing in Excel or Google Sheets.
  • CSV (.zip) — one CSV file per selected data type, bundled into a single ZIP archive. Best for importing into other software.

The export is generated on-demand and delivered directly to your browser. Nothing is stored on the server — each export is a fresh snapshot of your current data.

Default Settings

Default Settings configure system-wide values that are applied automatically whenever a new record is created. These save time on data entry and ensure consistency across your documents. You can always override defaults on individual records.

  • Default Quote Validity Period (days) — the number of days after creation before a quote expires. For example, a value of 30 means all new quotes expire 30 days after their quote date. Expired quotes are flagged in the quote list and customers cannot act on them without you creating a revised quote. Adjust this based on how stable your pricing is — shops with volatile powder costs may want a shorter validity period (e.g., 14 days).
  • Default Payment Terms — the payment terms applied to new customer records and new invoices (e.g., "Net 30", "Net 15", "Due on Receipt"). This determines when invoices become due and affects the AR Aging report. The default can be overridden on each customer record and on individual invoices.
  • Currency — the currency symbol and formatting used throughout the system for all monetary values (e.g., USD, CAD, AUD, GBP). This is a display setting only and does not perform any currency conversion. Set this once during initial setup to match your local currency.
@{ await Html.RenderPartialAsync("_HelpNav"); }