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.
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.
What does this prompt do?
- 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 do I need to use this?
- 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.
How can I customize it?
- 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.
FAQs
Can I really search all of my forms at once?
Will it work if the email field is named differently on every form?
Do I need HubSpot for this to be useful?
Will this burn through my monthly Cognito Forms allowance?
Does it change anything in my forms or CRM?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.
One screen where reps filter for companies that fit, see who is actually reachable at each account, and save only the addresses that verify.
See every competitor battlecard next to the number of open deals that name that competitor, so the cards carrying real pipeline get refreshed first.
Score every target account against the buying committee you actually need, see the exact holes, and have an assistant fill them in your CRM.
See open and pending conversations from all your Help Scout inboxes in one queue, sorted so the customers who have waited longest on you come first.
Stop opening every form to answer one question.
Give support and sales one search box that returns a person's whole history while they are still on the call.