This workflow verifies every new contact’s email and stores the result as a custom property you can filter and segment on.

Step 1: Create a custom contact property

In HubSpot, go to Settings → Properties → Contact properties → Create property. Create a single-line text property named rocketverifier_status (and optionally rocketverifier_score as a number property).

Step 2: Build the workflow

Go to Automation → Workflows → Create workflow → Contact-based, with enrollment trigger: Contact created.

Step 3: Add a webhook action calling a relay endpoint

HubSpot’s native Webhook workflow action can send a POST request, but writing the response back into a HubSpot property requires a small relay function (since HubSpot doesn’t natively parse a third-party API’s response shape into properties). Here’s a minimal relay, deployable as a Vercel/Netlify serverless function:

// api/hubspot-verify-relay.js
export default async function handler(req, res) {
  const { email, contactId } = req.body;

  const verifyRes = await fetch('https://api.rocketverifier.com/v1/verify', {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${process.env.ROCKETVERIFIER_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ email }),
  });
  const { data } = await verifyRes.json();

  await fetch(`https://api.hubapi.com/crm/v3/objects/contacts/${contactId}`, {
    method: 'PATCH',
    headers: {
      Authorization: `Bearer ${process.env.HUBSPOT_PRIVATE_APP_TOKEN}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      properties: {
        rocketverifier_status: data.status,
        rocketverifier_score: String(data.score),
      },
    }),
  });

  res.status(200).json({ ok: true });
}

In the HubSpot workflow’s webhook action, POST to this relay’s URL with email and contactId (HubSpot’s workflow webhook action supports mapping contact properties, including the contact’s internal ID, into the request body).

Step 4: Branch on the result

Add an If/then branch workflow step after a short delay (to allow the relay’s property update to land): rocketverifier_status is undeliverable → add to a “Needs Review” static list, or set a lifecycle-stage-blocking property, rather than letting an unverified address flow further into nurture sequences.

Testing with the sandbox first

Set ROCKETVERIFIER_API_KEY to a sandbox key in your relay function’s environment variables and manually enroll a test contact with an @sandbox.rocketverifier.com email into the workflow to confirm the property gets written correctly, before switching to a live key for real contacts.