A Kickbox integration served two ways — on-demand for your sales team, automated for your marketing stack.
Most CRM setups treat email verification as an afterthought — a bulk process run occasionally by an admin. This recipe takes a different approach: baking verification directly into HubSpot so that both individual sales reps and automated workflows can validate email quality exactly when it matters.
The result is a two-component integration: a CRM UI card for on-demand lookups, and a custom workflow action for automated verification at any point in your contact lifecycle.
| Difficulty | Intermediate |
| Prep Time | ~30 mins (accounts & environment setup) |
| Cook Time | ~1 hour (full implementation) |
| Serves | Sales reps, marketing teams, and HubSpot admins |
| Allergens | CRM UI card requires any HubSpot Enterprise tier; Workflow Action requires Operations Hub Professional or higher; both are free on a developer test account |
Accounts & Keys
Environment
npm install -g @hubspot/cli)https://github.com/Suixcity/kickboxFrom the pantry (provided in this repo)
Before you touch the stove, prep your ingredients:
hs account auth
hs secret add kickbox # Your Kickbox API key hs secret add private_app # Placeholder for now — you'll swap this shortly
Chef's note: Secret names must be exact.
kickboxandprivate_appare referenced directly in the code. A typo here will leave your dish under-seasoned.
A card embedded in the HubSpot contact record — one click, instant verification.
1. Clone and deploy
Pull the recipe from the repo and upload it to HubSpot in two commands:
git clone https://github.com/Suixcity/kickbox cd kickbox/Kickbox hs project upload
HubSpot will build and deploy the project. When it finishes, a legacy app called kickbox-verification will appear in your HubSpot account — that's your dish coming out of the oven.
2. Glaze with the real access token
Grab the access token from the newly created legacy app (Development → Legacy Apps → kickbox-verification → Auth tab → Access Token) and update the placeholder secret:
hs secret update private_app
3. Create the CRM properties
This step creates the 11 custom contact properties that verification results will be written into. Think of it as setting the table before the guests arrive.
First, create a property group in HubSpot named exactly kickbox:
Settings → Properties → Groups → Create group:
kickbox
Then fire a batch POST request to the HubSpot properties API, authenticated with your legacy app token. The full JSON payload is available in the GitHub repo — it creates all properties in one shot and should return a 201 COMPLETE. Use Postman (web or desktop) or curl — either works fine.
4. Add the cards to contact records
Settings → Objects → Contacts → Record Customization → Default view → + → Card library
Two cards are available:
Add one or both, save, and you're plated.
5. Taste test
Open any contact with an email address, click "Verify Email with Kickbox", and confirm the results appear. A success banner and populated properties mean the dish is ready to serve.
A custom coded action for automated verification inside HubSpot workflows.
This component uses a separate secret named kickboxapi — note the different name from kickbox used in Part One. Both can coexist in the same HubSpot account.
1. Season with the secret
Add your Kickbox API key under the new secret name:
hs secret add kickboxapi
Or add it directly inside the workflow action editor in the next step.
2. Build the action
In HubSpot, go to Automation → Workflows, open or create a contact-based workflow, and add a Custom Coded Action step:
kickboxapi3. Configure your outputs
The action returns 10 output fields — the full verification payload from Kickbox. These become data tokens usable in any downstream workflow step:
| Output | Type | What it tells you |
|---|---|---|
result |
Enumeration | Deliverable / Risky / Undeliverable / Unknown |
reason |
Enumeration | The specific reason code |
sendex |
Number | Reputation score 0–1 |
disposable |
Boolean | Throwaway email domain? |
accept |
Boolean | Domain accepts all mail? |
role |
Boolean | Role address (info@, support@)? |
free |
Boolean | Free email provider? |
nemail |
String | Normalised email address |
didyoumean |
String | Spelling correction suggestion |
success |
Boolean | Did the API call succeed? |
4. Build your branching logic
With the output in hand, add an If/Then branch after the action — for example:
result = "deliverable" → Enrol in sales sequence result = "risky" → Flag for manual review result = "undeliverable" → Add to suppression list
This is where the flavour really comes through — email quality becomes an active signal in your automation, not a static field that gets checked once a quarter.
A common pattern worth stealing:
New contact enters the CRM → Workflow action verifies email → Branch on result → Deliverable contacts route to sales → Everything else gets flagged or suppressed
This ensures your sales team only ever receives contacts with verified email addresses — and your marketing lists stay clean without anyone having to run a manual bulk check.
This recipe is built on HubSpot project platform v2025.1 — and HubSpot's platform versioning has been, frankly, inconsistent. Features have been dropped and reintroduced between minor versions, and naming conventions have shifted mid-cycle (the CLI still calls the deployed app a [private app] in its output while the HubSpot UI lists it under Legacy Apps).
The current situation: v2025.1 is unsupported after 1 August 2026. The migration target is v2025.2 — but v2025.2 removes serverless functions, which this recipe depends on for its backend. Serverless is scheduled to return in v2026.03, available from ~30 March 2026.
The plan: skip v2025.2, wait for v2026.03, and update this recipe at that point. If you're reading this after March 2026 and the guides feel stale, that migration is likely the culprit — check the HubSpot developer changelog for the current state of play.
The complete source code, detailed step-by-step setup guides, and the full Postman payload are available in the GitHub repository:
Part of a professional portfolio — view the project brief