CSV to Directory · Your App Cloud
Publish a searchable directory from a CSV
Upload a member list, supplier list or sign-up export. Choose which columns show on each listing and which stay private, settle one list of categories, and list only those who agreed to appear.
From export to listings people can search.
Sort the columns, tidy what people typed, then show a few listings to the people in them before anyone else.
01
Choose public and private columns
Attach the CSV with the upload button above. In the prompt, name the columns a visitor sees on a listing, the ones that move to a private collection, and the ones left out of the upload, such as payment status or internal notes.
02
Tidy categories and locations
An export carries whatever people typed. Give the category column one fixed list and say which entry each stray spelling belongs to. Do the same for places, such as CA, Calif. and California.
03
Check a few listings with the people listed
Before you share the address, send three people the link to their own listing and ask them to confirm it. Then search for a name with an accent, such as José, to catch an export saved in the wrong character encoding, and filter by one category to see whether the count looks right.
What each column of the export becomes.
Go column by column: what the export holds, where it can appear in the directory, and how to check it. Quoted values are made-up samples.
| In the CSV export | In the directory | Check before sharing |
|---|---|---|
| Each row: one member, supplier or business | A listing with its own page, plus a line on the browse page | The number of listings matches the number of rows you meant to publish, with no business listed twice. |
| Column names from the exporting system, such as field_7 or 'Q4: What services do you offer?' | Short labels a visitor can read, such as Services | Read one listing page as a stranger would. No label should still show a question number or a system name. |
| A category column typed by many people: 'Plumber', 'plumbing', 'Plumbing & Heating' | A category filter with a fixed list of options | List every distinct spelling in the column and say which category each one belongs to. Then look for a category that holds a single listing, a sign that a spelling slipped through. |
| One cell holding several values, such as 'Spanish; French; Portuguese' under Languages | A field with several values, each one its own filter option | Say which character separates the values inside the cell. Open a listing with three values and confirm it shows three, not one long label. |
| City, state and ZIP code columns | A location filter, and an address line on each listing if you choose to show one | One state isn't split into 'NY' and 'New York' in the filter, and each city appears under one spelling. |
| Email and phone columns | Left off the listing, moved to a private collection, or replaced by a contact form | Open a listing while signed out and confirm the private columns appear nowhere on the page. A column that never needs to show is better left out of the upload. |
| Website and photo URL columns | A link and a picture on each listing | Open a sample of the links. A photo kept in a private folder or behind a sign-in won't display for visitors, and you need permission to use each one. |
| An opt-in, consent or 'Approved' column | Only rows marked yes become visible listings | Count the yes rows and compare the count with the listings shown. Decide whether a blank cell means no, and check that it does. |
| The record ID from the system that made the export, such as a member number | A key for matching the next export to existing listings | Every ID is unique and none lost a leading zero. Keep the ID hidden from visitors unless you want it shown. |
What the export can't tell the directory.
An export records what a system holds. It can't say what people agreed to show, which columns are private or which category spelling is right. Settle those before the upload and put them in the prompt.
Consent to list people
If the export has an opt-in column, find out what the form asked. A box ticked for a newsletter is not agreement to appear in a public directory. If the wording doesn't cover being listed, ask again before publishing.
Leading zeros in ZIP codes and IDs
If the file was opened and saved in a spreadsheet on its way to you, a ZIP code such as 02134 may now read 2134, and member numbers may have lost their zeros too. Open the raw file in a text editor, compare a few rows with the source system, and name any damaged column in the prompt.
Commas inside values
An address such as '100 Main St, Suite 4' stays in one column only when the export wraps it in quotes. Find a row with an address like that and confirm the columns after it haven't shifted one place to the right.
One row per listing
Exports often hold one row per sign-up, order or event registration, so the same business can appear three times. Decide what one listing is, then say which row wins when the details differ, such as the newest.
An ID for later updates
Keep the column the source system uses to identify each record, such as a member number or account ID. It is what lets a newer export update existing listings instead of adding them again.
An illustrative starting point
A directory people search, not a file they're sent.
A browse page with search and filters, a page for each listing, contact details off the public page, and a form for corrections.
A page for every listing
Ask for a page per published row with a name, category, city, short description, link and photo. The browse page can list them A to Z, with a search box across names and descriptions.
Filters people actually use
Build the category and location filters from the fixed lists you settled in step 2, not from raw spellings. Ask for a count beside each option, so an empty category or a stray spelling stands out.
Contact details off the page
Ask for a contact form on each listing in place of its email address. Sending those messages needs email from the app. Test one message to a listing you control before you rely on it.
Corrections that reach the listing
Ask for a suggest-a-correction link on each listing that saves requests for you to review, so you decide which ones change it. Add a last-confirmed date so visitors can see how current a listing is. Saved requests need a backend.
Together in your app cloud
The pieces behind the possibility.
Choose the models and services that support the experience you want to create.
Database
Keep data and context for apps and agents
File storage
A home for your documents and media
Authentication
Give the right people access
Email
Keep conversations moving
A little more context
Good questions.
Which CSV columns should stay off the public listing?
Anything a visitor doesn't need to choose a listing or get in touch: home addresses, personal phone numbers, member numbers, payment status, notes and sign-up dates. Leave them out of the upload, or move them to their own collection with the access you describe for each collection. Then open a listing while signed out and confirm none appear.
Do I need permission to list people from an export?
Treat the answer as yes. An export from a membership system or sign-up form usually holds everyone, not only the people who agreed to appear. Publish rows with a clear yes in an opt-in column, ask the others first, and check the privacy rules that apply to your organization.
How do I update the directory from a newer export?
An upload is a snapshot, so bring a newer export in deliberately. Ask for rows to be matched on the ID column, not the name, so a renamed business updates its listing instead of appearing twice. Decide what happens to listings missing from the new file, then compare listing counts before and after.
Will corrections made in the directory reach the system the CSV came from?
Not by themselves. The upload isn't connected to the membership system or form tool that produced it. Choose one place where details get corrected from now on. If that place is the directory, you can export your app's data. Check what an export contains before you plan to load it anywhere else.
Can visitors suggest a new listing or a correction?
You can add a form that saves each suggestion for you to review before a listing changes. Saved submissions need a backend. The app can also email you when a suggestion arrives. Send a test suggestion and check both the saved entry and the message.
Can the directory be public, or only for members?
Either. A public directory opens for anyone with its address. A members-only directory asks people to sign in first, with the access you describe for each collection. Before sharing, sign in with a test account and check which fields it sees, then sign out and check again.
Can the app flag listings nobody has checked in a while?
Apps can run tasks on a schedule you set, such as a monthly email to you that lists entries whose last-confirmed date is over a year old. Review that list yourself before hiding or changing anything, and test the first message before relying on it.
Which plan does a directory built from a CSV need?
A directory that keeps listings in a database, saves suggestions, asks people to sign in or sends email needs a backend, so it is an app with data, and putting it live needs a paid plan. Before you plan sign-in, a suggestion form or contact messages, compare what each plan includes on the pricing page.
Explore Pricing for plans, included capabilities, and usage details.
Keep exploring.
Build a membership app ↗
See the outcome and the capabilities behind it.
CSV export problems ↗
What an export loses once it leaves the system, from leading zeros to copies that fall out of date, and what to use when a list has to stay current.
Understand data and context ↗
Give information the right place in your app.
Prepare to publish ↗
Check the experience you will share.
Your ideas, up and running
Your next idea has a home.
Build an app. Run an agent. Make it yours.
Start building