App Logo
app.hubspot.com

Create or update a HubSpot contact

Automatically create or update a HubSpot contact on app.hubspot.com. Create a HubSpot contact from an email address, or update the existing one's first and last name when that email is already on the account — never a duplicate. Reports created, updated or unchanged (nothing saved when the values already match), and re-reads the contact afterwards to confirm. On accounts with GDPR features on, creating needs legalBasis (the caller chooses it; it is never defaulted). dry_run fills everything in and stops before saving. Finds the right account and regional host automatically.

Input

email required

The contact's email address. This is the key: an address already on the account is updated rather than duplicated.

dry_run optional

When true, works out whether the contact exists and fills the form, then stops before saving. Nothing is created or changed.

Default: false
lastName optional
portalId optional

The HubSpot account id, when the login has more than one. Omit it to use the default account.

firstName optional
legalBasis optional

GDPR legal basis for processing the contact's data, used when creating. Required on accounts with GDPR features on (HubSpot will not create the contact without it); ignored for an existing contact. Never defaulted — the caller must choose it.

Output

email required
saved required

True only when a save happened AND the contact was re-read with the requested values.

action required

created / updated = saved and confirmed; unchanged = the contact exists and already has these values, so nothing was saved; would_* = dry run.

dryRun required
portalId required
changed optional

Which fields were changed on an existing contact.

contactId optional
contactUrl optional
accountUsed optional
existedBefore optional

FAQ

Create a HubSpot contact from an email address, or update the existing one's first and last name when that email is already on the account — never a duplicate. Reports created, updated or unchanged (nothing saved when the values already match), and re-reads the contact afterwards to confirm. On accounts with GDPR features on, creating needs legalBasis (the caller chooses it; it is never defaulted). dry_run fills everything in and stops before saving. Finds the right account and regional host automatically.
Ask an AI agent connected to Reduck to run reduck/app.hubspot.com/create_or_update_contact, or run it from a terminal with the Reduck CLI: npx @reduck-ai/cli@latest run --script reduck/app.hubspot.com/create_or_update_contact
You do not need one. "Create or update a HubSpot contact" drives the real app.hubspot.com pages in a browser, so it works whether or not app.hubspot.com offers an API for this.
Required: email. Optional: dry_run, lastName, portalId, firstName, legalBasis.
It returns email, saved, action, dryRun, changed, portalId, contactId, contactUrl, accountUsed, existedBefore.
Yes. It acts as you on app.hubspot.com: on your own Chrome it reuses your session, and on a Reduck-hosted browser it loads the app.hubspot.com cookies saved by the Reduck extension.
It makes changes on app.hubspot.com, like sending, posting or booking something.
Ask an AI agent connected to Reduck to run reduck/app.hubspot.com/create_or_update_contact, or run it from a terminal with the Reduck CLI: npx @reduck-ai/cli@latest run --script reduck/app.hubspot.com/create_or_update_contact
It is part of Reduck's official curated catalogue.

Start building not clicking