How to Add New Bookings to HubSpot Automatically via Zapier
To add new Cartoply bookings to HubSpot automatically, create a Zapier zap that triggers on the Cartoply "Booking Confirmed" event, then maps the booking fields — name, email, phone, service address, scheduled time, assigned tech, and UTM parameters — to a HubSpot Contact and Deal. The contact is created or updated, and a new deal is opened in your pipeline. Setup takes under 15 minutes and requires no code.
Connect Cartoply to HubSpot in Zapier using the Booking Confirmed trigger, map the booking fields to a HubSpot Contact and Deal, and every confirmed appointment lands in your CRM automatically.
How to automatically send new bookings to HubSpot via Zapier
- Connect Cartoply to Zapier and select "Booking Confirmed" as the trigger.
- Add a HubSpot action: "Create or Update Contact" using the customer's email.
- Map booking fields — name, phone, address, tech name, and appointment time.
- Add a second HubSpot action: "Create Deal" linked to that contact.
- Map UTM parameters and gclid from the Cartoply payload to deal properties.
- Test with a live booking, confirm the deal appears, then turn the zap on.
Why this matters more than a simple contact sync
Most field service teams think CRM sync means "customer ends up in HubSpot." It doesn't. A contact row with no deal, no source data, and no assigned owner is noise — your sales or ops team will ignore it within a week. The zap above does three things at once: it creates or deduplicates the contact, opens a deal in the right pipeline stage ("Booked"), and carries the attribution data that tells you whether that booking came from a Google Ads campaign, a Facebook lead form, or an organic search. That last part is what separates a useful CRM from a graveyard of names. Cartoply captures UTM source, medium, campaign, term, and content, plus gclid, fbclid, and referrer at first touch — before the customer navigates to the booking page. Every confirmed booking's Zapier payload includes all of those fields. Map them to custom deal properties in HubSpot and you can filter your pipeline by campaign in thirty seconds. If you run Google Ads for your service area, you can also push that gclid back as an offline conversion — something most embedded booking tools can't do because they lose the click ID the moment a customer crosses a domain boundary. (See how GA4 conversion tracking for booking forms fits into the bigger attribution picture.)Field mapping reference — what to send where
| Cartoply Zapier field | HubSpot destination | Notes |
|---|---|---|
| customer_email | Contact: Email | Used for deduplication — always map this first |
| customer_name | Contact: First Name / Last Name | Split on space or use full name field |
| customer_phone | Contact: Phone Number | |
| service_address | Contact: Address / Deal: Job Address (custom) | For field teams, this is the job site — map it to the deal, not just the contact |
| appointment_start | Deal: Close Date or custom "Appointment Date" | Use a custom date property so Close Date stays for won/lost tracking |
| assigned_team_member | Deal: Owner (lookup by email) or custom "Assigned Tech" | HubSpot owner lookup requires the rep's HubSpot email to match |
| event_type_name | Deal: Deal Name or custom "Service Type" | "HVAC tune-up — Jane Smith" makes the pipeline readable |
| utm_source / utm_medium / utm_campaign | Deal: custom text properties | Create these as single-line text in HubSpot first |
| gclid | Deal: custom "Google Click ID" property | Required for offline conversion upload to Google Ads |
| amount_paid | Deal: Amount | The deposit or booking fee collected at confirmation |
Setting the deal stage automatically
Hard-code the deal stage to "Booked" (or whatever your pipeline calls a confirmed appointment) in the Zapier action — don't map it from Cartoply. This way every incoming booking drops into the same stage and your pipeline view immediately shows you the day's committed work, separate from leads still in "Contacted" or jobs in "Invoice Sent." If you run multiple service types — say, an HVAC company that does both maintenance visits and emergency calls — use Zapier's Filter or Path steps to route each event type to a different pipeline. A $99 maintenance booking and a $1,200 emergency repair belong in different deal pipelines from the start.One zap for the whole team, not one per tech
Because Cartoply routes each booking to the right tech by territory before it's confirmed, every booking that hits Zapier already has an assigned_team_member field. You don't need separate zaps for each person. One zap handles the entire team — and if you later add a third HVAC tech covering a new ZIP code cluster, the zap picks them up automatically with zero changes. This is the same territory-first logic covered in our guide on automating lead assignment for HVAC and plumbing companies. For a look at how to add Slack notifications alongside this HubSpot zap — so a dispatcher sees a new booking in real time while it also lands in the CRM — the Slack notification Zapier guide covers exactly that.Quick setup checklist
- ☐ Zapier account connected to both Cartoply and HubSpot
- ☐ Custom deal properties created in HubSpot for: appointment date, assigned tech, service address, UTM fields, gclid
- ☐ Trigger tested with a real "Booking Confirmed" event (use Zapier's test step — don't guess)
- ☐ Deduplication field set to customer email on the HubSpot "Create or Update Contact" action
- ☐ Deal stage hard-coded to your "Booked" stage, not mapped from Cartoply
- ☐ Deal name formula set (e.g., "Service type — Customer name") so the pipeline is readable
- ☐ Filter or Path step added if you have multiple pipelines by service type
- ☐ Zap turned on and a second live booking confirmed to verify end-to-end
Ready to get every booking into HubSpot automatically?
14-day free trial — no credit card required. $7/seat/month after that.
Start free trial →Frequently asked questions
Can I send Cartoply bookings to HubSpot without Zapier?
Not natively — Cartoply's HubSpot connection runs through Zapier (or any webhook-compatible automation tool like Make). Zapier is the fastest route: the Cartoply "Booking Confirmed" trigger is available on Zapier's free tier, so you can test the full flow before paying for anything. For teams that already use Make or n8n, the Cartoply Zapier payload is also available as a webhook, so the same field mapping applies.
What booking data does Cartoply send to Zapier?
Every confirmed booking payload includes: customer name, email, phone, service address, appointment start and end time, event type name, assigned team member name and email, amount paid, and all captured attribution data — utm_source, utm_medium, utm_campaign, utm_term, utm_content, gclid, fbclid, msclkid, referrer, and landing page URL. That's enough to create a fully attributed HubSpot deal with no additional lookups.
How do I stop duplicate contacts appearing in HubSpot?
In the Zapier "Create or Update Contact" action, set the deduplication key to the customer's email address. HubSpot will update an existing contact record if a matching email already exists, or create a new one if it doesn't. This covers repeat customers — a cleaning company whose client books a second service, for example — without creating duplicates. Still audit your HubSpot contacts monthly; phone-number-only submissions with no email won't deduplicate this way.
Does the assigned tech in Cartoply become the deal owner in HubSpot?
Only if the tech's email in Cartoply matches a HubSpot user email exactly. In Zapier, use the "Find Owner" lookup action before the "Create Deal" step — it takes the assigned_team_member_email field and returns a HubSpot owner ID you can then pass to the deal. If no match is found, the deal is created unassigned, so it's worth auditing your team's email consistency across both tools before turning the zap on.
Get field service tips in your inbox
Scheduling, dispatch, and territory strategy for home service teams. No spam, unsubscribe anytime.
By subscribing you agree to receive emails from Cartoply. Unsubscribe anytime. See our Privacy Policy.