Guides
Build a Thoughtly workflow that calls new shipper quote requests, confirms lane details, routes qualified opportunities, and writes outcomes back to your CRM or TMS.
Last updated
Freight quote requestQuote requestA quote request is an inbound inquiry asking for pricing, coverage, or a cost estimate for a product or service. follow-up should begin when a first-party shipper asks for a quote, not when a rep finally clears an inbox. With Thoughtly, a brokerage can triggerTriggerA trigger is an event or condition that starts, resumes, changes, or stops an automated workflow. a consent-backed voice call from a form, CRMCRMA CRM is the system used to manage leads, contacts, accounts, opportunities, activity, ownership, and follow-up. event, or webhookWebhookA webhook sends event data from one system to another through an HTTP request when a defined event occurs., confirm the lane and timing, continue by SMS or email, and hand a qualified opportunity to a human broker with context. The agent should not invent a price, promise capacity, or select a carrierCarrierA carrier is a telecommunications provider that transports voice calls or messages between phone numbers and networks.. Those decisions belong to live systems and accountable people.
This guide shows the implementation after you have chosen Thoughtly. For the earlier platform decision, use the buyer guide to AI voiceAI voiceAn AI voice is synthetic speech produced by a text-to-speech model, using a selected or cloned voice to speak an agent's generated or scripted response. agents for freight brokers. The distinction matters: a comparison page helps you choose a product; this page defines the event, data, conversation, handoff, and record changes that make one shipper workflowWorkflowA workflow is a defined sequence of steps, decisions, actions, delays, and outcomes used to complete a business process. production-ready.
A generic form callback asks whether a lead is interested. A freight callback must also preserve the difference between a shipper sales opportunity and a carrier operations interaction, attach the right shipment context, and stop before a commercial commitment. That is enough domain logic to justify a dedicated workflow, but not enough to justify pretending the voice agentVoice agentA voice agent is a conversational software system that listens, responds, follows a defined workflow, and can take approved actions during a phone conversation. is a freight expert with independent authority.
Thoughtly already supports the horizontal mechanics: Automations connect triggers to calls, messages, conditions, and external actions, while the Agent Builder handles conversation nodes, variables, outcomes, actions, transfers, and testing. The brokerage supplies the operating policy: which inquiry is eligible, which shipment fields matter, what counts as qualified, and when a broker must take over.
If your only problem is getting any web form to launch a call, the existing form-fill follow-upForm-fill follow-upForm-fill follow-up begins when someone submits a web form, quote request, application, contact request, or demo request. implementation guide already owns that setup. The freight-specific job begins after the event arrives: separating contact and load data, collecting a broker-ready minimum, preventing unsupported quotes, and producing a record the sales desk can act on.
The cleanest design has one initiating event and one accountable business result. Adding carrier procurement, check calls, claims, and track-and-trace to the same first pilot creates more failure paths than learning.
| Stage | System action | Required output | Human boundary |
|---|---|---|---|
| 1. Inquiry received | CRM, form, or webhook sends a unique event | Contact, permission source, inquiry ID, submitted fields | Reject stale, duplicate, or ineligible events |
| 2. Contact prepared | Create or update the Thoughtly Contact | Stable contact ID and limited persistent attributes | Do not overwrite unrelated contact history |
| 3. Eligibility checked | Conditions validate permission, phone, ownership, and timing | Eligible or stopped disposition | Suppression and policy failures never reach the call step |
| 4. Call placed | Thoughtly calls the Contact with request metadata | Right person, active need, lane and timing confirmed | No rate, capacity, contract, or carrier promise |
| 5. Opportunity routed | Transfer, task, or scheduled next step | Broker receives structured context | A person owns exceptions and commercial judgment |
| 6. Result written back | On Call Completed updates CRM, TMS, or middleware | Controlled disposition, fields, owner, next action | Failed writes create a visible exception |
| 7. Follow-up continued | Permitted SMS or email handles non-connects and recaps | Reply, scheduled callback, or clean closure | Stop requests suppress future contact |
The trigger should describe a real business event, not merely a row appearing somewhere. Name it narrowly, such as new_shipper_quote_request, shipper_event_follow_up, or known_account_lane_inquiry. The narrower name forces the team to decide what is in scope before the automation starts spending attention and call attempts.
A practical eligible population is a person who submitted a brokerage quote form, asked for a callback, engaged at an event and agreed to follow-up, or already exists as an active account contact with an approved reason to call. The FCC ruling on AI-generated voices confirms that AI-generated voice calls fall within the TCPATCPAThe TCPA is a US federal law governing certain calls and text messages, including restrictions tied to technology, consent, revocation, identification, and do-not-call protections. rules for artificial or prerecorded voice calls and discusses consent, identification, and opt-outOpt-outAn opt-out is a person’s request to stop receiving a particular category of calls, texts, emails, or other communications. duties. Counsel should map those rules and any state requirements to the actual call population before launch.
For a first deployment, the agent may confirm shipment facts, identify urgency, answer approved brokerage FAQs, offer a broker conversation, transfer the call, and record the result. It should not state a freight rate, guarantee equipment, accept a tender, select a carrier, modify a contract, or resolve a claim unless a deterministic tool and approved operating policy explicitly support that action.
Freight identity problems deserve a separate hard stop. FMCSA fraud guidance tells brokers and carriers to verify phone information through SAFER and stop suspicious transactions. The useful voice workflow records uncertainty and routes it. It does not turn a plausible conversation into proof of identity.
Use a native CRM or form trigger when the source event already exists there. Thoughtly currently documents new-contact triggers for HubSpot, GoHighLevel, Keap, Salesforce, and Zoho CRM, plus Typeform responses and SmartSheet row events. For a TMS, custom form, or middleware event, use an Incoming Webhook. The current trigger reference shows how each trigger exposes a sample Output schema for field mapping and explicitly recommends idempotency for retried webhooks.
A minimal event should include event_id, inquiry_id, source, submitted_at, contact identity, channel permissions, and the shipment fields already supplied. Send only what the workflow needs. A payload stuffed with an entire account or load record makes mapping brittle and expands the data exposed to the conversation layer for no useful reason.
When the source can only send HTTP, Thoughtly documents an automation webhook endpoint that accepts an arbitrary JSON object. Run a representative event in Draft mode, refresh the trigger Output, and map from the observed schema. Do not type field paths from memory and hope the live payload agrees.
Make the downstream workflow idempotent too. Before Call Contact, look up the inquiry ID or event ID in your CRM, TMS, or middleware. If the event is already processing or complete, write duplicate_ignored and end. An inbound integration that retries is behaving normally; two simultaneous calls are your implementation defect.
Call a Thoughtly Contact rather than a raw phone number when you need durable history and reusable traits. The Automation Actions reference documents Create or Update Contact, Get Contact by Phone Number, Add Attributes to Contact, and Call Contact. That sequence gives the workflow a stable contact_id before the call starts.
Thoughtly distinguishes persistent Contact Attributes from per-call Metadata. According to the Attributes versus Metadata guide, attributes stay on the Contact across future interactions, while metadata carries context for one call. That distinction is especially useful in freight: the person and account may persist, but today's shipment does not.
Do not flatten every lane into the Contact record. That creates a confident agent with yesterday's freight facts, which is a particularly expensive kind of personalization.
Thoughtly's Agent Builder overview recommends starting with a simple node flow, adding variables and outcomes, using Actions for external work, then testing in text and live voice. Follow that order. A compact flow is easier to audit than a single heroic prompt expected to infer policy, collect data, and make decisions at once.
The first node should identify the brokerage and explain that the call follows the shipper's request. Confirm the correct person before revealing shipment details. Offer a clear path to a person and honor any request to stop. Exact disclosures and must-say language belong in a fixed Message node, not a generative instruction.
Ask only for fields the broker needs to decide the next action. A sensible minimum is current need versus future planning, origin and destination, equipment type, pickup window, approximate shipment cadenceCadenceA cadence is a planned sequence of calls, texts, emails, delays, and retries used to follow up until a lead responds, books, opts out, or becomes inactive., and whether the contact wants to speak now or schedule a follow-up. Repeat back critical lane and date information rather than silently trusting extraction.
Create narrow variables such as active_shipment, lane_origin, lane_destination, equipment_type, pickup_window, shipment_cadence, wants_broker_now, callback_time, and stop_requested. The Variables documentation explains that variables are extracted before outcomes evaluate, can be typed as text, number, or boolean, and should include explicit instructions plus missing-value handling.
Use prompt-based outcomes to interpret open-ended intent, such as active load, future planning, needs information, or not a shipper. Use rule-based outcomes for exact conditions, such as stop_requested equals true, crm_lookup_found equals false, required fields missing, or broker_available equals false. Thoughtly's Outcomes guide recommends deterministic rules for critical logic and a final Else path. That is the correct design here: natural language may classify the request, but policy decides whether the workflow can act.
A qualified shipper call is valuable only if the next person receives it with enough context to continue. Decide the transfer destination, availability signal, timeout, fallbackFallbackA fallback is a safe alternate path used when input is unexpected, a tool fails, or the agent cannot complete the intended step confidently., and record owner before launch. "Transfer to sales" is not an operating design.
Thoughtly supports mid-call integrations and action results that can update variables for immediate routing, as described in the Agent Actions reference. For the human side of the pattern, the existing guide to routing high-intent leads with early call summaries covers the handoff contract in more depth.
Use Thoughtly's On Call Completed trigger for the post-call workflow. The current trigger documentation says it exposes call outcomes, captured variables, transfer flags, voicemail detectionVoicemail detectionVoicemail detection identifies whether an outbound call reached a live person or an answering system, then selects the appropriate next action., and other call data for CRM updatesCRM updatesCRM updates are changes written after or during a conversation, such as status, notes, owner, next step, appointment, or disposition., notifications, and analytics. Send Webhook is appropriate when your TMS or middleware needs the result.
Keep the disposition set small enough that a revenue team can define each value without debate. Store the transcriptTranscriptA transcript is the written record generated from a spoken conversation, typically showing what the caller and agent said during a call. and summary as supporting evidence, but let a structured status drive ownership, follow-up, and reporting.
| Disposition | Required write-back | Next action |
|---|---|---|
| qualified_quote_request | Confirmed request fields, owner, timestamp, inquiry ID | Transfer completed or broker task due |
| planning_future_shipment | Expected window, cadence, permission, next contact date | Enter approved nurture path |
| broker_callback_requested | Requested time, timezone, owner, unanswered question | Schedule or create task |
| needs_manual_review | Reason code and available evidence | Route to freight operations or sales manager |
| not_shipper_or_wrong_contact | Reason and corrected contact data if supplied | Close or repair record |
| no_answer_or_voicemail | Attempt number, timestamp, channel permissions | Start permitted fallback |
| stop_requested | Suppression timestamp, source channel, audit note | End every automated follow-up |
| duplicate_or_stale_event | Original event reference and reason | No call or message |
Thoughtly's webhook integration guidance recommends On Call Completed for post-call workflows and Send Webhook when results must reach an external system. The external endpoint should accept retries and return a visible failure state. A silent 200 followed by a dropped TMS update is not integration success.
A no-answer should not restart the whole decision treeDecision treeA decision tree is a branching structure that selects the next conversation step from answers, rules, data, or events.. Use the same inquiry ID and attempt state across channels so a reply, stop request, or completed broker conversation closes every remaining step.
Thoughtly Automations can place calls, send SMS, send email, apply Conditions, and update connected systems. The existing multi-channel follow-upMulti-channel follow-upMulti-channel follow-up uses more than one communication channel, commonly voice, SMS, and email, after a prospect raises their hand. guide explains the horizontal sequencing pattern. For freight quote requests, keep the message specific: identify the brokerage, refer to the request without exposing sensitive detail, offer one clear next step, and preserve the channel permissions captured at submission.
A useful fallback may send one concise SMS after a missed call, offer a broker callback link, or email a request recap for confirmation. The sequence should stop when the contact replies, transfers successfully, books a time, asks not to be contacted, or the inquiry becomes stale. More attempts are not automatically more coverage; sometimes they are merely more evidence that the state machine is asleep.
Test each node in text first, then use live calls to check speech, latencyLatencyLatency is the elapsed time between a caller's speech and the agent's response, including listening, processing, tool, network, and speech-generation delays., transfers, and external actions. Thoughtly's agent testing guide treats text simulation and live voice tests as separate stages. Both matter because a logical branch can work perfectly while the actual transfer, pronunciation, or webhook fails.
For the first live cohort, review every unsuccessful transfer and every needs_manual_review result. The workflow is ready to scale only when failures leave an accurate record and a named owner, not when the demo path sounds polished.
Use the business state after the conversation as the primary measure. A fast call that produces an incomplete or ownerless record is not a revenue win. Compare the automated cohort with the brokerage's prior process or a concurrent holdout, and keep source, account segment, lane type, and contact window visible so the result is interpretable.
Do not invent an industry benchmark to make the pilot look scientific. Establish your baseline, define the attribution window, and keep operational diagnostics separate from commercial outcomes. Thoughtly's guide to measuring conversion lift from AI follow-up gives a broader holdout and reporting framework.
A two-week pilot is long enough to observe real edge cases and short enough to keep scope disciplined. The goal is not to declare victory after an arbitrary number of calls. It is to decide, with auditable evidence, whether the workflow can move one shipper state safely and consistently.
Webhook delivery can repeat. Without event-level idempotency, the workflow can call the same shipper twice, assign competing tasks, and make a healthy integration look broken to the buyer.
Lane and pickup details belong to an inquiry or call unless they are genuinely stable account facts. Reusing stale context is worse than asking a concise confirmation question.
A document library can answer approved process questions. It should not substitute for current pricing, equipment, carrier, or availability data. Use a live deterministic lookup or transfer the question.
Prompts are useful for interpreting language. Rules and authoritative actions should enforce stop requests, required fields, lookup failures, permission, and the boundary before any commitment.
The next broker needs an owner, disposition, confirmed facts, unresolved question, and due action. Making a person reread the whole conversation recreates the manual backlog with nicer audio.
Volume magnifies unowned failures. Name who receives failed transfers, suspicious identities, missing records, and write-back errors before the first production call.
Thoughtly publicly documents REST APIs, incoming and outgoing webhooks, middleware paths, and broad CRM and automation integrations, but it does not currently publish a named freight-TMS integration package. Treat connection as a proof requirement: demonstrate the exact lookup, object update, error path, and retry behavior in your stack before launch.
Start with the minimum a broker needs to choose the next action: active need or planning, origin, destination, equipment type, pickup window, approximate cadence, and preferred next step. Confirm critical lane and date details aloud, preserve the source inquiry ID, and avoid collecting fields that the downstream owner will not use.
Not from a prompt or static knowledge baseKnowledge baseA knowledge base is a maintained collection of approved business information that an agent can use to answer questions.. A rate response requires current authoritative data, explicit policy, permissions, auditability, and a human exception path. The safer first use case is to qualify the request and connect the shipper with the broker who owns the commercial decision.
Thoughtly provides general voice, automation, webhook, and integration building blocks, so a team can design other workflows. Carrier sales and operations add live load data, identity checks, rate controls, TMS actions, and exception logic. Build and validate that as a separate program rather than slipping it into the shipper-sales pilot.
Start as soon as the event is eligible under your permission, suppression, ownership, and contact-window rules. Thoughtly Automations can react to CRM, form, or webhook events in real time, but the correct operating target should come from your own baseline and staffing model rather than an invented universal number.
Use the furthest reliable business outcome the pilot can attribute, such as qualified quote requests, completed broker conversations, loads booked, or gross margin. Pair it with exception and data-quality measures so the team does not improve the headline result by hiding failed writes, duplicates, or risky handoffs.
Thoughtly is a strong fit for freight quote request follow-up when the job is to respond to known shipper demand, carry the conversation across permitted channels, and move a qualified opportunity to a person. Its value is not autonomous freight judgment. It is reliable coverage around a policy your brokerage already owns.
Begin with one event, one controlled disposition set, and one accountable handoff. Use Thoughtly Automations for the trigger and write-back, the Agent Builder for the conversation and routing, and live system data for facts that can change. When every failure leaves the next person with accurate context, you have an implementation worth scaling.