ContactShip
Voice & TelephonyPlace and track outbound AI phone calls with ContactShip agents, and manage the contacts, tags, and phone numbers behind them. Agents run calling programs and read outcomes back into the pipeline.
What This Integration Enables
Plenty of platforms will place an AI phone call for you. ContactShip carries the apparatus around it: a contact book with typed custom fields the agent can reference mid-conversation, tags for segmentation, comments for logging what happened, per-contact call history, and scheduling by explicit date, time and timezone. That combination makes it a calling program rather than a calling primitive, and it is the reason a flow can hand it a segment and a window instead of a single number.
FlowRunner agents work the whole loop. They stage a segment with Create Contact and Add Tag To Contact, check the balance with Get Credits before committing to a batch, place calls either at a raw number with Make AI Phone Call or against an existing record with Call Contact so the agent has the contact's profile data to work with, and read results back with Get Call, which returns status, result, duration, recording URL, AI analysis and the transcript. On the return leg the On New Call trigger fires for each newly seen call so the pipeline updates as calls land rather than in a nightly sweep. Agent configuration is addressable too, so a prompt revision is a versioned change a flow can make and reverse rather than a dashboard edit nobody logged. The one thing the agent will not do unsupervised is start the dialling.
Without FlowRunner
With FlowRunner
Use Case Scenarios
A scheduled batch that respects the clock
A renewals segment goes ready in the CRM on a Friday for calling the following Tuesday. The agent stages the contacts, tags them with the campaign, and runs Get Credits to confirm the balance covers the batch before anything is scheduled. It then resolves each contact's timezone and uses ContactShip's explicit date, time and timezone scheduling to place every call inside that contact's local business hours rather than the campaign owner's. Contacts whose local window falls outside the permitted range are held back and reported rather than dialled at a defensible-looking hour that is actually 7am for them. The full plan goes to the campaign owner before the first call is scheduled.
Call outcomes back onto the pipeline as they land
On New Call fires for each newly seen call. The agent runs Get Call for the full record, reads the result and the AI analysis, and decides where the call belongs. A confirmed renewal updates the deal in HubSpot and closes the task. A request for a callback creates one with the requested time. An outright no writes the reason and removes the campaign tag with Remove Tag From Contact so the contact is not swept into the next batch. Every one of those also gets an Add Contact Comment on the ContactShip record, so the next person who opens that contact sees the same history the CRM has. Where the analysis is ambiguous, the call is routed to a person as an automation exception rather than guessed at.
Changing the script without betting the list on it
A campaign owner wants a different opening. The agent runs Get Agent to capture the current configuration, applies the revision with Update Agent, and then does something a dashboard edit cannot: it runs the new configuration against a small pilot list first, waits for those calls to complete, and compares the results and analysis to the previous batch. The comparison goes back to the owner with the two prompts side by side. If the revision underperforms, the agent restores the captured configuration with Update Agent. The full list is never the test.
Human-in-Loop Highlight
Scheduling is what makes this connector's gate specific. A ContactShip call placed with an explicit date, time and timezone is not a message that waits in an inbox. It rings a real person's phone at that local hour, and once the dialler fires there is no version of the workflow that takes it back. An agent that has staged a batch therefore stops at the schedule, not at the send. It posts the complete plan to the campaign owner: the agent and its current prompt, the number the call presents, the contact count, the count it held back for falling outside local calling hours, and the exact window in local time for each timezone in the list. Then it asks, "Batch of 340 renewal calls ready. 22 contacts held back for out-of-hours local time. Calling Tuesday 09:00 to 16:00 in each contact's own timezone, from the number ending 7781. Approve to schedule?" Nothing is scheduled until the answer comes back. The agent did the timezone arithmetic, the credit check and the suppression work. The person owns the decision to ring 340 phones.
Agent Capabilities
26 actionsCalls
4- Make AI Phone Call Places an outbound call to a raw number using a selected AI agent, with the destination, caller ID and callee name supplied directly and no contact record required. Supports scheduling by delay in minutes or by explicit date, time and timezone, plus key and value context passed to the agent.
- Call Contact Places an outbound call to an existing contact using a selected AI agent, reading the number and profile data from the contact record. Used when the call should draw on stored custom fields, so the conversation starts with context.
- List Calls Returns a paginated call list with a total count, filterable by date range, status, result, agent, campaign and phone number. Transcripts are opt-in, which keeps large result sets small.
- Get Call Returns the full record of one call including status, result, duration, recording URL and AI call analysis, with the transcript as a JSON array or a token-efficient TOON string. Used to write outcomes back to the pipeline.
Account
1- Get Credits Returns the calling credits currently available on the organization. Run before a batch is proposed so the plan is checked against real balance rather than optimism.
Agents
5- List Agents Returns every AI phone agent the key can reach, with voice, language, prompt, conversation purpose and post-call analysis configuration. Used to pick the right agent for a campaign.
- Get Agent Returns the full configuration of one agent including prompt, voice settings, ambient sound, tools and post-call analysis fields. Used to capture a known-good configuration before changing it.
- Create Agent Creates a new AI phone agent with a name, voice and timezone, optionally setting the name it uses on calls, its speech language, ambient sound, interruption sensitivity and a webhook URL for call events.
- Update Agent Updates an existing agent, changing only the fields supplied. Used to revise a prompt or voice characteristics, and to restore a previous configuration when a revision underperforms.
- Delete Agent Permanently deletes an AI phone agent. Calls it already placed remain in call history.
Contacts
8- List Contacts Returns the organization's contacts with phone number, country, email, notes, tags and typed custom data, narrowable by name, email or phone number.
- Create Contact Adds a contact with a number and full name, plus optional country, email and notes. Additional data entries attach typed custom fields the agent can reference during the call.
- Get Contact Returns one contact looked up by UUID, phone number or email address, with the identifier type stated. Used to resolve an inbound signal to a known record.
- Update Contact Updates an existing contact, changing only the fields supplied. Used to revise a number, email or typed custom data without resending the full record.
- Delete Contact Deletes a contact from the organization.
- Get Contact Call History Returns a contact with every call placed to or received from them, including attempt counts, durations, recording URLs and transcripts, filterable by date range, direction and status. Used to check how many times someone has already been reached before another attempt is scheduled.
- List Contact Comments Returns every comment recorded against a contact with author and timestamps.
- Add Contact Comment Adds a comment to a contact and returns it with author and timestamp. Used to log the outcome and any follow-up instruction alongside the record.
Tags
7- List Tags Returns the organization's contact tags with names, labels and colors, with pagination and filtering.
- Create Tag Creates a tag for segmenting contacts, with a hexadecimal color used to render it in the dashboard.
- Update Tag Updates a tag's name, label or color. Contacts already carrying it keep it.
- Delete Tag Permanently deletes a tag and removes it from every contact it was assigned to.
- List Contact Tags Returns every tag currently assigned to one contact.
- Add Tag To Contact Assigns an existing tag to a contact. Used to stage a segment for a campaign.
- Remove Tag From Contact Removes a tag assignment while leaving the tag available for other contacts. Used to take a contact out of a campaign after a decisive outcome.
Phone Numbers
1- List Phone Numbers Returns the numbers registered to the organization. The record IDs are used as the From Number for Call Contact, and the numbers themselves as the From Number for Make AI Phone Call.
Triggers
1 triggersEvent Triggers
1- On New Call Polls the organization's call list and fires for each newly seen call, optionally filtered by agent, status, result or phone number. The first poll sets a baseline so historic calls are never replayed, and later polls emit unseen calls oldest first, deduplicated by call ID. Used to update the pipeline as calls land rather than in a nightly sweep, and to route ambiguous outcomes to a person while the conversation is still recent.
Frequently Asked Questions
What can FlowRunner do with ContactShip?
FlowRunner agents can run Make AI Phone Call, Call Contact, and List Calls in ContactShip, plus 23 more actions.
Does connecting ContactShip to FlowRunner require OAuth?
No. ContactShip connects to FlowRunner with an API key, no OAuth flow required.
Can ContactShip trigger a FlowRunner workflow automatically?
Yes. ContactShip supports 1 trigger that can start a FlowRunner workflow automatically.
Start building with ContactShip
$100 in credits. No card required. Connect in minutes.