# Look up any subscriber across Kit and HubSpot on one screen

> Type an email, a name or a company and see someone's newsletter status beside their CRM record, then tag, unsubscribe or update without switching tabs.

- Workflow type: app
- Services: ConvertKit, HubSpot
- Categories: Marketing, Sales
- Published: 2026-08-17

## What it does

- Search by email, name or company and get one profile: newsletter state, signup date, every tag and which sequences someone sits in, right next to their lifecycle stage, owner, company and open deals.
- Act from that same screen: add or remove a tag, drop someone into a nurture sequence, unsubscribe them, or write their newsletter status onto the CRM record.
- A second tab shows the gaps between the two systems: people with an open deal who never subscribed, and subscribers who were never added to the CRM, each with a one click fix.
- Pick which sequences matter to you once, so membership checks stay fast instead of scanning your whole account every time.

## What you'll need

- A Kit account (formerly ConvertKit) with your subscribers, tags and sequences already set up
- A HubSpot account with contacts and deals, and permission to edit contact records
- A HubSpot contact field to hold the newsletter status, either one you already use or a simple text property you create for it

## Prompt

Build me an internal lookup console that my marketing and sales people open whenever someone asks who is this person and are they on our list. Right now that means keeping Kit and HubSpot open in two tabs, and I want one screen instead. The app has two tabs: a person profile lookup, and a gaps view that reconciles the two systems.

The profile tab starts with a single search box that accepts an email address, a person name, or a company name. When the input looks like an email, resolve the person directly on both sides: HubSpot Get Contact with idProperty set to email, and Kit List Subscribers filtered by email address. For a name or a company, use HubSpot Search Contacts across first name, last name, email and company, alongside Kit List Subscribers, and show the matches as a short result list so I can pick the right person before the full profile loads. Once a person is chosen, load their complete Kit record with Get Subscriber.

The left panel is the Kit side. Show subscription state (active, unsubscribed, bounced, complained), the date they subscribed, and every custom field on the record, from Get Subscriber and List Subscribers. Underneath that, list every tag currently on the subscriber using List Tags for Subscriber. Then show which of my tracked sequences they sit in.

Sequence membership needs care. Kit only exposes membership as List Sequence Subscribers per sequence, so do not scan everything. Read List Sequences once, let me pick in a settings area which sequences actually matter to me, persist that choice for the workspace, and check membership only against the picked sequences. Show each tracked sequence with the person's state in it, and cache the per sequence subscriber sets so the console is not refetching them on every single lookup.

The right panel is the HubSpot side. From Search Contacts and Get Contact, show lifecycle stage, contact owner and associated company. Then show their open deals: use List Deals with associations to find the deals linked to that contact, and Get Deal for each one to pull deal name, amount, stage and close date. Sort them by amount, and say so plainly when there are no open deals rather than showing an empty box.

I want to act from that same screen without opening either tool. Give me: apply a tag with Tag Subscriber by Email and remove one with Remove Tag from Subscriber by Email, with the tag picker fed by List Tags so I am choosing from real tags instead of typing them; drop someone into a nurture sequence with Add Subscriber to Sequence by Email, choosing from my tracked sequences; unsubscribe them with Unsubscribe Subscriber, which takes the Kit subscriber id already loaded with the profile, behind a confirmation step since it is destructive; and stamp their newsletter status onto the CRM record with Update Contact, writing subscribed, unsubscribed or not on the list plus the date into a HubSpot contact property I nominate in settings. After any action, refresh only the affected panel and show a short confirmation.

The second tab shows the gaps between the two systems, as two lists. First, HubSpot contacts attached to an open deal who are not subscribed in Kit: pull open deals with List Deals using associations to get their contacts, resolve each contact with Get Contact, and compare those email addresses against Kit. Second, Kit subscribers with no HubSpot contact at all: page through List Subscribers and check each email against HubSpot with Get Contact using idProperty email, or Batch Read Contacts to resolve up to a hundred emails in one call, which is the efficient way to check a page of subscribers. Give each row enough context to judge it: deal name and amount for the first list, signup date and tags for the second.

Every gap row gets a one click fix. Missing from Kit becomes Create Subscriber. Missing from HubSpot becomes Create Contact, carrying over the email plus first and last name wherever Kit has them. Kit create endpoints upsert, returning 200 when the record already exists and 201 when it is newly created, so the add to Kit fix is safe to press twice; make the button reflect that instead of surfacing an error. Let me fix rows one at a time, and also select several and fix them together, and drop a row off the list once it is resolved.

Kit list endpoints are cursor paginated, so page through with the end cursor rather than assuming a single page covers it. The gaps tab is the expensive view, so build it on demand behind a refresh button with a visible last refreshed time, cache the results, and show progress while it compares rather than freezing the screen. HubSpot search is rate limited to a few requests per second, so throttle and batch the comparison instead of firing a request per row. Keep the whole console read only until I press something, and never write to either system in the background.

## How to customize

- Choose which sequences the console tracks, and change the picks whenever you launch a new one
- Decide which HubSpot field the newsletter status lands in, and the wording used for subscribed, unsubscribed and not on the list
- Narrow the gaps tab to certain deal stages, pipelines or owners so each rep only sees their own accounts

## FAQ

### Does this change anything in Kit or HubSpot on its own?

No. The console only reads from both systems until you press something. Every tag, sequence, unsubscribe and CRM update is an action you take on the screen, and nothing runs in the background.

### Will this work on HubSpot Free?

The contact side works on Free, including lifecycle stage, owner and company. The open deals panel needs a plan that includes deals, which covers most paid tiers. If deals are not available the profile still loads with the newsletter side intact.

### What happens when someone is in one system but not the other?

That is exactly what the second tab is for. It lists people attached to an open deal who are not on your newsletter, and subscribers who never made it into the CRM, with a one click fix to add them to whichever side is missing.

### Is it safe to press the fix button twice?

Yes. Adding someone to Kit updates the existing record when they are already there rather than creating a duplicate, so a double click will not make a mess of your list.

### Why do I have to pick which sequences to track?

Kit can tell you who is inside a specific sequence, but not which sequences a given person belongs to. Picking the handful you actually care about keeps every lookup fast instead of scanning your entire account.

Use this prompt in General Input: https://www.generalinput.com/prompts/look-up-any-subscriber-across-kit-and-hubspot-on-one-screen