Skip to main content
← All writing

Automation and integrations

Your website captured the lead. Who is actually following up?

How I trace one request from the customer’s first message to the person who owns it, and what I measure before crediting automation with revenue.

I care about what happens after someone presses Submit. The form can look great. The confirmation email can arrive immediately. Your analytics can count another conversion, but if the request lands in an inbox that nobody owns, the customer is still waiting.

That is where I would start before recommending more traffic or a new AI assistant. I want to know whether the business can reliably handle the interest it already receives.

For CodeAspen, this is a useful way to scope the work: follow a request from the customer’s first message to the point where somebody takes responsibility for it. Then fix the part that breaks.

Show me the request that went nowhere

A description of how the process is supposed to work only gets us so far. I would rather look at a few actual requests with the person who handles them.

Give me one that became a booked job, one that needed several callbacks, and one that never received an answer. Include a duplicate and an inquiry the business could not serve. Those records tell us where the rules, data, and ownership are unclear.

Take a hypothetical HVAC company with two branches. It has a central number, an estimate form, a CRM, and scheduling software. Each tool does its own job. After-hours calls become voicemails. Form submissions become emails. Branch managers check different places for new work.

The problem might be slow response. It might also be that nobody knows which branch owns a request. Or that the company is booking work it does not have the capacity to deliver.

I would not prescribe the same fix for all three.

Before building anything, I want answers to five questions:

  1. Where is the request first saved?
  2. What information is needed to decide whether we can help?
  3. Who owns the next action?
  4. Which system can confirm an appointment?
  5. Where do we record what eventually happened?

If two departments give different answers, we have found work that software alone will not settle.

Ownership of the record has to be unambiguous

A customer can call, submit a form, and send a text about the same job. That should not automatically create three sales opportunities or three people calling them back.

At the same time, a returning customer can have a genuinely new request. Matching every message with the same phone number is too crude.

I would give each request a stable identifier, keep the original channel and arrival time, and link related conversations without throwing away their history. The CRM might own assignment and disposition while the scheduling platform owns appointment availability.

That division needs to be explicit. Otherwise, the website can say an appointment exists while the scheduler disagrees.

The initial record does not need to be elaborate. Contact information, service address, request type, owner, current status, and next action are a sensible starting point. Every extra field should earn its place by helping someone make a decision.

AI can handle the language. The business rules need to hold.

A customer will not always describe a problem in the terms your CRM expects. A model can help interpret a free-text message or collect information during a call.

But service areas, opening hours, appointment eligibility, and prices should come from controlled business data. I do not want a model improvising them because a conversation sounds straightforward.

For the two-branch example, I would start with one complete path: receive the request, save it, check the required details, assign the right branch, and either book through the existing scheduler or put the request in a staffed queue.

That last option matters. Some requests will be unclear. Some integrations will fail. A person needs enough context to finish the job without repeating the entire conversation.

“Call this customer” is a weak handoff. “The address is in our service area, but the calendar lookup failed and no appointment is confirmed” tells the next person what to do.

Figure 1. A proposed intake flow. Requests are saved before routing, and exceptions have an owner; receiving an inquiry and confirming an appointment are separate events.

The awkward integration cases are part of the scope

Suppose the calendar accepts a booking, but the connection drops before our application receives confirmation.

Did the booking fail? We do not know yet.

If we retry immediately, we might book twice. If we tell the customer it succeeded, we might promise an appointment that does not exist.

I would use the provider’s supported duplicate-prevention mechanism where available and reconcile an uncertain result against its records. If that cannot be resolved automatically, the customer should hear that confirmation is pending, and a named person should get the exception.

This is the kind of detail I want in a delivery plan. The same goes for expired credentials, repeated webhook events, an unavailable CRM, and a full calendar.

For each failure, we should know where the request remains saved, what the customer sees, who is alerted, and how the task gets finished. An alert that says “API error” is not enough for an office manager trying to look after a customer.

Figure 2. A timeout leaves the outcome uncertain. Reconcile before retrying, using the scheduling provider’s supported lookup and duplicate-prevention behavior.

I would measure ownership before claiming revenue

An automated acknowledgment does not prove that a lead received useful attention. A booking does not prove that the appointment happened. And a booking touched by automation is not automatically a booking the business would otherwise have lost.

I would keep the reporting simple and precise:

MeasureWhat I want it to tell us
Time to meaningful responseHow long the customer waited for a useful next step
Requests with an ownerWhether responsibility was actually assigned
Eligible requests bookedWhether suitable inquiries reached the calendar
Booked appointments completedWhether the booking became delivered work
Unresolved requests by ageWhat is still waiting and why

Automated acknowledgments should have their own timestamp. Tests and spam should be excluded consistently. Cancellations and no-shows should remain visible.

If we discuss financial results, I want to distinguish booked value, collected revenue, and the costs of delivering the work. Advertising changes, seasonality, and staffing can also affect the numbers. A phased rollout can help us make a better comparison, but I would still explain its limitations.

I would rather publish a modest result supported by records than a large number built on assumptions.

Start with one branch or one part of the day

A pilot does not need every channel connected at once. After-hours intake for one branch can be a useful first scope, provided it includes the whole journey and a manual fallback.

Before launch, test the difficult cases: a duplicate customer, an unsupported address, a full calendar, an interrupted booking, and a request that needs a human. Agree on who watches the queue and who can disable the workflow if it misbehaves.

Then watch staff use it. If every exception requires the developer to explain the dashboard, the handoff is unfinished.

There are also businesses where a smaller fix is enough. Low inquiry volume might justify a better form and a reminder rule. A company already at capacity may need scheduling discipline before more demand. An unsupported calendar integration may mean staff-assisted booking is the right first release.

The starting point is the same: bring a few real inquiries and the people responsible for them. Before I recommend what to build, I want to see where the next step stopped happening.

Daniyal Nathani, founder of CodeAspen

Daniyal Nathani · Founder, CodeAspen

More about the studio

Have a version of this problem?

A 20-minute scoping call: what you have, what is breaking, and whether a fixed-scope build is worth doing.

Reply within one business day · Houston, Texas