Customers Page¶
Menu Location: Customers > Customers
Last Updated: 2026-08-24
Overview¶
The Customers page (kiv/customers.php) is the primary interface for searching, filtering, and managing customer accounts. It is the main "Customers" link in the admin nav (shown with a live count of active subscribers).
Primary Functions:
- Search and filter customer accounts by name, phone, ID, address, subscription details, and dozens of other criteria
- View a paginated customer list with key account information
- Bulk-send email, SMS, or push notifications to everyone matching the current filters
- Export the filtered list to CSV
- Click through to any customer's account detail page
Page Layout¶
Header Section¶
- Search Bar: a single text box ("Search by name, phone, etc...") plus a Search button
- Filter Panel: a collapsible "Filter" panel with dropdowns for status, account type, route, schedule, box, tags, and more, plus a further "Advanced Filters" panel nested inside it
- Action Buttons: Email List, Send SMS to List, Send Push Message to List (if push is configured), and Export, all appear below the results once you've filtered
Customer List Table¶
Columns shown by default: Customer (name, business name, and ID, click to open the account), Pay (payment method), Status, Address, Email, Phone, Joined, Start Date, and Order Count.
A few columns only appear when the matching filter or setting is active: Subsc Price / Cur. Price / Diff (when using the "Subscription price is less than current box prices" Misc filter), Balance (when payment type is COD or a balance/credit filter is set), Tags (when "Show Tags" is checked), Cancel Reason and Comeback Score (in place of Address, when a cancellation-reason filter is set), Notes (when "Show Notes" is checked), and Coop (when Coop is set to "Any & All Coops").
Pagination¶
- The list is fixed at 10 customers per page (there is no per-page size selector)
- Page number links and previous/next arrows appear below the results
- A "N results" badge (or "many" above 200,000) shows the total match count
- The separate "Limit results?" field caps how many matching customers are pulled for bulk actions/export; it does not change the 10-per-page display
Search & Filtering¶
Quick Search¶
The single search box matches, depending on what you type:
- Customer ID (prefix with
#, or a short plain number) - Phone/cell number (numeric input)
- First and last name (default for text input)
Checkboxes next to the search box extend it:
- Shipping: also match shipping street/city
- Business name: also match business name
- Active Campaign ID: also match by ActiveCampaign ID (only shown if ActiveCampaign is connected)
There's also a "Search in notes as well" option to extend the search into account notes text.
Advanced Filters¶
A separate collapsible "Advanced Filters" panel, with:
- Date Filters: Joined (Before/After/On/Between), Last Login (Before/After/Between/Never)
- Numeric Filters (with >, >=, =, <=, <, or Between): Balance, Box Count, Delivery Fee, Order Count
- Yes/No toggles: Has Phone, Shipping Notes, Order Alert, No Plastic, Cardboard Only, Delivery Fee (Free/Has fee), Email Validated, Has 2FA, Has Rejoined, Prepaid
- Cell Phone / SMS: Any, SMS active (verified & enabled), Has cell (not verified), Has cell (any status), No cell phone
- Order & Schedule (weeks): no order in the last N weeks, has an order in the last N weeks, no schedule adds in the next N weeks, has schedule adds in the next N weeks, exactly N orders, skipped every week for N weeks, skipped at least one delivery in N weeks
- Order Amount: a single order of at least $X in the last N days
- Text Filters: shipping city
- Email List: paste or upload a list of email addresses (CSV/TSV/TXT/XLS/XLSX, capped at 50,000) to filter down to exactly those customers
Status Filter¶
Real account statuses: Pending, Active, Stopped, Trial, Dead, Card Decline, Pause. When Status is set to Stopped, an optional stop-date range (From/To) appears, along with an optional "Cust Given Reason" dropdown (and, if AI cancellation classification is enabled, an "AI Determined Reason" and "AI Comeback Score" filter).
Account Type Filter¶
Customers, Wholesale Buyers, Gift Recipient, Gift Giver, Vendor/Farmer, Imported One-Time.
Subscription & Delivery Filters¶
- Route
- State (hidden for single-state operations)
- Zip
- Day: the day of the week the customer's route runs
- Schedule: each distinct schedule in use, plus "Bi-Weekly ACTIVE this week", "Bi-Weekly Not Active this week", and "NOT periodic"
- Coop
- Box: from your box list (labeled "Box Size" if box-size/type display is turned on)
- Box Type: only shown if box-type display is turned on
- Box Price: distinct active subscription prices
- Promotion
- Start Date: a delivery-week picker, filters by the week the subscription started (not a calendar date range)
- Payment Type
- Had credit greater than $X: customers who have had a credit applied to their account greater than the amount specified, at any point in their history
- How did you hear
Misc Filters¶
A modal checkbox list (click the "Misc..." button) with:
Subscription price is less than current box prices; Never used a discount code; Had One Year Discount, but over a year ago; Received at least one order; Has not received an order; Unsubscribed from Emails; Subscribed to Emails; Stop Date Older than 30 days; No order this week; No order this week in status open/close/complete; No order in the last 8 weeks; No order since at LEAST 8 weeks ago; No order in the last 3 months; No order in the last 6 months; Recurring Food by the lb.; No recurring items; Show 303 PayProfiles; Cancelled in the last 21 days; Accepts SMS Messages; No SMS / No Cell Phone; No/Has schedule adds in the next 4 or 6 weeks; No/Yes Stripe CC info; Show Boxes; Show mobile phone if they have one; No First Name. There is also one "Has never had addon from: [classification]" entry per top-level product classification you sell.
Multiple Misc filters can be selected at once.
Tag Filters¶
A single tag dropdown (built-in "VIP" plus your own Promotions Tags), with a "Not tag" checkbox to exclude that tag instead of requiring it. A separate "Show Tags" checkbox displays each customer's tags (as hover-titled icons) in the list.
Map Mode¶
A toggle that replaces the list with a map of the filtered customers' locations.
Sorting Options¶
Located in the "Sort By" dropdown (only one at a time): Balance Asc/Desc, Box Count Desc, Customer ID Asc/Desc, Payment Type Asc/Desc, Status Asc/Desc, Stop Date. You can also click the Customer, Pay, or Status column headers to sort by that column.
Bulk Actions¶
Email List¶
- Apply filters, then click "Email List"
- Write the subject and body (optionally load a saved template, choose an Email Design, or apply a tag to everyone the email goes to)
- Optionally add a credit amount and note to give every recipient a credit at the same time
- Click "Preview Email" to check it
- Click "Ok, really send Email!" to send
Large sends are rate-limited (batch_email_daily_limit config, default 2,000/day); anyone beyond that day's cap is automatically scheduled to receive the email on a later day.
Send SMS to List¶
- Apply filters, then click "Send SMS to List"
- Enter the SMS message
- Click "Ok, really send SMS!"
This queues a message for every customer currently matching your filters, so narrow to customers who can actually receive one first (see the Advanced Filters "Cell Phone / SMS" option).
Send Push Message to List¶
Only available if push notifications (OneSignal) are configured.
- Apply filters, then click "Send Push Message to List"
- Enter an optional title, the message, and an optional target URL
- Click "Ok, really send Push Message!"
Export¶
- Apply filters, then click Export
- Choose "Current search" (all matching customers) or "Current page"
- Optionally check "Extended Data Export" (adds cancellation dates and lifetime totals, slower) and/or "Include Order dates, amounts" (can be slow / may time out on large lists)
- Download the generated CSV
Alternatively, check Google Ads "Customer Match" format to export the filtered list as the plain-text CSV Google Ads expects for customer match uploads: one row per customer with Email, First Name, Last Name, Country, Zip, and Phone. The "Also export each additional email as its own line" checkbox (shown below it) adds a separate line for each additional email address on file (using that contact's own name; phone falls back to the account's number). Unusable or unrecognizable values are left blank, and Google matches on whatever identifiers are present.
Exporting requires an admin-level login.
Bulk Stop / Delete¶
Deleting a customer (the red "x" on each row of the list) is available to any logged-in admin unless "Do not allow admin users to delete customer accounts" is turned on in Settings > Business Settings, which both blocks the action and hides the button. Bulk "DELETE CHECKED/FILTERED CUSTOMERS" and "Bulk Stop Customers" buttons also exist on this page, but are restricted to Kiva Logic staff, not tenant admin users.
Customer List Actions¶
Individual Customer Actions¶
Click a customer's name to open their account detail page (customer_info.php), where you can edit the account, view orders, and more.
Quick Actions (from list view)¶
- Click the email address to compose a message via your email client
- Click the phone number to call, if your device supports
tel:links - Hover over a tag icon to see the tag name and the date it was applied
Common Use Cases¶
Finding a Customer¶
Type a name, phone number, ID, or (with the Shipping checkbox on) an address into the search box and click Search.
Viewing Active Customers¶
Select "Active" from the Status filter.
Finding Customers to Re-engage¶
- Misc: "No order in the last 3 months" + Status: Active or Pause
- Misc: "Cancelled in the last 21 days" to review recent cancellations
Preparing for Route Changes¶
Select a Route (and Day, if relevant), then export the filtered list for route planning.
Financial Review¶
- Advanced Filters > Balance with a
<operator and Sort By: Balance Asc to review past-due accounts - "Had credit greater than $X" to review accounts sitting on unused credit
Compliance & Data Quality¶
- Advanced Filters > "Has Phone" = No, to find missing phone numbers
- Misc: "No First Name"
- Misc: "Unsubscribed from Emails" / "Subscribed to Emails" for email list management
Filter Combinations & Examples¶
Example 1: Win-Back Campaign¶
- Status: Stopped
- Misc: "Cancelled in the last 21 days" + "Received at least one order"
- Sort By: Stop Date
Example 2: Credit Card Update Needed¶
- Status: Active
- Misc: "No Stripe CC info"
Example 3: Route Review¶
- Route: (your route)
- Day: (delivery day)
- Status: Active
Example 4: Promotional Campaign¶
- Status: Active
- Misc: "Received at least one order" + "Never used a discount code"
- Advanced Filters > Joined: Before [date]
Example 5: Data Cleanup¶
- Misc: "No First Name"
- Advanced Filters > Has Phone: No
- Status: Active
Integration Points¶
ActiveCampaign¶
Shown only if ActiveCampaign is connected: search by ActiveCampaign ID, and filter/see sync status ("Synced with Active Campaign" / "Not synced with Active Campaign").
Stripe¶
Filter by "No Stripe CC info" / "Yes, has Stripe CC info" in Misc.
Zuberance¶
If the Zuberance app is enabled, a "Zub" column and account-status filter appear.
Troubleshooting¶
Search Returns No Results¶
- Click "Reset Form" to clear all filters and try again
- Verify search term spelling
- Try a partial search (first few letters)
- Check whether the customer might be in Dead status
Export Fails or Times Out¶
- Apply more restrictive filters first
- Skip "Include Order dates, amounts" (it can be slow on large lists)
- Use "Current page" instead of "Current search" for a smaller batch
Page Loading Slowly¶
- Apply more specific filters before searching
- Avoid the "Show Boxes" Misc filter unless you need it
Related Pages¶
- Add New Customer (
kiv/add-new-customer.php) - Customer Detail (
kiv/customer_info.php) - individual customer account page - Customer Order History (
kiv/customer_order_info.php) - Customer Email Log (
kiv/customer-email-log.php) - Customer Activity Log (
kiv/customer-log.php) - Customer Engagement (
kiv/customer-engagement.php) - Customer Longevity (
kiv/customer-longevity.php)
Best Practices¶
Daily Operations¶
- Use quick search for individual customer lookup
- Always verify your filters before running a bulk action
- Check the results count badge before mass communications
Communication¶
- Use "Preview Email" before sending
- Honor unsubscribe status (Misc: "Unsubscribed from Emails")
- Narrow SMS/push sends to customers who can actually receive them first
Recent Updates¶
August 24, 2026:
- Added a Google Ads "Customer Match" format option to the Export dialog, emitting the plain-text CSV Google Ads expects (Email, First Name, Last Name, Country, Zip, Phone)
- Added an "Also export each additional email as its own line" checkbox to include additional emails on file (
custy_emails) as separate lines in that Google Ads export
July 19, 2026:
- The per-row delete ("x") button on the customer list is now hidden whenever "Do not allow admin users to delete customer accounts" is enabled in Settings > Business Settings
- That Business Settings field changed from a text box to a Yes/No selector
February 12, 2026:
- "Sort By" was renamed to "Misc" and now opens a modal window where multiple Misc filters can be selected at once
- A new single-select "Sort By" dropdown now holds all the sorting options
Quick Reference Card¶
| Task | Filter/Action |
|---|---|
| Find active customers | Status: Active |
| Find stopped customers | Status: Stopped |
| No recent orders | Misc: "No order in the last 3 months" |
| Missing payment info | Misc: "No Stripe CC info" |
| Send mass email | "Email List" button after filtering |
| Export customer list | Export button after filtering |
| View route customers | Route filter + Day filter |
| Find incomplete records | Misc: "No First Name" / Advanced Filters: Has Phone = No |
| Recent cancellations | Misc: "Cancelled in the last 21 days" |
| Email opt-outs | Misc: "Unsubscribed from Emails" |
End of Documentation
For additional help, contact your system administrator or Kiva Logic support.