To replace Zapier with HubSpot workflows, start with the Zaps that send email from Gmail, upload offline conversions to Google Ads, write rows to Google Sheets or post to Slack. Gmail is the second most popular app in Zapier's directory, after Google Sheets, and Gmail and Google Ads are two of the first five apps Zapier suggests pairing with HubSpot (Zapier's app directory and HubSpot integrations page, September 2026).
If your Zapier task count keeps climbing, check the HubSpot Zaps first. A Zap on the "Contact Recently Created or Updated" trigger also fires on activity logs, bulk updates and HubSpot's own calculated-property changes. One admin on the HubSpot Community put it at tens of thousands of Zap runs a day when the team needs a few hundred.
Then there are the quieter failures: new-lead alerts that wait for Zapier's next poll, Zaps that create a new contact instead of updating the existing one, and Zaps nobody can change because they sit in a former employee's Zapier login.
HubSpot Community threads give the reasons those Zaps got built: a workflow had no action for the app on the other end, sending a webhook needed Data Hub, or the workflow couldn't start from anything outside HubSpot.
The trigger side has changed. HubSpot's new workflow builder, which is replacing the classic workflow engine, can start a workflow when a Google Sheet row is added or updated, when something happens in Slack, or when a webhook arrives. Every action, native or from Marketplace apps like 0CodeTools and AI Studio, is available in it.
The action side has changed too. Send email with Gmail sends from any of several connected Gmail or Google Workspace (formerly G Suite) mailboxes, and Send Google Ads Conversion uploads offline conversions to Google Ads. Both are new 0CodeTools workflow actions.
Workflows already post to Slack, write to Google Sheets and create Asana tasks with HubSpot's own integrations. Marketplace apps add Notion pages, SendGrid email, Telegram messages through Telegram for HubSpot, API calls without Data Hub through the API Webhook Connector, and AI steps from AI Studio: Send to AI, Send to OpenRouter, Web Search and Company Insights.
So for each HubSpot Zap, the question is whether it still needs a second tool in the middle. When HubSpot is the trigger or the destination and you're on a Professional or Enterprise hub, it usually doesn't.
TL;DR
- ✓Gmail and Google Ads: two new 0CodeTools workflow actions. Send email with Gmail picks its sender from several connected Gmail and Google Workspace mailboxes, and Send Google Ads Conversion uploads offline conversions matched by GCLID.
- ✓Google Sheets, Slack, Teams and Asana: HubSpot's own integrations add these as workflow actions. Workflows can also start from a Google Sheet row, a Slack event, a webhook or an app event like "Stripe: Invoice paid".
- ✓Notion, Telegram, SendGrid, any API and AI: 0CodeTools adds Create Notion page, Send email with SendGrid, Send Telegram notification and the API Webhook Connector. Telegram for HubSpot messages customers. AI Studio adds Send to AI, Send to OpenRouter, Web Search and Company Insights. monday.com has no workflow action, so sync it or call its API.
- ✓Go hybrid: HubSpot-triggered Zaps whose destination has no HubSpot action. Fire them from a workflow with a webhook step the moment the workflow reaches it.
- ✓Keep in Zapier: app-to-app automations that never touch HubSpot, and long-tail apps with no HubSpot action and no usable API.
- ✓Check your plan: workflows need a Professional or Enterprise hub. In classic workflows, the webhook trigger, Send a webhook and Custom code need Data Hub Professional or Enterprise.
HubSpot workflows without Zapier: Gmail, Google Ads, Google Sheets, Slack and webhooks
HubSpot Community threads keep asking "Is there a way to do this without Zapier?" For years the answer was usually no, because either the trigger lived in another app or the action did. In 2026, HubSpot's new workflow builder added triggers from Google Sheets, Slack and incoming webhooks, and Marketplace apps add actions for Gmail, Google Ads, SendGrid, Notion, Telegram and more.
HubSpot's new workflow builder: Google Sheets, Slack, webhook and schedule triggers
HubSpot's new workflow builder opens on a canvas with one Trigger node. Click Choose trigger and the panel shows three tabs: Popular, HubSpot and Apps. Click through the replica below, copied from the panel in a live portal.
Pick a trigger on the left. App triggers start the workflow from outside HubSpot.
The HubSpot triggers are Property value changed, Record created, Form submission, Records match criteria, Run manually, Run on a schedule and Webhook event is received. Records match criteria, Run on a schedule and Webhook event is received are marked New. Under App triggers, Slack and Google Sheets (both built by HubSpot) start a workflow from outside HubSpot, and Explore all apps lists more.
Pick Google Sheets and you get Google Sheet row added or updated, configured with Trigger when and Connected account. After the trigger, + adds an Action, a Branch or a Delay, and every action is available there, including the ones from Marketplace apps such as 0CodeTools and AI Studio.
Three things to know about the Google Sheets trigger, from HubSpot's documentation:
- It checks about once a minute. Connected sheets are checked every minute for changes, so expect roughly a minute between the edit and the workflow starting.
- Repeated rows don't re-trigger. If the exact same row of values has existed in the sheet before, it won't start the workflow again.
- Don't rename headers on a live sheet. Changing a column title re-enrolls every row, because HubSpot can't tell a rename from a column being deleted and re-added.
Webhook event is received is the new builder's answer to a Zapier Catch Hook. You create an event, connect the URL HubSpot gives you to the sending app, click Listen for events, and review the event's properties. Then you decide whether to link the event to CRM records or keep it unconnected, and the webhook's properties work as tokens in later actions.
Run on a schedule covers the "every Monday morning" Zaps. HubSpot's documentation says it also supports custom intervals, such as every three days.
Classic HubSpot workflows: webhook trigger and app events like Stripe
The classic workflow editor has two outside-in triggers of its own:
- When a webhook is received, under Advanced options. HubSpot's example: "Webhook is received from a third party app after a new contact is created." It needs Data Hub (formerly Operations Hub) Professional or Enterprise, accepts JSON only, and enrolls an existing record matched through a property that requires unique values. It doesn't create records.
- App events, under When an event occurs. Installed apps add their own events to the trigger list. In the portal we checked, Stripe adds "Stripe: Charge captured", "Stripe: Charge succeeded", "Stripe: Checkout session completed", "Stripe: Invoice paid", "Stripe: Payment intent payment failed" and "Stripe: Payment intent succeeded". Zoom, AI Studio for Workflows and other apps add theirs.
The Google Sheets trigger lives in the new builder. It did not appear in the classic editor's event list when we checked in September 2026.
Slack, Google Sheets, Asana and Teams actions are built into HubSpot
HubSpot's own integrations add Send Slack notification and Create Slack channel (Slack), Create Google Sheet row and Update data in a Google Sheet (Google Sheets), Create an Asana task (Asana) and Send Microsoft Teams Notifications (Microsoft Teams).
Gmail, Google Ads, Notion, Telegram and AI actions from Marketplace apps
The HubSpot Marketplace lists 2,000+ apps, and connected apps list their workflow actions under the app's name in the action picker. 0CodeTools adds 31 workflow actions.
The two newest are Send email with Gmail, which sends from any of several connected Gmail and Google Workspace mailboxes, and Send Google Ads Conversion, which uploads offline conversions matched by GCLID. The list also includes Send email with SendGrid, Create Notion page, Create Notion database item, Send Telegram notification and API Webhook Connector.
Telegram for HubSpot adds customer-facing actions such as Send Telegram Message to Group and Send Telegram Message to Contact. AI Studio adds AI steps: Send to AI, Send to OpenRouter, Web Search and Company Insights.
HubSpot's Send a webhook and Custom code actions both need Data Hub Professional or Enterprise, so a Professional portal without Data Hub has no native step for calling an API of your choice. The API Webhook Connector calls any REST API from a workflow and doesn't need Data Hub.
Which Zapier Zaps to move into HubSpot workflows, and which to keep
The rule: if HubSpot is the trigger or the destination, the Zap is a candidate to move. If HubSpot isn't in the loop at all, leave it in Zapier.
| If the Zap... | Do this | Build it with |
|---|---|---|
| Starts in HubSpot and ends in HubSpot (update a record, create a task, associate records) | Move | Native workflow actions |
| Starts in HubSpot and ends in Slack, Teams, Google Sheets or Asana | Move | HubSpot's native integration actions |
| Starts in HubSpot and ends in Gmail, Google Ads, SendGrid, Notion or Telegram | Move | Send email with Gmail, Send Google Ads Conversion and other 0CodeTools actions, or Telegram for HubSpot |
| Starts in Google Sheets, Slack, a webhook or an app with app events, and ends in HubSpot | Move | New builder triggers, classic webhook trigger or app events |
| Starts in HubSpot and ends in an app with no HubSpot action | Go hybrid | API Webhook Connector to the app's API or to a Zapier Catch Hook |
| Never touches HubSpot | Keep in Zapier | Zapier |
What changes when a HubSpot Zap becomes a workflow:
- Lead alerts don't wait for Zapier's poll. When the trigger happens inside HubSpot, HubSpot enrolls the record itself, so there's no polling interval between HubSpot and a third tool.
- Native steps don't add tasks. Zapier counts every successful action as a task. Native HubSpot steps like Branch, Delay, Edit record or Send Slack notification don't consume tasks or app credits.
- The record is already in hand. Branch on any property, pull data from associated records, route by owner. A Zap starts with what the trigger hands it; anything else takes extra lookup steps, and a lookup that misses is how Zaps end up creating a new contact or deal instead of updating the existing one.
- One place to look when something breaks. A workflow's action logs show which record hit which step, and why. With a Zap, admins compare Zap history against HubSpot records, and Zapier and HubSpot support can each point at the other.
- It doesn't live in one person's login. On Zapier's Free and Professional plans, a Zap sits in the account of whoever built it, and Zapier can't transfer that account. When that person or agency leaves, failure alerts go to nobody, while a workflow stays in your portal with the rest of your workflows.
What can block the move:
- Plan tier. Workflows need a Professional or Enterprise hub (Marketing Hub, Sales Hub, Service Hub, Data Hub, Smart CRM or Revenue Hub). Starter plans get simple automations, whose documented actions are Delay, Send internal email notifications, Create task, Add to static segment and Run custom agent, and Sales and Service Hub Starter add up to 50 workflows with restricted triggers and actions. Third-party app actions aren't on the documented Starter list.
- Data Hub features. In classic workflows, the When a webhook is received trigger, the Send a webhook action, Custom code, Format data and daily, weekly or monthly schedules need Data Hub Professional or Enterprise.
- Workflow limits. Marketing, Sales and Service Hub Professional include up to 300 workflows; Enterprise includes up to 1,000.
- App credits. Marketplace apps bill their own way. 0CodeTools uses action credits (see pricing).
- A different mental model. Enrollment triggers, re-enrollment and branches don't map one-to-one onto Zap filters and Paths. Plan to rebuild the logic, not copy it step by step.
Zapier to HubSpot workflow map: Gmail, Google Ads, Slack, Notion, Asana, Telegram
Find your Zap by the app on the other end.
| Zap you run today | HubSpot workflow equivalent | What you need |
|---|---|---|
| Send email from Gmail (Zapier: Gmail, Send Email) | Send email with Gmail (0CodeTools): From, To, Reply-To, Subject and a plain text or HTML body | A Gmail or Google Workspace (formerly G Suite) mailbox connected in 0CodeTools |
| Send offline conversion to Google Ads (Zapier: Google Ads, Send Offline Conversion) | Send Google Ads Conversion (0CodeTools) | A GCLID stored on the record, and the Google Ads account connected in 0CodeTools |
| New lead or deal, message in Slack | Send Slack notification (HubSpot's Slack integration): post to channels, users or the record owner, with buttons to create tasks or update the record from Slack | Slack connected by a Super Admin or a user with App Marketplace permissions |
| Deal won, create a Slack channel | Create Slack channel | Company- or deal-based workflow; the record needs an owner |
| Alert in Microsoft Teams | Send Microsoft Teams Notifications | Teams integration; private channels aren't supported |
| Gmail email from each rep's mailbox or a shared one like sales@ | Send email with Gmail (0CodeTools): connect several Gmail and Google Workspace mailboxes and pick the sender in From | Each mailbox connected in 0CodeTools under Integrations → Gmail |
| Transactional email through SendGrid | Send email with SendGrid (0CodeTools) | 0CodeTools |
| HubSpot data into a Google Sheet | Create Google Sheet row, Update data in a Google Sheet | Any Professional or Enterprise hub; up to 20 cells per row per action |
| New Google Sheet row into HubSpot | Trigger Google Sheet row added or updated, then Create record | HubSpot's new workflow builder |
| Webhook into HubSpot | Webhook event is received (new builder) or When a webhook is received (classic) | Classic trigger: Data Hub Professional or Enterprise, existing records only |
| Stripe payment into HubSpot | App event trigger such as Stripe: Invoice paid | Stripe app installed |
| Notion page or database item | Create Notion page, Create Notion database item (0CodeTools) | 0CodeTools; HubSpot has no native Notion workflow action |
| Asana task | Create an Asana task (Asana app, built by HubSpot) | Asana Premium, Business or Enterprise; the project can't be private |
| monday.com item | No native workflow action. Use monday.com's own HubSpot app (recipes set up in monday.com) or HubSpot's Monday.com data sync | monday.com Standard or Pro for the recipes app |
| Telegram message | Send Telegram Message to Group, Send Telegram Message to Contact and more (Telegram for HubSpot); Send Telegram notification (0CodeTools) for internal alerts | Telegram for HubSpot: $49/month or $490/year |
| HubSpot deal won, offline conversion in Google Ads with the deal amount | Send Google Ads Conversion (0CodeTools) in a deal-based workflow, with the Amount token as Conversion Value | The Google Click ID from the associated contact |
| Any REST API, or an app only Zapier connects to | API Webhook Connector (0CodeTools) or native Send a webhook | Send a webhook: Data Hub Professional or Enterprise |
| ChatGPT or Claude step | Send to AI, Send to OpenRouter, Web Search, Company Insights (AI Studio); Ask Anthropic (Anthropic app, built by HubSpot); HubSpot AI actions like Data Agent: Research and Summarize record | HubSpot AI actions use HubSpot Credits (10 per AI action run) |
| Approval step before an action | Send Approval (Slack, Email) (0CodeTools) | 0CodeTools |
| Delay, Filter or Paths | Delay, Branch; Random delay (0CodeTools) | Native, plus 0CodeTools for Random delay |
| Formatter | Format data (native); Transform Text (0CodeTools) | Format data: Data Hub Professional or Enterprise |
| Find, create or update records and associations | Create record, Edit record, Create associations; Find and associate, Copy associations, Find and merge (0CodeTools) | Native, plus 0CodeTools |
| Zaps that run on a timer | Run on a schedule (new builder) or Based on a schedule (classic) | Classic daily, weekly or monthly schedules: Data Hub Professional or Enterprise |
Two rows deserve a note. monday.com has no native HubSpot workflow action today, so either sync the records or call monday.com's API from a workflow with the API Webhook Connector. Telegram bots can only message people who started the bot first, which matters for customer-facing messages.
Seven common HubSpot Zaps, rebuilt as workflows
The diagrams below mirror HubSpot's classic workflow editor. Steps marked "Click to see configuration" open the real settings panel with the exact field labels; hover the (i) icons for the tooltip text from the live action. The Google Sheets and webhook examples use the new builder instead, and all company and people names are sample data.
1. Send email with Gmail on a new demo request, plus Slack alert and Google Sheets row
The Zap: HubSpot form submission, message in Slack, row in a Google Sheet, email from Gmail. Three of the first six Gmail + HubSpot templates on Zapier do the Gmail part: send an email through Gmail when a HubSpot contact is created or a HubSpot form is submitted (Zapier's Gmail + HubSpot page, September 2026).
Teams build it so a demo request gets a reply from a rep's mailbox without anyone enrolling the contact by hand, including outside office hours. Steps 1 and 2 are native HubSpot actions.
Step 3 is why the Zap existed. HubSpot's own Send email workflow action sends a marketing email (Marketing Hub Professional or Enterprise). It only reaches marketing contacts and by default carries a subscription-preferences footer, so it reads like marketing mail, not a note from the rep.
The native 1:1 route is a sequence. The Enroll in a sequence workflow action needs Sales Hub or Service Hub Enterprise; on Professional, a sequence's own Automation tab can enroll contacts, but only on triggers like a form submission or page view.
Post New demo request to #inbound-leads and notify the Contact owner
Add a row to Biglytics demo requests with name, email and company
Send a Gmail email from maria@biglytics.net Subject: Your Biglytics demo request
Check branches in order: = SENT, = FAILED, and None met.
Click Send email with Gmail to open its panel. What matters:
- From lists every Gmail and Google Workspace (formerly G Suite) mailbox connected in 0CodeTools under Integrations → Gmail. Personal @gmail.com accounts work too.
- To usually holds the token Email (Enrolled contact). Reply-To is optional; leave it empty and replies go to the From address.
- Body format is Plain text (the default) or HTML. Subject and Body accept HubSpot data tokens.
- The step returns Result = SENT or FAILED. The branch turns a failed send into a task for the owner instead of a silent gap.
Each sent email is logged on the enrolled record's timeline: the contact here, or the deal or ticket when the workflow is deal- or ticket-based. When you connect a mailbox, 0CodeTools asks for two permissions: "Send email on your behalf (we cannot read your inbox)" and "View your email address (to label this connection)". It can send; it can't read.
Here's what the lead receives. Toggle the body format to compare:
Hi Jordan, Thanks for requesting a Biglytics demo. What would you most like to see? Reply here and I will send you two times that work this week. Maria
Sent from a real mailbox, so replies land in that inbox. Sample data.
Multiple Gmail mailboxes and per-owner sending. You can connect several Gmail and Google Workspace mailboxes in 0CodeTools: each rep's own, plus team mailboxes like sales@ and support@. From is a dropdown of those connected mailboxes, not a token, so per-owner sending is a Branch on Contact owner with one Send email with Gmail step per rep, plus a None met path that sends from a team address like sales@.
With a large team, that's one path to update whenever a rep joins or leaves. Every connected mailbox shows up in the list:
Every Gmail or Google Workspace mailbox connected in 0CodeTools appears here.
Send a Gmail email from maria@biglytics.net Subject: Your Biglytics demo request
Click a mailbox to change the sender
Check branches in order: Maria Lopez, Tom Becker, and None met.
Limits, compared with Zapier's Gmail Send Email step: one recipient per send, no CC or BCC, and no attachments yet.
Google's own sending limits apply per mailbox. Google documents about 500 emails a day for a personal Gmail account and 2,000 messages a day per Google Workspace user (500 on trial accounts, and on new accounts until the domain has paid at least $100). This is for 1:1 email from people, not bulk marketing.
Each sent email uses one 0CodeTools credit, and failed sends aren't charged. HubSpot treats one-to-one email as its own subscription type, so add an enrollment filter that leaves out contacts who unsubscribed from one-to-one or all email.
Full details on the Send email with Gmail page, with more use cases in our Gmail workflow guide.
2. Send Google Ads offline conversions when a Stripe invoice is paid
The Zap: Stripe payment, update HubSpot, send an offline conversion to Google Ads. With the Stripe app installed, Stripe: Invoice paid is a trigger in the classic editor under App events, and the conversion upload is one 0CodeTools action.
Google Ads optimizes toward whatever conversions you report. If it only hears about form fills, it counts spam and people who can't buy as wins, and finds you more of them. Reporting the paid invoice tells it which clicks became customers:
Set Lifecycle stage to Customer
Send a conversion to Google Ads account 123-456-7890
Check branches in order: = UPLOADED, = FAILED, and None met.
How to read it:
- Re-enroll is off, so only a contact's first paid invoice becomes a conversion, and Order ID gives Google Ads a unique ID per contact.
- The value comes from the CRM. Conversion Value takes a static number or a token; here it pulls the associated deal's amount with Amount (Deal: Most recently updated). If a paying contact might have no associated deal, use a static value instead.
- It matches by GCLID only. HubSpot's default contact property Google Click ID holds "the Google Click ID associated with the contact's most recent Google Ads click". A contact without one returns Result = FAILED, and the branch flags it.
- Timing follows the workflow. The conversion time is the moment the action runs. Google won't import a GCLID conversion more than 90 days after the click, or outside the conversion action's click-through window (30 days by default), so widen the window to fit your sales cycle.
- Reporting lags. UPLOADED means the upload went through. Google says imported conversions can take several hours to show in reports.
Each uploaded conversion uses one 0CodeTools credit; failed uploads aren't charged. No Google Ads API developer token is needed.
HubSpot's native ad conversion events (Marketing Hub Starter and up) have two documented triggers, lifecycle stage changes and HubSpot form submissions, with a value you set per event. Lifecycle events can match on hashed contact data as well as the GCLID. If that covers you, use it.
Zapier can do this job too. Its Google Ads step is called Send Offline Conversion, and one of its HubSpot templates for it chains four steps: the HubSpot trigger, a Filter, a Delay and the Google Ads action. Google's help page says importing conversions through Zapier needs a paid Zapier account.
The workflow version fires on any trigger from any object, such as a deal moving to Closed Won, which isn't one of the native events' documented triggers, and returns UPLOADED or FAILED for each record.
Setup steps are on the Google Ads offline conversions page and in our guide to sending offline conversions.
3. Google Sheets to HubSpot without Zapier: new row, new contact, Gmail follow-up
A common Zap: the events team logs booth leads in a shared Google Sheet, and Zapier turns each row into a HubSpot contact. HubSpot Community threads ask for exactly this, and the usual answer was a third-party tool like Zapier. In the new builder, it's a trigger:
Pick a trigger on the left. App triggers start the workflow from outside HubSpot.
The workflow, step by step:
- Trigger: Google Sheets, then Google Sheet row added or updated. Pick the Google account under Connected account and set Trigger when.
- Create record: a contact built from the new row. Test it with a row whose email is already in HubSpot, so you know whether a returning lead updates the existing contact or becomes a second one.
- Send email with Gmail from the event lead's own mailbox (say, maria@biglytics.net): a short "great to meet you at the booth" note, so replies reach her.
- Send Telegram notification (0CodeTools) to the sales team's channel, so someone picks up the conversation.
Because every action is available in the new builder, steps 3 and 4 are the same 0CodeTools actions you'd use in a classic workflow.
Before you switch it on, remember the three Sheets rules from earlier: about a minute of lag, identical rows don't re-trigger, and renaming a header re-enrolls the whole sheet. Protect the header row in Google Sheets so nobody renames a column by accident, and tell the team.
4. Replace a Zapier Catch Hook: webhook in, HubSpot contact created, Slack alert
The Zap: a Catch Hook receives a sign-up from your product or a form tool, creates a HubSpot contact and posts to Slack. Webhooks by Zapier needs a paid Zapier plan; the HubSpot version needs no middle tool.
In the new builder:
- Trigger: Webhook event is received, then Create new event. Name it, paste the URL HubSpot shows into the sending app, and click Listen for events to capture a test.
- Review properties: on Next: Event properties, adjust each property's name and field type.
- Link or don't: choose Yes, link this event to CRM records or No, keep this event unconnected to CRM records. For sign-ups that aren't in HubSpot yet, keep it unconnected and create the record in the next step.
- Create record: a contact, using the webhook's properties as tokens. Test it with a sign-up whose email is already in HubSpot, so you know whether it updates the existing contact or creates a second one.
- Alert the team: a Slack notification with details from both the webhook and the new record, or a Send Telegram notification step.
The classic When a webhook is received trigger does a narrower job: it enrolls an existing record matched on a unique property, such as your app's user ID. Use it for updates like "trial activated", not new sign-ups. Data Hub Professional includes up to 10 webhook triggers, Enterprise up to 100.
5. Closed-won deal: Slack channel, Asana task, Notion page, Telegram ping
The closed-won kickoff Zap: when a deal closes, create a Slack channel, a project task and a notes page, and tell the team. It's four or more Zapier tasks per deal. In HubSpot, two of the steps are native and two come from 0CodeTools.
Create a channel for the deal; the Deal owner is invited
Add a Kickoff task to the Client onboarding project
Create a kickoff page under Client Onboarding
Post the win to @biglytics_sales
Setup notes (the first two from HubSpot's documentation):
- Create Slack channel works in company- and deal-based workflows. The record needs an owner, and the owner is invited by default.
- Create an Asana task only sees projects that aren't private, and the user who connected Asana must be a collaborator on the project.
- Create Notion page returns Page ID and Page URL as outputs, so a later Edit record step can save the link on the deal.
For customer-facing Telegram messages (a welcome message in a client group, say), use the Telegram for HubSpot actions such as Send Telegram Message to Group. More patterns in Telegram and Notion integration with HubSpot.
6. AI Studio instead of a ChatGPT Zap: Company Insights, Web Search and Send to AI
The Zap: new HubSpot company, scrape the website, ask ChatGPT to classify it, update HubSpot. AI Studio does each step as a workflow action:
Read the company's website and describe the business
Search the web for recent news about the company
Score the company against your ICP using steps 1 and 2, and save the answer to ICP fit
Set Description to the Company Description from step 1
What each step hands to the next:
- Company Insights takes the website and a Description Type ("1: Essential" or "2: Detailed") and returns Company Name, Company Description and Raw Webpage Content.
- Web Search returns an AI generated answer, plus AI Summary of page 1 to 3 and Link to page 1 to 3.
- Send to AI takes a model under Choose AI model (for example "OpenAI Basic (GPT-5-mini)"), a Prompt for AI, an optional Property to include with prompt, and a Save result to a property checkbox. Its output is AI Response.
If the model you want isn't in Send to AI's list, Send to OpenRouter runs any text model on OpenRouter, billed by actual model cost. Link your own OpenRouter key to pay OpenRouter directly, for a flat 1 credit (200 tokens) per run.
HubSpot also has native AI actions in the workflow picker, such as Data Agent: Research, Infer company value proposition and ICP and Research company news. They draw HubSpot Credits: 10 per AI action run, per HubSpot's product catalog. Compare both on a few records before you commit.
7. Everything else: keep the Zap, and trigger it with the API Webhook Connector
Some destinations have no HubSpot action and no API you want to call yourself. For those, keep the Zap, but start it from a workflow instead of a broad HubSpot trigger in Zapier. The API Webhook Connector posts to a Zapier Catch Hook from inside the workflow:
POST contact tokens to a Zapier Catch Hook
Here the workflow decides which records qualify, not a broad Zapier trigger like "Contact Recently Created or Updated", so the Zap only runs, and only bills tasks, for those.
A Catch Hook needs a paid Zapier plan and fires when the request arrives; Zapier's polling triggers check every 2 minutes on Professional and 1 minute on Team.
HubSpot's native Send a webhook action does the same job if you have Data Hub Professional or Enterprise; it supports POST and GET and retries failed calls for up to three days. The full setup, authentication and pitfalls are in Trigger Zapier instantly from HubSpot.
What it costs: Zapier tasks vs HubSpot workflow actions
The two tools bill on different units, so compare the units first.
Zapier bills per task. A task is any successful action. Triggers, polling, Filter and Paths steps, Formatter and Delay steps, and failed actions don't count.
Free gives you 100 tasks a month with two-step Zaps only. Professional starts at $19.99/month billed annually ($29.99 month to month) for 750 tasks and adds multi-step Zaps and Webhooks. Team starts at $69/month billed annually ($103.50 month to month) for 2,000 tasks.
Go over your limit with pay-per-task on and extra tasks cost 1.25x the base rate on annual plans or 2.5x on monthly plans, up to 3x your plan; with it off, your Zaps pause.
HubSpot doesn't meter most native steps. Workflows come with Professional and Enterprise hubs, and native actions like Send Slack notification, Create Google Sheet row, Edit record, Branch and Delay don't consume tasks. HubSpot's AI actions use HubSpot Credits (10 per run), and so does using a Data Studio dataset in a workflow.
Apps bill for their own steps. 0CodeTools has a free plan with 100 actions a month (no credit card) and paid plans from $49 to $249 a month for 3,000 to 70,000 actions. Send email with Gmail uses 1 credit per sent email and Send Google Ads Conversion uses 1 per uploaded conversion; failures aren't charged.
A worked example. Assumptions: a sample company (Biglytics) already on a HubSpot Professional hub, three HubSpot-centric Zaps, every run succeeds, Zapier prices as listed on its pricing page in September 2026.
| Automation | Runs per month | Zapier tasks | HubSpot: native steps | HubSpot: 0CodeTools credits |
|---|---|---|---|---|
| Demo request: Slack alert, sheet row, Gmail reply | 400 | 3 x 400 = 1,200 | Slack, Google Sheets | 400 |
| Lead becomes SQL: Google Ads conversion, Slack alert | 150 | 2 x 150 = 300 | Slack | 150 |
| Deal closed won: Slack channel, Asana task, sheet row | 60 | 3 x 60 = 180 | All three | 0 |
| Total | 1,680 tasks | 550 credits |
On Zapier, 1,680 tasks is more than twice the 750 in Professional's entry tier, so you'd move up a task tier or to Team (2,000 tasks, from $69/month billed annually). In HubSpot, the native steps cost nothing extra, and 550 credits fit the entry 0CodeTools paid plan ($49/month for 3,000).
In this example the two bills land in the same range. The difference is how they grow.
Every step you add to a Zap adds tasks on every run. A native HubSpot step adds nothing; only steps HubSpot can't do natively use app credits.
Add one more native step, say an Edit record, to each automation and Zapier's count grows by 610 tasks a month, while the HubSpot bill doesn't move.
How to replace Zapier with HubSpot workflows, phase by phase
Each phase depends on the one before it.
Phase 1: Inventory. List every Zap that touches HubSpot: its trigger, each step, monthly task count, who owns it and what breaks if it stops. Include Zaps in logins that belonged to former staff or an old agency. Look at the Zaps nobody can explain first, and find out what they change in HubSpot before you switch them off.
Phase 2: Classify. Run each Zap through the move / hybrid / keep table above. Start with the Zaps that burn the most tasks or matter most to revenue, like speed-to-lead replies.
Phase 3: Rebuild in HubSpot. One workflow per Zap to start; merge later if it helps. Add a Branch on every app action's Result output so failures create tasks instead of disappearing. Test with a single record: enroll one test contact in a classic workflow, or use Run draft in the new builder before you Publish.
Phase 4: Run in parallel, carefully. Internal steps (Slack alerts, sheet rows) are safe to run twice for a while. Customer-facing steps (emails) and Google Ads conversions are not. Switch those off in the Zap before you turn them on in HubSpot, so nobody gets two emails and Google doesn't get two conversions.
Phase 5: Switch off the Zap. Turn it off, don't delete it. Keep it until the workflow has handled a full cycle of the process it replaces, such as a month-end billing run.
Phase 6: Monitor. In classic workflows, the details page has Action logs, Enrollment history and Performance tabs. HubSpot keeps action logs for 90 days and enrollment history for 6 months, and you can export action logs to CSV. The new builder has a Run History tab next to Edit.
What Zapier still does better
Keep Zapier where it's the better tool:
- Automations that never touch HubSpot. Form tool to Google Drive, calendar to Notion, app to app. HubSpot has no business sitting in the middle.
- The long tail of apps. If a tool has no HubSpot action, no HubSpot app event and no API you want to call, a Zapier connector is the practical answer. Trigger it from HubSpot with a webhook, as in walkthrough 7.
- Heavy data shaping without Data Hub. Zapier's Formatter, Paths and Looping don't cost tasks. In classic workflows, Format data and Custom code need Data Hub Professional or Enterprise, and custom code must finish within 20 seconds.
- HubSpot Starter portals. The documented actions for Starter's simple automations don't include third-party app actions. Until you move to Professional, Zapier may still be the practical way to reach other apps from HubSpot data.
- Teams who already live in Zapier. If your ops people know Zapier well and your HubSpot admin is stretched, a working Zap can wait. Move it when you touch it anyway.
Have us audit and rebuild your HubSpot Zaps
We're a HubSpot Diamond Solutions Partner, and we build and maintain 0CodeTools and AI Studio. We'll audit your Zaps, tell you which ones to move, and rebuild them as HubSpot workflows. See HubSpot integrations, or hand the ongoing work to our RevOps support team.
Doing it yourself? Install 0CodeTools from the HubSpot Marketplace or create a free account. The free plan includes 100 actions a month, no credit card.
Related guides
- Send email with Gmail from HubSpot workflows: multiple Gmail and Google Workspace mailboxes, sending from a rep's or a shared inbox, per-owner sending and failure handling.
- Send offline conversions from HubSpot to Google Ads: GCLID setup, conversion actions and value-based bidding.
- Trigger Zapier instantly from HubSpot: the hybrid pattern in depth.
- Add an approval step to any HubSpot workflow: Send Approval (Slack, Email) and branching on the decision.
- Random delay in HubSpot: spread sends so automation doesn't look automated.
- Free HubSpot workflow library: ready-to-install templates.
