CRM automation that does the handoffs and never guesses who a customer is
Automation for the clerical work of a CRM: every lead captured once and routed to an owner, follow-ups that stop when they should, a won deal handed to delivery and to the accounts, and data clean enough to report on. On HubSpot, monday CRM, Airtable, Pipedrive-style CRMs or a custom build.
CRM automation is software doing a CRM's clerical work: capturing each lead once, routing it to an owner, chasing the follow-up, handing a won deal to delivery and to the accounts, and keeping the records clean enough to report on. Our position is simple. Automate the moves between stages and the handoffs between systems. Never let an automation decide on its own who a customer is, whether they have already been sent something, or what they owe. Those three need a stored key, a record of what was done and, where it matters, a person. Most CRM automation that goes wrong breaks one of them.
Most of our evidence is Make work around a monday.com CRM. For a vocational training provider we built flows that take lead-ad and website forms into the CRM, log calls and voicemails, forward a lead's email reply to the rep who owns them, and raise Xero invoices from a status change. For a trailer manufacturer, a flow matches each website enquiry to the quotes and invoices raised for it in Xero. Two client case studies go further. They describe a CRM we built from scratch for a UK commercial solar installer, as part of one system that replaced a patchwork that had included another CRM. Beyond what is published, we have built CRM and project-management systems for businesses in hospitality, events and furniture, and Zapier work that takes WooCommerce orders into monday.com and on to Xero invoices.
Three neighbouring pages answer different questions. Which CRM to buy is our monday.com vs HubSpot CRM article. How to set up HubSpot properties, lifecycle stages and workflows is our HubSpot page. Integration work in general, for any pair of systems, is the API integration consultant page. This page covers automating the CRM you have, and the point at which it should be replaced.
Seven jobs for CRM automation, and the line each one must not cross
These are the jobs worth automating, in roughly the order a lead meets them. For each one: what the automation should do, what it must not do, and where we have built it, including the gaps the build still has.
- 01
Capture every lead once
Every channel (ad forms, website forms, calls, chat) should land in the CRM within minutes, with its source and what the person said. The automation should search before it creates, on a stored key such as a normalised email, and turn a repeat into a note on the existing record. It must not create a second lead because an email had a capital letter in it. Our lead-ad flow for the training provider searches by name and email and adds a note when it finds a match: 286 runs and no errors in Make's counters. Its stated gap is that a changed email still makes a second lead. The same client's website-form flow has no duplicate check at all, and its page says so.
- 02
Route it to an owner, and chase until someone claims it
Assign by a rule you can read (territory, product, an answer on the form) and treat an unclaimed lead as the failure to watch for. A lead that matches no rule must go to a person, not disappear. For a short-term rental company, a website lead becomes a Slack card, an Airtable row and a CRM contact, and the flow reads the claim thread after five minutes, nudges the first owner and hands over to a second if nobody has replied. The training provider's reply forwarders read the owner from the CRM rather than choosing one: 441 runs each, no errors. Their lead-ad flow, by contrast, drops a lead that matches no eligibility route. That is the gap we now design out with a catch-all route.
- 03
Follow up on a schedule the CRM can see
Reminders and sequences should keep their state on the record, so a salesperson can see what was sent and move it on, and they should stop on a reply or an opt-out. They must not send twice, or send to someone who has opted out. The training provider's SMS sequences keep the current day on the CRM item as the cursor. They are built but have not run yet, and they do not check opt-out, which their page states. Our own outreach platform puts the two rules in the database instead: a step can send only once per enrolment, and one suppression stops every sequence for that person.
- 04
Make a stage change trigger what the stage promises
A pipeline is a set of promises: when a deal reaches this stage, someone does that. Automation should fire on the specific move, filtered on where the deal came from and where it went, and record what it did on the record's timeline. The training provider's document chaser fires only when a lead moves from one particular group to another. It has 17 runs, and most of them stop at that first filter. Where a stage needs data, the gate belongs in the CRM. On the solar installer's system, dragging a deal forward asks the API whether the deal has what that stage needs, and a refusal names what is missing. An override exists, but it needs its own permission and a reason.
- 05
Hand a won deal to delivery
Winning should open the delivery record, carry across what delivery needs, and be safe to run twice. It should not keep the deal open through delivery, because then the forecast, close rate and stage durations all start describing fulfilment. On the solar ops platform, winning a deal opens one project per building, each with its own delivery board, tasks and milestones. The contract value is split across the buildings, and a test checks that the parts always add back to the total. A building linked after the win gets its project on the next run, and nothing is duplicated.
- 06
Raise the quote or invoice in the accounting system
The CRM knows what was sold. The accounting system should hold the invoice. Automation should create the invoice from the CRM record, match the customer on a stored ID and write the invoice number back. It must not raise a second invoice because someone selected the status again. The training provider's Xero flow does the first part well. The second is its stated gap, and the section below covers both.
- 07
Keep the data clean enough to report on
Normalise at the point of entry, join systems on IDs that do not change, and accept that a report built on a loose match is a loose report. The trailer manufacturer's attribution flow stores each enquiry's email in a canonical form, so later matches against quotes and invoices are exact. It has 523 runs, and its five errors all came in its first two days. The training provider's ad reporting stores each campaign's platform ID as the join key, so renaming a campaign breaks nothing. Its lead-stage mirror has run 752 times without error, but it matches on name or email and can over-match. Its page says that too.
What each kind of CRM automates natively, and how it spots a duplicate
The jobs above do not change from one CRM to the next. Where the work lives does. So does each CRM's idea of what a duplicate is, and that decides most of the design.
| CRM | Its own automation is enough for | How it recognises a duplicate | The trap we design around |
|---|---|---|---|
| HubSpot | Workflows inside HubSpot: enrolment, property updates, internal notifications and marketing email | Contacts by email address and companies by domain, automatically. Companies created through the API are not deduplicated by domain | A record enrols in a workflow once by default. Re-enrolment has to be switched on per trigger, so a workflow that ran last time is no evidence it will run again |
| monday CRM and monday.com boards | Board automations: status moves, assignment, notifications, reminders on a date | A Manage duplicates tool that matches on identical values in a column you choose and archives the extra items. Nothing stops a duplicate arriving | Status labels. An API write with a label the board does not have fails unless it is told to create the label, and creating it quietly fills the board with near-identical options |
| Airtable used as a CRM | Automations inside one base: notifications, record updates and scripts | There is no unique field. The API can upsert on up to three merge fields, and the request fails if more than one record matches | A base grows into a database without the permissions, audit or constraints of one. Our Airtable automation limits article covers where that starts |
| Pipedrive and similar pipeline CRMs | Automations on deal, person, lead and organisation events, including stage changes | A merge tool that flags people with the same name and a matching phone, email or organisation. Merges cannot be undone, and deals cannot be merged | A stage-change automation also fires when a deal is moved backwards, so a deal dragged back and forth repeats the action unless the action checks first |
| A custom CRM | Whatever you build, tested like the rest of the code | Whatever the database enforces, for example a unique constraint on a normalised email | You own the maintenance, and somebody has to keep owning it |
Our default split is the one the HubSpot page argues. Logic that stays inside the CRM uses the CRM's own automation, because the people who run the CRM can read and change it. Anything that crosses into another system goes on a platform built for that, such as Make, Zapier or n8n, or into code. Native CRM automation is usually weak at retries, error routes and telling anyone it failed, and a handoff to accounts needs all three.
When the deal is won: the handoff to delivery and to Xero or QuickBooks
This is the automation with the most value and the most ways to quietly go wrong, because it is where one system's record becomes another system's obligation.
To delivery
Close the deal when it is won, and open the work in the system that runs delivery. That might be a monday.com board, a project tool or the delivery module of a custom system. Carry across what delivery needs, keep a link back to the deal, and let only the fields sales actually uses flow back. The handoff should be one-way for each field, and it should be safe to re-run: the second run finds the project the first run opened. On the solar ops platform that rule matters more than usual, because one deal can cover six buildings and opens six projects. Re-running a win opens projects only for buildings linked since.
To the accounts
- Match the customer on a stored ID, not a name. Xero's documentation says a contact name may not be unique and recommends its contact ID. Creating a contact with PUT returns an error if the name or contact number already exists. QuickBooks Online requires display names to be unique across customers, vendors and employees. A flow that creates customers by name will fail on the second Alex Smith, or attach the invoice to the wrong one.
- Write the invoice back to the CRM, and check before creating. Store the invoice number and link on the deal, and have the automation stop if one is already there. Xero accepts an idempotency key on create requests, but it only keeps the key for a few minutes. It protects a retry. It does not protect a status set again tomorrow.
- Build the invoice lines from the CRM's products and prices, so a deal with five items becomes an invoice with five lines and the right item codes. Retyping the price, or squashing it into one line, is where totals stop agreeing.
- Let the accounting system own tax, payment and paid status. The CRM can show that an invoice is paid, but it should read that from the ledger, never have someone type it.
Chasing the invoices once they are out is a separate job, with its own rules about tone, timing and when a person takes over. Our accounts receivable automation page covers it. The CRM side ends when the invoice exists and the CRM knows its number.
How CRM automation fails, mostly from our own builds' stated limits
Each of these is written up as a known gap on one of our own Make project pages, or is a vendor behaviour that causes one. That is why we design for them first.
The duplicate check is too strict
Matching on name and email together means a lead who uses a new email becomes a second lead. Matching on name alone merges two different people. We match on a normalised email or a normalised phone number, and send near-misses to a person instead of guessing. The cleanup merge runs after the inbound routes are fixed, never before, or it has to be done again next month.
A lead that fits no rule vanishes
A router with no fallback route ends the run silently, and the lead never reaches anyone. We now give every router a final route that hands the lead to a named person and posts an alert. An empty owner is acceptable only when someone is told to choose.
The same trigger fires twice
Someone selects a status twice, a deal is dragged backwards and forwards, or a workflow re-enrols. Each one repeats the action, and if the action is an invoice or a message, the customer notices. So the action checks its own write-back first: an invoice number already on the record, or a sent stamp on the step.
It stops, and nobody hears
A mail connection expires and the lead hook stops taking leads. The short-term rental company's lead flow logged its three errors that way. It also logs every failure to a heartbeat table and alerts a health channel, while a Slack failure is never allowed to block saving the lead. Most of the training provider's scenarios have no error route at all, which their pages state.
Renaming the board breaks the automation
Scenarios that name groups, labels or columns break when someone tidies the board. A label the board lacks fails the run, which is better than polluting the options but still needs catching. Join records on IDs that do not change, as the ad-reporting flow does with each platform's campaign ID, and treat the board structure as an interface someone owns.
A message goes to someone who opted out
A sequence that checks opt-out only when the lead is enrolled will keep messaging after the person unsubscribes. Check suppression at the moment of sending, every time. Where it matters most, put it where code cannot skip it. On our outreach platform, one suppression row stops every enrolment for that address.
What we have built, and what it does not prove
Two client case studies are CRM work at heart. Both describe one system we built for the same client, a CRM of its own rather than automation on one bought in. The solar operating system replaced a CRM, a monday.com workspace, spreadsheets and several no-code apps for a UK commercial solar installer. It has a pipeline gated on the data each stage needs. Meeting transcripts are matched to CRM records by attendee, and the actions in them are confirmed by a person and then chased. A website chatbot gets exactly one tool, capture a lead. Importers brought across the previous CRM's companies, deals and contacts, and can be re-run safely. The solar ops platform is the same client's deal and site model. A captured lead opens an opportunity linked to its company and contact, and a won deal opens a project for each building it covers.
| Flow | Around | What it does | Make's counters, and the catch |
|---|---|---|---|
| Lead-ad capture | monday.com CRM | Lead-ad submissions into the CRM once, a duplicate becomes a note, eligibility routing | 286 runs, no errors. A changed email still creates a second lead |
| Website forms to CRM | monday.com CRM | A webhook per page, lead created with source and course, questionnaire as a note | 51 runs, five errors while building. No duplicate check |
| Reply forwarding | monday.com CRM, Outlook | A lead's reply goes to the rep the CRM names as owner | 441 runs in each forwarder, no errors |
| Call and voicemail logging | monday.com CRM, Aircall, Twilio | Every call on a board, every voicemail a routed task | 2,910 runs, no errors. One call can create several rows |
| CRM-triggered invoicing | monday.com CRM, Xero | A status change raises, sends and writes back an invoice | 78 runs, one error. Not idempotent |
| Lead-to-invoice attribution | Gravity Forms, Xero | Enquiries matched to the quotes and invoices raised for them | 523 runs, five early errors. Matches on email alone |
| Lead intake pipeline | Airtable, a CRM, Slack | A website lead becomes a card, a row and a contact, with a response clock | 31 runs. Switched off on 2 October |
Beyond what is published, we have built CRM and project-management systems for businesses in hospitality, events and furniture, and solar CRM and ERP work. On Zapier, that includes WooCommerce orders into monday.com and then into Xero invoices with multiple line items, Gravity Forms into Cliniko with conditional logic, Airtable with Calendly, and Heymarket SMS. None of those has a published write-up, so we give no figures or results for them.
When the CRM should be replaced, not automated harder
Keep the CRM you have by default. A standard pipeline (one deal, one customer, a handful of stages, an invoice at the end) is exactly what HubSpot, monday CRM and Pipedrive are built for, and a custom build next to one is a second system to keep in step. Automation on a CRM that fits is cheaper than any replacement.
Replacement starts to pay when the automation is propping up the wrong shape. The record you work on is not a deal, for example a building, a vehicle or an event. One sale has to open several pieces of work. The rules that must hold, such as no quote without a survey or no stage without the data, cannot be enforced in the CRM, only reminded about. Or the same customer is being re-keyed between three tools. That was the solar installer's situation, and the answer was one system with the gates in the database and importers that brought the old CRM's records across safely.
It is the wrong answer for a small team with a standard pipeline, where nobody will own the system after it ships, and wherever the main complaint is really per-seat cost. A seat problem is usually solved by a portal or a report, not by a new CRM. If you are a solar business weighing the question, our solar operations software page covers that build, and our article on solar CRM versus solar ERP covers the choice.
What moves the estimate for CRM automation, and what to send
Most of our projects land between $5,000 and $10,000 (US dollars). Larger systems cost more. That is a typical range, not a quote, and no case study or flow page states a price. Your automation platform's usage is a running cost on top. What moves the number:
- How many ways leads arrive, and whether each channel carries an email or phone number to match on.
- How much duplicate data is already in the CRM, and whether a cleanup is part of the job.
- Whether the won-deal handoff goes to one system or several: a delivery board, Xero or QuickBooks Online, a project tool.
- Whether the rules exist on paper (who owns which lead, what each stage needs) or have to be agreed first.
- Whether the automation lives in the CRM, on Make, Zapier or n8n, or in code, which follows from how much has to be retried and audited.
CRM work delivered on Upwork
12 CRM jobs from Saveez Irfan's Upwork history, anonymised by industry and country. These are client engagements, most of them short, not written-up case studies. Each summary is the client's brief unless a review confirms what was built, and reviews are quoted as written, only where the client left five stars and text.
- Top Rated
- 100% Job Success Score
- 114 jobs
- 1,925 hours
- Member since Sep 2022
- Make Advanced certification, Oct 2025
Saveez Irfan’s Upwork profile, as of 21 October 2026. View the profile on Upwork (opens in a new tab)
- 2025–2026 · North Carolina, USA
HubSpot, Google Drive and Slack connected through Zapier
We set up and tidied the Zapier connections between HubSpot, Google Drive and Slack for a small team, with suggestions for the processes worth automating next.
- Zapier
- HubSpot
- Google Drive
- Slack
“I had a great experience working with Saveez. He is very skilled and thorough. He is responsive and available. He completed the project quickly and with no problems. The automations that he created save our small team time. He's a great resource. We will work with him again in the future as our automation needs increase.”
Upwork review, 5 out of 5 - 2025
Calendly bookings assigned to the right owner in Close
We built a Zapier automation that assigns each new Calendly call booking in Close to the team member it was booked with, and attaches the phone number to the correct lead. A one-day build, then a follow-on contract.
- Zapier
- Close
- Calendly
“Saveez was amazing. He went above and beyond and even made suggestions to help the optimization of my current tech stack. Highly recommended”
Upwork review, 5 out of 5 - 2025 · California, USA
Scheduled PropertyRadar exports into GoHighLevel contacts
We built phase one of a two-phase project: two scheduled Zaps that export a PropertyRadar list at 6am on weekdays and create or update the contacts in GoHighLevel, with field mapping and error handling. Phase two was dropped over a limit in the client's tech stack, as the review says.
- Zapier
- GoHighLevel
- PropertyRadar
“Saveez is great. Highly skilled. Finished part of 1 of a 2 phase project swiftly. We unfortunately hit an unavoidable roadblock w/the tech stack that forced us to abandon a 2nd phase. Would recommend.”
Upwork review, 5 out of 5 - 2025 · Oregon, USA
AI receptionist messages mapped into HubSpot
We fixed the field mapping for an AI receptionist that sends customer messages into HubSpot through a form via Zapier, in a single day.
- Zapier
- HubSpot
“Saveez was incredibly kind and helpful. He fulfilled our needs quickly and excelled in his work. I highly recommend him!”
Upwork review, 5 out of 5 - 2025 · Local service business · Wisconsin, USA
GoHighLevel data pushed into an API-only field-service system
The brief was to push data from GoHighLevel into FieldRoutes, which is reachable only through its API, using a Zapier connection.
- Zapier
- GoHighLevel
- FieldRoutes
Show 7 moreShow fewer
- 2025 · California, USA
monday.com CRM with proposal tracking, linked by Zapier to Outlook and QuickBooks
The brief was a monday.com CRM with a sales pipeline, proposal tracking, workflow automations and executive dashboards, connected by Zapier to Outlook, SharePoint and QuickBooks.
- monday.com
- Zapier
- QuickBooks
- Outlook
- SharePoint
- 2025 · Custom signage and design · Australia
Quoting, proofing and job-management stack for two related businesses
The brief was to recommend and integrate a quoting, invoicing, design-proofing and project-management stack for two related businesses, with Zapier automations, training and documentation.
- Zapier
- HubSpot
- 2025 · Talent and recruitment · Australia
Migration to monday Sales CRM, linked to a talent board
The brief was to move workflows and leads from monday Work Management into monday Sales CRM, configure Contacts and Deals, and link the CRM to a talent board with Zapier.
- monday.com
- Zapier
- 2024–2025 · E-commerce · Australia
monday.com CRM configured with the team, so they could run it
The brief was to configure and automate a monday.com CRM on calls with the team, so they could maintain it themselves afterwards.
- monday.com
- 2025–2026 · Real estate agent recruiting · Illinois, USA
Recruiting board linked to monday CRM by five Make scenarios
The brief was five Make scenarios linking a custom recruiting board to monday CRM Contacts, Accounts and Deals: contacts created automatically, and a deal created when a lead's status becomes Won.
- Make.com
- monday.com
- 2025 · Arizona, USA
AWeber lead sync into HubSpot repaired
The brief was to fix a Make scenario that had stopped syncing lead captures from AWeber into HubSpot.
- Make.com
- HubSpot
- AWeber
- 2025 · UK
Contract generation from Close CRM, fixed and replicated
The brief was to fix a failing Make scenario that generates contracts (webhook to Close to PandaDoc, with a Slack alert) and replicate it for a second contract type.
- Make.com
- Close
- PandaDoc
- Slack
3 of these were for Australian businesses. Our work for Australian businesses
Related projects that were not this job
Here for the argument rather than as evidence of this exact work. Each one bears on a decision above, and the note says which.
- A fleet-telematics providerOrders that file themselves, and an SLA clock that never forgetsNot a CRM build. It is orders parsed onto monday.com boards, and it is here for three things a CRM handoff needs: a resent document updates the existing row instead of creating a second, an ingest ledger records what arrived and what it changed, and a business-day clock escalates on its own.Case study
- Skofi OutreachSkofi Outreach: deliverability rules the database refuses to breakOur own prospecting and sequencing product, not a CRM integration for a client. It is here because its follow-up rules (send once per enrolment, one suppression stops every sequence) are database constraints, which is where we argue those rules belong.Case study
- A UK commercial solar installerA content engine that is not allowed to make things upNot CRM work. It is a marketing platform for a UK commercial solar installer, here for one rule that carries over to automated follow-up: drafts go to an approval queue and nothing is sent without a person.Case study
- A UK heat-pump installerHeat-pump quotes with the compliance gates written into the codeNot a CRM, and still in build. It takes a website enquiry towards a quote, and a job's stage can change only through one function that checks a map of allowed moves. That is the strict end of the stage-gating argument on this page.Case study
Platforms that bear on it
Related reading
Neighbouring solutions
CRM automation, specifically
Software doing a CRM's clerical work: capturing leads from every channel once, routing each to an owner, running follow-ups, triggering the work a stage promises, handing a won deal to delivery and the accounts, and keeping data clean enough to report on. The parts to keep away from automation are deciding who a customer is without a stored key, re-sending without checking what was sent, and anything about money without a record of it.
Lead capture with a duplicate check, then routing with a fallback for leads that fit no rule. Those two decide whether the rest of the CRM can be trusted, and they are cheap to get right. After that, the won-deal handoff, because it is where data is most often re-keyed. Sequences and reporting come later. Both depend on records the first three have kept clean.
Yes, all four, and custom CRMs. Most of our published CRM automation is Make work around a monday.com CRM, and we have also built on HubSpot, Airtable and Zapier. We are not a partner of HubSpot, monday.com, Airtable or Pipedrive, and hold no certification from any of them. We are an independent studio and recommend whatever fits.
At the door, not with a cleanup. Every inbound route searches on a normalised email or phone number before it creates anything, and turns a match into a note on the existing record. Near-misses go to a person. Each CRM defines a duplicate differently: HubSpot dedupes contacts by email automatically, Airtable has no unique field, and monday CRM and Pipedrive have merge tools you run after the fact. Merge existing duplicates only once the inbound routes are fixed.
Yes. We have built it from a monday.com CRM into Xero, where a status change raises an authorised invoice, emails it and writes the number back to the CRM. The rules that matter are to match the customer on a stored ID rather than a name, check for an existing invoice number before creating, and build lines from the CRM's products. Chasing payment is a separate job, covered on our accounts receivable automation page.
The CRM's own for anything that stays inside it: assignment, status moves, internal notifications, marketing email. Those are maintained by the people who run the CRM. Use Make, Zapier, n8n or code for anything that crosses into another system, because that is where you need retries, error routes and a log of what was written. Our comparison of Make, Zapier and n8n helps with that second choice.
Both, where implementation means designing the record structure the automation relies on: what a lead, deal or item is, which fields exist and which are fixed lists, what each stage requires, and moving the old data across with importers that can be re-run safely. We do not resell licences or run sales training. For a HubSpot set-up specifically, our HubSpot page covers the property and workflow architecture.
When the automation is propping up the wrong shape. Signs include working on a record that is not a deal, one sale having to open several pieces of work, rules that can only be reminded about rather than enforced, or a customer re-keyed across several tools. For a standard pipeline with a small team, keep the CRM and automate it. A custom build is a system somebody has to own.
Most of our projects land between $5,000 and $10,000 (US dollars), and larger systems cost more. That is a typical range, not a quote: we quote after a discovery conversation. What moves it is the number of lead channels, the state of the existing data, how many systems the won-deal handoff reaches, and whether the rules are already written down.
Sources
Statements about what a platform, regulator or provider says come from their own pages. Rules and limits change, so check the current page before you rely on one.
- Deduplicate records in HubSpot · HubSpot Knowledge Base
- Add re-enrollment triggers to a workflow · HubSpot Knowledge Base
- Status column · monday.com API reference
- Manage duplicates · monday.com Support
- Update multiple records · Airtable Web API
- How does the Merge Duplicates feature identify duplicates in Pipedrive? · Pipedrive Knowledge Base
- Automations: conditions · Pipedrive Knowledge Base
- Accounting API Contacts · Xero Developer
- Idempotent requests · Xero Developer
- 6240 - Duplicate Name Exists Error · Intuit Developer
Page copy drafted with AI assistance. Skofi is accountable for it. Editorial policy
Tell us about the process that keeps costing you.
A 15-minute call is usually enough to say whether this is an automation, an integration, or something that should be built, and whether we are the right people for it.
What happens on the call
- 15 minutes, no deck
- We map the process on the call
- A written scope, or an honest no