# Customer lookup console for Cognito Forms and HubSpot

> Type an email, name, or phone number and see every form someone has ever submitted, newest first, right next to their CRM record.

- Workflow type: app
- Services: Cognito Forms, HubSpot
- Categories: Customer Support, Sales
- Published: 2026-08-16

## What it does

- Search once by email, name, or phone number and get a single timeline of every submission that person has made across all of your forms, newest first.
- Expand any item to read the full set of answers they gave, including any files they uploaded.
- Shows their CRM record beside the timeline with lifecycle stage, record owner, and recent activity, so history and context sit on one screen.
- Flags repeat submitters and near duplicate submissions of the same form within a short window, so you can spot people who filled the form in twice because nobody replied.

## What you'll need

- A Cognito Forms account on a paid plan, since access for outside tools is not included on the free plan.
- Admin access in Cognito Forms, so you can grant the app permission to read your forms and entries.
- A HubSpot login if you want the CRM panel beside the timeline. The submission timeline still works without it.

## Prompt

Build me an internal lookup app that answers "who is this person" across every one of our Cognito Forms forms. Support and sales reps use it while they are live on a call, so the whole thing is one screen built around a single search box: I type an email address, a name, or a phone number, press search, and get one timeline of every submission that person has ever made across all of our forms, newest first.

Show nothing until a search is run. The starting state is just the search box with a short hint that I can search by email, name, or phone. Run the search when I submit it, not on every keystroke, because each search costs Cognito Forms API requests and the monthly allowance is limited (2,000 requests per month on Pro, 10,000 on Team).

There is no cross form search in the Cognito Forms API, so the app has to assemble the answer itself. In a settings area, use List Forms to show every form the connected key can see and let me tick which forms the search should cover. For each selected form, call Get Form Schema once to work out which fields hold the person's email, name, and phone, since those fields are named differently on every form. Store the resolved schema and field mapping per form so it is not rediscovered on every search. Let me refresh a form's mapping by hand, and re-resolve it automatically if a form's entries stop matching what was stored.

When I search, walk each selected form with List Entries, paginating with skip and top until a page comes back with fewer records than requested, and match entries against my search term using that form's mapped email, name, and phone fields. Match email exactly and case insensitively, match names loosely, and match phone numbers after stripping formatting so that +1 (555) 123-4567 finds 5551234567. Stream results in per form with a progress indicator rather than making me wait for every form to finish.

Render the matches as one merged timeline sorted newest first. Each item shows the form name, the submission date and time, the entry number, and a one line summary drawn from the most useful answers on that form. Expanding an item calls Get Entry for the full record and lays out every question and answer, including nested and repeating sections. Any uploaded file on an entry opens through Get File, shown inline when it is an image and as a download link otherwise.

Beside the timeline, show the person's CRM record. Look them up in HubSpot with Search Contacts using the same email, name, or phone I searched for, and show lifecycle stage, record owner, and recent activity such as the last contacted and last modified dates, plus a link to open the contact in HubSpot. Resolve the owner into a real name with Get Owner instead of showing an internal id. If no contact matches, say so plainly, since someone with form history but no CRM record is itself worth knowing. If several contacts match, list them and let me pick which one to pin to the panel.

Flag two things on the timeline. Mark anyone with more than one submission as a repeat submitter, showing the total count and the span between their first and most recent submission. Mark near duplicate submissions, meaning two submissions of the same form by the same person inside a short window, defaulting to 48 hours and configurable in settings, and group them visually so it is obvious it is the same request twice. Those are the people who filled the form in again because nobody replied the first time, and they are exactly who we are trying to catch.

Speed matters because someone is waiting on a call. Cache the resolved form schemas, keep recent search results for the session so returning to a result is instant, and make the whole flow driveable from that one box with the keyboard alone. Handle the edge states properly: a clean empty state before any search, per form progress while the search runs, a plain "no submissions found" result, and a readable message if Cognito Forms rate limits us or the key cannot see a form, naming the form that failed instead of failing the entire search.

## How to customize

- Choose which forms the search covers, so busy accounts can skip archived or low volume forms and get faster answers.
- Set the window used to flag near duplicate submissions, for example two submissions of the same form within 48 hours.
- Decide what the CRM panel shows, such as lifecycle stage, record owner, or the date someone was last contacted.

## FAQ

### Can I really search all of my forms at once?

Yes, and that is the whole point. Cognito Forms keeps each submission inside the form it came from, so there is no built in way to see one person's full history. This app walks the forms you have selected, gathers every submission that matches your search, and merges them into one timeline.

### Will it work if the email field is named differently on every form?

Yes. Before searching, the app reads each form's own setup and works out which field holds the email address, the name, and the phone number. It remembers that mapping per form, so mismatched field names across forms do not break the search.

### Do I need HubSpot for this to be useful?

No. The submission timeline works on its own. If you connect HubSpot, you also get a panel beside the timeline with the person's lifecycle stage, record owner, and recent activity, which is what makes it useful during a live call.

### Will this burn through my monthly Cognito Forms allowance?

It is built to avoid that. Searches run only when you press search rather than as you type, form layouts are remembered instead of being looked up again every time, and you can narrow the search to the forms that actually matter. Paid plans include a monthly allowance, so scoping forms is the main lever if you search heavily.

### Does it change anything in my forms or CRM?

No. It only reads. Submissions, uploaded files, and CRM records are displayed as they are, and nothing is edited, deleted, or created in either system.

Use this prompt in General Input: https://www.generalinput.com/prompts/customer-lookup-console-for-cognito-forms-and-hubspot