# Create Contact via Webhook

**URL:** <https://community.hubspot.com/t/create-contact-via-webhook/144504>\
**Category:** CRM\
**Tags:** workflows\
**Created:** [January 2, 2026, 1:23pm UTC](https://community.hubspot.com/t/create-contact-via-webhook/144504 "2026-01-02T13:23:44Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![FButteron](https://avatars.discourse-cdn.com/v4/letter/f/eb8c5e/32.png) [@FButteron](https://community.hubspot.com/u/FButteron)\
**Post date:** [January 2, 2026, 1:23pm UTC](https://community.hubspot.com/t/create-contact-via-webhook/144504/1 "2026-01-02T13:23:44Z")

</div>

Hi community,

I’m exploring options for creating a contact via a webhook. We collect leads via Microsoft’s Partner Center, which allows us to send those leads to a webhook. Right now we are solving this via Make, which then creates a contact in HS.

However, we now upgraded to the Enterprise Platform, giving us full access to all features and I’d like to consolidate as many workflows as possible within HS. So now I’m looking into ways that we can have a webhook in HS, which triggers the creation of a new contact.

But I’m now a bit stuck there. Via the workflows, webhooks can only be used for existing contacts, since those will then be enrolled in teh workflow. But in this case, we get infos on leads that are not yet in the system - therefore, these contacts should then be created.

I have no way of specifying the webhook request coming from the platform, i.e. I can’t use the forms API or similar.

Is there a way to solve this?

---

<div class="post-metadata">

**Author:** ![chighsmith](https://avatars.discourse-cdn.com/v4/letter/c/77aa72/32.png) [@chighsmith](https://community.hubspot.com/u/chighsmith)\
**Post date:** [January 2, 2026, 2:20pm UTC](https://community.hubspot.com/t/create-contact-via-webhook/144504/2 "2026-01-02T14:20:16Z")

</div>

Hi @FButteron,  
Thank you for posting to the Community!  
I’d like to tag in some of our Top Contributors to see if they have any tips on this -- Hi @derekcavaliero [@Danielle\_J](https://community.hubspot.com/t5/user/viewprofilepage/user-id/673740) and @TDwebdev Do any of you all have any ideas on this one?  
Happy New Year!  
Cassie, Community Manager

---

<div class="post-metadata">

**Author:** ![JoeA14](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/joea14/32/15219_2.png) [@JoeA14](https://community.hubspot.com/u/JoeA14)\
**Post date:** [January 10, 2026, 5:51pm UTC](https://community.hubspot.com/t/create-contact-via-webhook/144504/3 "2026-01-10T17:51:00Z")

</div>

Hi @FButteron,

I just wanted to add these context around creating contacts from external webhooks in HubSpot Enterprise. The key point is that HubSpot workflows only trigger on existing records, so there’s not a ‘fully native way’ to have a webhook both create a contact and immediately trigger a workflow.

That’s why most solutions involve a small ingestion step, that allows whether [Make.com](http://Make.com), a lightweight serverless function, or another minimal middleware that aims to create the contact first. Once the contact exists, workflows can then handle all subsequent actions reliably. This pattern is standard at Enterprise scale and keeps everything within HubSpot-supported boundaries.

If you’d like, I can outline a HubSpot-native-friendly pattern for handling external leads efficiently while keeping workflows safe and automated. It’s a way to reduce middleware overhead without breaking HubSpot’s reactive model.

—Joeniel

---

<div class="post-metadata">

**Author:** ![PradipK](https://avatars.discourse-cdn.com/v4/letter/p/e47774/32.png) [@PradipK](https://community.hubspot.com/u/PradipK)\
**Post date:** [January 4, 2026, 9:06am UTC](https://community.hubspot.com/t/create-contact-via-webhook/144504/4 "2026-01-04T09:06:31Z")

</div>

HubSpot workflows are reactive—they trigger on existing records (property changes, list membership, form submissions). HubSpot has no native webhook receiver endpoint that accepts external payloads and creates new contacts from scratch.

- **Keep [Make.com](http://Make.com) minimal** - Use it only for webhook ingestion → contact creation, then let HubSpot workflows handle everything else
- **Build custom webhook endpoint** - Serverless function (AWS Lambda, Cloudflare Worker) that receives webhook and POSTs to HubSpot API
- **Use HubSpot Private App + middleware** - Create private app for API access, use any webhook receiver (n8n, Pipedream) to transform payload and create contact  
Honestly, I’d stick with [Make.com](http://Make.com) for now. You’ll spend more time and money building a custom solution than just keeping one simple scenario running. It’s literally designed for this—receiving webhooks and making API calls.  
I’ve built this exact setup if you want to discuss implementation details.

---

<div class="post-metadata">

**Author:** ![amjadkhatri](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/amjadkhatri/32/79746_2.png) [@amjadkhatri](https://community.hubspot.com/u/amjadkhatri)\
**Post date:** [January 5, 2026, 1:26pm UTC](https://community.hubspot.com/t/create-contact-via-webhook/144504/5 "2026-01-05T13:26:30Z")

</div>

Since you’re on Enterprise, here’s an alternative to keeping [Make.com](http://Make.com) — you can use a serverless proxy with HubSpot’s Private App:

\*\*Solution: Lightweight Webhook Receiver\*\*  
1. Deploy a simple serverless function (AWS Lambda, Cloudflare Worker, or Vercel Edge Function)  
2. Create a HubSpot Private App with Contacts write permission  
3. Configure Microsoft Partner Center to POST to your function’s URL  
4. Function receives webhook → transforms payload → creates contact via HubSpot API

\*\*Code Skeleton (Node.js):\*\*  
```  
const response = await fetch(‘[https://api.hubapi.com/crm/v3/objects/contacts](https://api.hubapi.com/crm/v3/objects/contacts)’, {  
method: ‘POST’,  
headers: { ‘Authorization’: ‘Bearer YOUR\_PRIVATE\_APP\_TOKEN’ },  
body: JSON.stringify({ properties: { email, firstname, lastname } })  
});  
```

\*\*Why This vs. [Make.com](http://Make.com):\*\*  
- Lower cost ($0-5/month vs [Make.com](http://Make.com) subscription)  
- Faster response time (\< 100ms)  
- Full control over transformation logic  
- No external dependency

\*\*Caveat:\*\* You’ll need basic Node.js knowledge for deployment. If your team doesn’t have dev resources, Pradip’s advice to stick with [Make.com](http://Make.com) is solid — it’s reliable and battle-tested for exactly this use case.

Let me know if that works for you!
