Customer lookup console for Cognito Forms and HubSpot

By General Input

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

Integrations

  • Cognito Forms
  • HubSpot

Type

App

Categories

  • Customer Support
  • Sales

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.

Related prompts

Explore more prompts
Turn Mailjet email clicks into ranked HubSpot follow-upsiMessage campaign console with pre-flight checks and delivery boardA searchable RFP answer library your bid team drafts fromSee which target accounts just started advertising on LinkedInAccount health board that puts product usage next to your CRMLook up a customer's full chat history mid conversationLusha prospecting workbench with credit-safe revealsWhich companies your LinkedIn ads reach, matched to your CRMLead response desk with a running clock on every new leadApprove Lusha enrichment field by field before HubSpot saves it