SendX
Email MarketingSendX is an email marketing and automation platform. Agents manage contacts, lists, tags and custom fields, build and report on campaigns, send transactional email, record behavioral and revenue events, and register webhooks.
What This Integration Enables
SendX is unusual for the company it keeps on one credential. Alongside the parts you expect from an email platform, contacts, lists, tags, custom fields, campaigns, templates, senders and verified sending domains, it carries a hosted blog with its own posts, categories and tags. Those post tags are a genuinely separate vocabulary from contact tags and cannot be used interchangeably. The practical effect is that the content that grows an audience and the mail that goes to that audience are addressable from the same flow, which is how most small marketing teams actually work even when their tooling pretends otherwise.
The behavioral side is the other half. Track Custom Event and Track Revenue Event feed the segments and automations that decide who gets what, and a contact's lifetime value is reported in cents, which is exactly the kind of unit mismatch that silently ruins a threshold. FlowRunner agents handle the mechanical care this API rewards: prefixed identifiers where the prefix is part of the value, custom fields keyed by field ID rather than by name, an unknown list ID that fails loudly against an unknown tag ID that fails silently, and routes that require fields they are not changing. Getting all of that right every time is what connectors are for. Deciding what to send is not.
Without FlowRunner
With FlowRunner
Use Case Scenarios
-
A signup path that cannot fail on a duplicate
A visitor signs up through a form or a checkout in Stripe. The agent calls Identify Contact rather than Create Contact, because Create Contact fails outright when the address is already known and a returning customer is not an error. Lists and tags are applied in the same call, with the tag IDs resolved first through List Tags, since a mistyped tag ID is silently ignored and produces a saved contact quietly missing its tag. A revenue event is recorded with Track Revenue Event so the buyer's lifetime value stays current, read as cents rather than currency units.
-
Behavior from the product, segments in the platform
Product events land in Segment or arrive directly from the application. The agent maps the ones that matter, first workspace created, integration connected, seat added, and records each with Track Custom Event against the contact, by ID where it has one and by address where it does not. Those events are what the automations and behavioral segments read, so a product milestone changes what somebody receives without a marketer editing a list. A weekly rollup of which events fired posts to Slack so the team can see whether the instrumentation still matches the product.
-
Publishing the post and the announcement from one flow
A draft is finished in the content system. The agent creates the post with Create Blog Post, files it with Create Post Category if the category is new, and applies post tags. The post stays a draft until the published switch is turned on through Update Blog Post, which is the same route used for edits, so publishing and revising are the same call with a different flag. Once it is live, the agent builds the announcement with Create Campaign, assembling the audience from lists, tags and segments with the excluded sets subtracted, and the related landing page in Webflow is updated in the same run.
Human-in-Loop Highlight
Both of SendX's send routes answer with a queued acceptance rather than a delivery, and the vendor is direct about what that means: the request is validated synchronously, then rendered and sent by a worker. Personalization is not validated by the API at all. So a placeholder that fails to resolve does not appear in the response, in an error, or in any log the agent can read. It appears in the delivered message, in front of a customer, as an empty gap or a raw field name. The API's success signal is silent about the one failure mode that reaches people.
That is why the gate sits before the first live run of any template rather than after it. The agent does everything it can prove: it pulls the template with Get Email Template, extracts its placeholders, reads the account's field definitions with List Custom Fields, and diffs the two. Then it posts: "Template 'Order shipped' references five placeholders. Four map to defined custom fields. The fifth, carrier_tracking_url, matches no field on this account and will render empty for all 1,840 recipients. The send route reports queued and will not report this. Proceed, or hold until the field exists?" A person answers. After that first confirmation the template runs on its own. The check exists because the only instrument that can see this failure is somebody's inbox, and FlowRunner would rather put the question in front of a person than let the inbox be the test.
Agent Capabilities
66 actionsContacts
11- Create Contact Adds a contact to the team. The email is mandatory and must be unique within the team, so this fails on a duplicate. An unknown list ID fails the whole call while an unknown tag ID is silently ignored, so a mistyped tag produces a saved contact quietly missing its tag. Custom fields are keyed by custom field ID rather than by field name.
- List Contacts Returns a page of the team's contacts with their lists, tags and custom field values. Search matches on first name, last name and email, case insensitively, and paging is by offset and limit with the vendor capping the page size.
- Get Contact Reads one contact, by its prefixed ID or by its email address, whichever the flow has. Returns the full profile: lists, tags, custom field values, and the engagement flags for unsubscribed, bounced, spam, blocked and dropped.
- Update Contact Updates a contact, addressed by ID or by email. The vendor marks the email as required on this route even though the update is otherwise partial, so an update changing only a name must still carry the address. Lists and tags replace the stored sets rather than adding to them.
- Delete Contact Deletes a contact from the team. This is a soft delete: the vendor removes the contact from every list and cancels its pending campaigns while preserving the historical record, so reporting on past sends is unaffected.
- Unsubscribe Contact Unsubscribes a contact from all marketing communication and removes it from active campaigns, keeping the record and its unsubscribe history. This is the correct way to stop mailing someone, because Delete Contact does not suppress the address against a later import.
- Identify Contact Creates a contact, or updates the existing one when the address is already known. This is the operation a signup flow wants, because Create Contact fails on a duplicate address. A new-email field changes the address of a contact found by its current one.
- Identify Contacts In Bulk Creates or updates up to twenty five contacts in one call, each entry following the same shape as Identify Contact. The vendor answers with a single status for the whole batch rather than a per contact result, so an individual entry's outcome is not reported.
- Track Contact Tags Adds and removes tags on a contact found by email, which is also how tag based automations are triggered. The vendor marks this route as legacy: prefer Update Contact or Identify Contact for new work and keep this for flows already built around it.
- Track Custom Event Records a named event against a contact, which is what automations and segments built on behavior read. The contact may be given by ID or by email, the data field carries whatever the event is about, and a time field lets you record something that happened earlier rather than now.
- Track Revenue Event Records revenue against a contact, feeding lifetime value and campaign attribution. Lifetime value is reported in cents elsewhere in the API, so read a returned value accordingly before comparing it against a threshold.
Transactional Email
2- Send Transactional Email Sends a transactional message with the body given inline. The response is a queued acceptance rather than a delivery: the vendor validates the request synchronously and then renders and sends it in a worker, so a rejected recipient or a broken placeholder does not appear here. Each recipient may carry its own custom fields for personalization, and custom headers are echoed back on the message's webhook events, which is how a send is correlated with your own records.
- Send Email With Template Sends a transactional message whose body comes from a saved template, with per recipient substitution. The subject overrides the template's own. Like the inline route this answers with a queued acceptance, and the vendor states that personalization runs in the worker and is not validated by the API, so an unresolved placeholder shows up in the delivered mail rather than in this response.
Lists
5- Create List Creates a contact list. A list may be single opt in, where a contact joins as soon as it is added, or double opt in, where the contact must confirm by email first, and the returned type reports which.
- List Lists Returns the team's contact lists. This route allows a higher page size than the contact and campaign listings, so a whole account's lists usually fit in one call.
- Get List Reads one contact list by its prefixed ID, including its opt in type.
- Update List Renames a contact list. The opt in type is fixed at creation and this route does not change it.
- Delete List Deletes a contact list. The contacts on it remain in the team and simply lose that membership.
Tags
5- Create Tag Creates a tag for categorizing contacts. The name must be unique within the team.
- List Tags Returns the team's tags, which are what the contact operations and campaign audiences reference by their prefixed IDs. Run this before applying tags, because a wrong tag ID fails silently.
- Get Tag Reads one tag by its prefixed ID.
- Update Tag Renames a tag. Contacts carrying it keep it, because the assignment is stored against the tag ID rather than its name.
- Delete Tag Deletes a tag, removing it from every contact that carried it.
Custom Fields
5- Create Custom Field Defines a custom field for storing extra contact data. The name must be unique within the team and the vendor requires a description. Text, number, date and boolean types are available, and the returned prefixed ID is the key a contact's custom fields object must use.
- List Custom Fields Returns the team's custom field definitions. Run this to learn the prefixed IDs a contact's custom fields object must be keyed by, and to check what a template's placeholders can actually resolve against.
- Get Custom Field Reads one custom field definition, including its data type.
- Update Custom Field Updates a custom field definition. The vendor requires name, type and description together on this route, so all three must be sent even when only one is changing.
- Delete Custom Field Deletes a custom field definition. Values already stored on contacts are preserved rather than removed, so this cleans up the field list without losing data, and recreating a field of the same name does not necessarily reconnect it to those values.
Campaigns
5- Create Campaign Creates an email campaign. Name, subject, sender and HTML are required, and the schedule type decides the rest: immediate sends on creation, while a later schedule requires the date and time to send at. The audience is assembled from lists, tags and segments with the excluded sets subtracted, and smart send lets the vendor pick the best moment per contact.
- List Campaigns Returns a page of the team's campaigns, optionally narrowed to drafts, scheduled campaigns or sent ones. Each carries a numeric status covering draft, scheduled, sending, sent, quarantined, evaluating and evaluation failed.
- Get Campaign Reads one campaign in full: its content, sender, schedule, audience and numeric status, plus a URL to the rendered screenshot the vendor generates.
- Delete Campaign Deletes a campaign. A campaign that has already been sent keeps its historical report, which is read separately.
- Get Campaign Report Reads a campaign's performance: how many contacts it was sent to, and how many opened, clicked, unsubscribed, bounced or marked it as spam, with a per link breakdown. Opens and clicks are reported twice over, once as a unique contact count and once as a total, so pick deliberately because a rate belongs over the unique count.
Senders and Domains
6- Create Sender Adds a sending identity. Creating it does not make it usable: the address has to be verified before a campaign or transactional send may use it, and the returned record reports that state.
- List Senders Returns the team's sending identities with their verification state. This is what to check first when a campaign or transactional send is refused for its sender.
- Create Domain Registers a sending domain and returns the DNS records to publish. Verification is not immediate, with a separate record and flag for DKIM, return path, tracking, DMARC and postmaster tools, and the overall verified flag only turns true once the underlying ones do.
- List Domains Returns the team's sending domains with their verification state and DNS configuration.
- Get Domain Reads one domain, including every DNS record to publish and the individual verification flags. Poll this after publishing the records rather than treating one unverified reading as final.
- Delete Domain Removes a sending domain. Senders on that domain stop being usable, so check nothing sends from it first.
Email Templates
5- Create Email Template Creates a reusable email template, which the template send route then renders. The editor type records how the template was authored, and the template code carries the visual editor's own structure, which is only meaningful for the visual editors.
- List Email Templates Returns the team's email templates with their thumbnails and editor types. The prefixed ID is what the template send route takes.
- Get Email Template Reads one email template with its full HTML and, for a visually authored template, its editor structure. This is where a flow reads a template's placeholders before a live run.
- Update Email Template Updates an email template. Campaigns already built from it keep the content they were created with, because the template is copied into the campaign at that point.
- Delete Email Template Deletes an email template. Transactional sends that reference it by ID will fail afterward, so check nothing points at it first.
Webhooks
5- Create Webhook Registers a URL that SendX posts to as events happen. Events are chosen as individual flags rather than a list and every one of them defaults to off, so a webhook created with only a URL is enabled and silently receives nothing. Turn on at least one event.
- List Webhooks Returns the team's webhooks with their URLs, enabled state and which events each subscribes to.
- Get Webhook Reads one webhook with its URL and its per event flags.
- Update Webhook Updates a webhook's URL, its enabled state and which events it subscribes to. Each event flag left empty is omitted from the request rather than turned off, so read the webhook first when the flow needs to be sure of the whole set.
- Delete Webhook Deletes a webhook. Nothing further is delivered to its URL.
Team
2- List Team Members Returns the people on the team, with their names, addresses and avatars. A member ID from here is what a blog post's author field takes.
- Get Team Member Reads one team member by its prefixed ID.
Blog Posts
5- Create Blog Post Creates a blog post on the SendX hosted blog. The internal name and the public title are both required. It is a draft unless the published flag is turned on, and the SEO and social fields are what search engines and link previews read.
- List Blog Posts Returns a page of the blog's posts with their titles, slugs, publication state and metadata.
- Get Blog Post Reads one blog post with its content, category, author, tags and SEO metadata.
- Update Blog Post Updates a blog post. The vendor requires the name and title on this route even when neither is changing, so read the post first if the flow does not already hold them. This is also how a draft is published: turn the published flag on.
- Delete Blog Post Deletes a blog post from the hosted blog.
Post Categories
5- Create Post Category Creates a category for organizing blog posts. Its prefixed ID is what a post's category field takes.
- List Post Categories Returns the blog's post categories.
- Get Post Category Reads one blog post category by its prefixed ID.
- Update Post Category Renames a blog post category. Posts filed under it keep the association.
- Delete Post Category Deletes a blog post category. Posts filed under it lose that classification.
Post Tags
5- Create Post Tag Creates a tag for blog posts. These are a separate vocabulary from contact tags and carry their own prefix, so the two cannot be used interchangeably.
- List Post Tags Returns the blog's post tags, which are what a post's tag list references.
- Get Post Tag Reads one blog post tag by its prefixed ID.
- Update Post Tag Renames a blog post tag. Posts carrying it keep the association.
- Delete Post Tag Deletes a blog post tag, removing it from every post that carried it.
Frequently Asked Questions
What can FlowRunner do with SendX?
FlowRunner agents can run Create Contact, List Contacts, and Get Contact in SendX, plus 63 more actions.
Does connecting SendX to FlowRunner require OAuth?
No. SendX connects to FlowRunner with an API key, no OAuth flow required.
Can SendX trigger a FlowRunner workflow automatically?
SendX doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with SendX
Free plan, no card required. Connect in minutes.