SendX App

Introduction

The SendX App for Flows enables you to connect your workflows to SendX, an email marketing and marketing-automation platform. This integration allows you to manage contacts, lists and tags, send transactional and template-based emails, and push revenue/custom events directly from your Flows without writing complex code. With this App, you can build automated workflows that keep your email marketing in sync with player/customer activity in real time, perfect for onboarding sequences, revenue attribution, behavioural automation, and campaign reporting.

What is SendX?

SendX is an email marketing automation platform that lets you manage contacts, lists and tags, send transactional and template emails, and track revenue and custom events that drive automations. Key features include:

  • Contact management (create, update, search, unsubscribe, delete)
  • Transactional and template-based email sending
  • Lists and tags for segmentation
  • Revenue and custom event tracking for automation triggers
  • Campaign performance reporting

Getting Started

Prerequisites

Before using the SendX App, you will need:

  • A SendX account
  • Your SendX Team API Key

Finding Your Credentials

  1. Log in to your SendX app
  2. Go to Settings > Connectors > API
  3. Copy your Team Api Key from the "Team Api Key" section

(Direct link: https://app.sendx.io/setting/connectors/api)

Recommendation: the Team API Key is sent as the X-Team-ApiKey header on every request. Keep this key secure, anyone with it has full access to your SendX contacts, lists, and sending.

Available Stages

StageMethodDescription
Create ContactPOSTCreate a new contact record
Get ContactGETRead a single contact by its prefixed ID
Update ContactPUTReplace a contact's email and name
Delete ContactDELETESoft-delete a contact
Unsubscribe ContactPOSTMark a contact as unsubscribed
Search ContactsGETSearch contacts by name or email
Add Tag To ContactPOSTAdd a tag to a contact by email (upsert, additive)
Add Contact To ListPOSTAdd a contact to a list by email (upsert, additive)
Send Transactional EmailPOSTSend a one-off HTML email
Send Email Using TemplatePOSTSend an email rendered from a SendX template
Create ListPOSTCreate a subscriber list
Get All ListsGETReturn every list
Create TagPOSTCreate a tag
Get All TagsGETReturn every tag
Track Custom EventPOSTPush a named custom event for a contact
Track Revenue EventPOSTPush a revenue/purchase event for a contact
Get Campaign ReportGETRead open/click/bounce stats for a campaign

Authentication

SendX uses a single static API key sent as a request header - no OAuth, no token refresh, no expiry handling.

X-Team-ApiKey: <Team API Key>

Base URL for every endpoint: https://api.sendx.io/api/v1/rest


Create Contact

The Create Contact stage allows you to create a new contact record in SendX.

Input Parameters

ParameterVariableRequiredDescription
Email{{email}}YesContact email address. Must be unique within the team, max 255 chars.
First Name{{firstName}}YesContact first name, max 255 chars. Used by SendX merge tags for personalisation.
Last Name{{lastName}}YesContact last name, max 255 chars.

Output

FieldDescription
ContactIDPrefixed contact ID — pass this to Get / Update / Delete / Unsubscribe Contact
EmailContact email address
FirstName / LastNameContact name fields
CompanyCompany name if one is stored
Unsubscribedtrue once the contact has opted out
Bounced / Spam / Blocked / DroppedDeliverability status flags
LTVLifetime value accumulated from revenue events
Created / UpdatedISO 8601 timestamps

The lists and tags fields of a contact are arrays and are deliberately not returned as flat fields - Flows cannot resolve array indexes. Use Get All Lists / Get All Tags, or add a Loop stage against the raw response, if you need them.

Usage Example

ParameterValue
email[email protected]
firstNameJane
lastNameDoe

Important Notes

  • Emails are unique per team, a duplicate email or invalid format returns a 400 error

Get Contact / Delete Contact / Unsubscribe Contact

These stages act on an existing contact using its prefixed contact ID.

Input Parameters

ParameterVariableRequiredDescription
Contact ID{{contactId}}YesPrefixed contact ID returned by Create Contact or Search Contacts. Format contact_ + 22 alphanumeric chars.

Output (Get Contact)

Same response fields as Create Contact - see the field table above.

Usage Example

ParameterValue
contactIdcontact_BnKjkbBBS500CoBCP0oChQ

Important Notes

  • The ID must include the contact_ prefix - the bare 22 characters alone will return a 404
  • Unsubscribe Contact marks a contact as opted-out; it does not delete the record

Update Contact

The Update Contact stage allows you to replace a contact's email and name.

Input Parameters

ParameterVariableRequiredDescription
Contact ID{{contactId}}YesPrefixed contact ID to update
Email{{email}}YesEmail address to store - SendX requires this on every update, so always pass the contact's current (or new) address
First Name{{firstName}}YesFirst name to store
Last Name{{lastName}}YesLast name to store

Output

Same response fields as Create Contact - see the field table above.

Usage Example

ParameterValue
contactIdcontact_BnKjkbBBS500CoBCP0oChQ
email[email protected]
firstNameJane
lastNameDoe

Important Notes

  • Even if you're only changing the name, you must still pass the contact's current email - omitting it is not supported

Search Contacts

The Search Contacts stage lets you search contacts by name or email.

Input Parameters

ParameterVariableRequiredDescription
Search{{search}}YesText matched against firstName, lastName and email. Minimum 2 characters, max 255.

Output

These return a single answer containing a count plus one array of objects (Contacts). Each object carries a 1-based sequence number so downstream stages can reference position.

Usage Example

ParameterValue
searchjane

Important Notes

  • A search string shorter than 2 characters returns an empty array

Add Tag To Contact / Add Contact To List

Both stages upsert a contact by email - if the contact doesn't exist, SendX creates it.

Add Tag To Contact — Input Parameters

ParameterVariableRequiredDescription
Email{{email}}YesEmail of the contact. Created automatically if it does not exist.
Tag Name{{tagName}}YesTag name to add. Created automatically if it doesn't exist. Tags are additive — existing tags are kept.

Add Contact To List — Input Parameters

ParameterVariableRequiredDescription
Email{{email}}YesEmail of the contact. Created automatically if it does not exist.
List Name{{listName}}YesName of an existing list — create one first with Create List. Lists are additive — existing memberships are kept.

Usage Examples

ParameterValue
email[email protected]
tagNameVIP Customer
ParameterValue
email[email protected]
listNameNewsletter Subscribers

Important Notes

  • Unlike tags, lists are not auto-created - run Create List first, then use the exact list name, or the stage will silently do nothing

Send Transactional Email

The Send Transactional Email stage sends a one-off HTML email.

Input Parameters

ParameterVariableRequiredDescription
From Email{{fromEmail}}YesSender address — must belong to a domain verified in SendX
From Name{{fromName}}YesSender display name shown in the inbox
To Email{{toEmail}}YesRecipient address
Subject{{subject}}YesEmail subject line
HTML Body{{htmlBody}}YesFull HTML body of the email

Output

FieldDescription
Status"success" when SendX accepted the message
Message"Email queued for delivery"

HTTP 202 means queued, not delivered. Delivery happens asynchronously; use a SendX webhook if you need a delivery confirmation.

Usage Example

ParameterValue
fromEmail[email protected]
fromNameAcme Support
toEmail[email protected]
subjectYour order has shipped
htmlBody<h1>Thanks!</h1><p>Your order is on its way.</p>

Important Notes

  • The sending domain must be verified in SendX (Settings > Domains) before using it as fromEmail, or the email will never arrive despite the 202 response

Send Email Using Template

The Send Email Using Template stage sends an email rendered from a SendX template.

Input Parameters

ParameterVariableRequiredDescription
From Email{{fromEmail}}YesSender address on a verified domain
From Name{{fromName}}YesSender display name
To Email{{toEmail}}YesRecipient address
Subject{{subject}}YesEmail subject line
Template{{template}}YesPrefixed template ID from Get All Templates in the SendX UI. Format template_ + 22 chars.

Output

Same response fields as Send Transactional Email (Status, Message). HTTP 202 means queued, not delivered.

Usage Example

ParameterValue
fromEmail[email protected]
fromNameAcme Support
toEmail[email protected]
subjectWelcome aboard
templatetemplate_6h8DnYrHt4KktCnG8PDO5Z

Important Notes

  • Same delivery caveats as Send Transactional Email apply (202 = queued, not delivered; domain must be verified)

Create List / Create Tag

Both stages create a new list or tag by name.

Input Parameters

ParameterVariableRequiredDescription
Name{{name}}YesName of the list or tag. Must be unique within the team.

Usage Examples

ParameterValue
nameNewsletter Subscribers
ParameterValue
nameVIP Customer

Get All Lists / Get All Tags

Both stages return every list or tag in the team.

Output

Search Contacts / Get All Lists / Get All Tags - these return a single answer containing a count plus one array of objects (Contacts, Lists, Tags). Each object carries a 1-based sequence number so downstream stages can reference position.

Important Notes

  • Both endpoints request the API maximum of 100 per call. Teams with more than 100 lists/tags need pagination, which these endpoints do not expose

Track Custom Event

The Track Custom Event stage pushes a named custom event for a contact - typically used as an automation trigger inside SendX.

Input Parameters

ParameterVariableRequiredDescription
Identifier{{identifier}}YesContact email address or prefixed contact ID
Event Name{{eventName}}YesName of the event, used as the automation trigger in SendX

Output

FieldDescription
Status"success" when the event was recorded
Message"Event tracked successfully"

Usage Example

ParameterValue
identifier[email protected]
eventNametrial_started

Track Revenue Event

The Track Revenue Event stage pushes a revenue/purchase event for a contact, so SendX can accumulate lifetime value (LTV) and segment high-value customers.

Input Parameters

ParameterVariableRequiredDescription
Identifier{{identifier}}YesContact email address
Amount{{amount}}YesRevenue amount as a decimal number, no currency symbol
Source{{source}}YesWhere the revenue came from - used for attribution reporting

Output

Same response fields as Track Custom Event (Status, Message).

Usage Example

ParameterValue
identifier[email protected]
amount99.99
sourcewebsite

Get Campaign Report

The Get Campaign Report stage reads open/click/bounce stats for a campaign.

Input Parameters

ParameterVariableRequiredDescription
Campaign ID{{campaignId}}YesPrefixed campaign ID, format campaign_ + 22 chars. Copy it from the campaign URL in the SendX UI.

Output

FieldDescription
SentContactCountContacts the campaign was sent to
OpenedContactCount / OpenedUniqueContactCountTotal and unique opens
ClickedContactCount / ClickedUniqueContactCountTotal and unique clicks
UnsubscribeContactCountContacts who opted out from this campaign
BounceContactCount / SpamContactCountDeliverability counters

The report's linkStats field is an array of per-URL click counts. It is not returned as a flat field - add a Loop stage over the raw response if you need per-link breakdowns.


Use Cases

  1. Signup to welcome email - a webhook trigger fires Create Contact, then Add Contact To List ("Newsletter Subscribers"), then Send Email Using Template with your welcome template.
  2. Purchase attribution - after a payment succeeds, call Track Revenue Event so SendX accumulates the contact's LTV and can segment high-value customers.
  3. Behavioural automation - call Track Custom Event (trial_started, cart_abandoned) and let SendX automations react without any further Flows logic.
  4. VIP tagging - when a player crosses a deposit threshold, call Add Tag To Contact with VIP Customer; SendX creates the tag on the fly.
  5. Campaign reporting digest - schedule Get Campaign Report daily and push the open/click counters into Slack or a BI table.
  6. GDPR erasure - on a deletion request, call Unsubscribe Contact then Delete Contact.

How to Test

  1. Install SendX from the marketplace and create a connection.
  2. Paste your Team API Key from https://app.sendx.io/setting/connectors/api into the API Key connection parameter.
  3. Start with Create Tag (name = "Flows Test Tag") - it needs nothing pre-existing and proves the key works. A TagID starting with tag_ comes back.
  4. Then run Create Contact with email = "[email protected]", firstName = "Flows", lastName = "Test". Copy the returned ContactID.
  5. Run Get Contact with that ContactID to confirm the read path.
  6. Run Search Contacts with search = "flows" - you should get ContactCount >= 1 and your contact inside the Contacts array.
  7. Clean up with Delete Contact.

Each endpoint also carries a pink note in the Designer canvas with its own test recipe and example values.


Troubleshooting

SymptomCauseFix
401 UnauthorizedMissing or wrong Team API KeyRe-copy the key from Settings > Connectors > API. It is the Team Api Key, not a personal token.
400 Bad Request on Create ContactEmail already exists in the team, or is not a valid email formatEmails are unique per team - use Add Tag To Contact / Add Contact To List (both upsert) instead, or Update Contact
404 Not Found on Get / Update / DeleteWrong ID or missing prefixIDs must include the prefix, e.g. contact_BnKjkbBBS500CoBCP0oChQ, not the bare 22 characters
Email returns 202 but never arrivesThe sending domain is not verifiedVerify the domain in SendX (Settings > Domains) before using it as fromEmail
Search Contacts returns an empty arraySearch shorter than 2 characters, or no matchSendX requires a minimum of 2 characters for the search filter
Add Contact To List does nothingThe list name does not existUnlike tags, lists are not auto-created. Run Create List first, then use the exact list name
Get All Lists / Get All Tags looks truncatedPage sizeThe endpoints request the API maximum of 100 per call - teams with more than 100 lists/tags need pagination, which these endpoints do not expose