FlowRunner
PricingContact
Theme
Start Free

RelationCity

Messaging

Connect AI agents to RelationCity, a Danish SMS marketing and contact management platform. Agents manage contacts, tags, and custom fields, send transactional SMS and template messages, run tag-targeted SMS campaigns, and fire trigger-based emails so customer outreach stays coordinated across channels.

Verified 42 actions API key available
A monthly schedule opens the audience review, because RelationCity registers webhook endpoints by hand in its dashboard and publishes no subscription route, so this connector ships no triggers
List Contact Tags and List Contact Fields return the account's current audience vocabulary
List Contacts By Tag resolves every tag to a live contact count instead of leaving it a name
List SMS Templates reports which templates reference which merge fields, so a field proposed for retirement can be traced to the messages that use it
Add Tag To Contact and Remove Tag From Contact repair memberships that drifted, which is reversible work the agent does unattended
The proposed retirements go to the campaign owner with resolved counts and template references attached
The owner decides which tags and fields are actually retired, because Delete Contact Tag strips the tag from every contact carrying it and RelationCity publishes no restore

What This Integration Enables

RelationCity is a Danish platform from ONLINECITY.IO, and the fastest way to build the wrong thing on it is to treat it as an SMS gateway. It is a contact management system with an SMS suite attached, and the difference shows up in what the API is built around. Contacts carry custom fields the account defines, custom fields generate uppercase merge tags that templates interpolate, and contact tags are not decoration. A tag is the audience definition: Create SMS Campaign takes a set of contact tags and dispatches to the contacts carrying them. The same company also operates GatewayAPI, a separate product with its own host, credentials, and resource model, and RelationCity's own documentation points there for wholesale raw dispatch. If the job is high volume send with no contact model behind it, that is the connector to look at instead.

Because the tag is the audience, the most valuable thing an agent can do here is resolve names into numbers before anything commits. List Contacts By Tag returns the contacts a tag actually carries, so a flow can state a campaign's blast radius rather than infer it. Get Email Trigger reports which merge fields a transactional email template treats as mandatory, so a send can be validated against the template rather than against a hopeful mapping. List SMS Templates returns each template with the merge field names it expects. Those three reads turn a campaign from a request into a proposal with a stated cost and a stated reach, which is what makes a person's approval a decision instead of a formality.

Campaigns are also live objects rather than fire and forget calls, which matters for the second half of the design. Create SMS Campaign carries a send status of pre draft, draft, or queued, a message class, an encoding, a throttle in messages per second, and an optional scheduled time. Get SMS Campaign Status returns real counters: sent, received, failed, errored, estimated remaining send time, a paused flag, an allowed hours flag, and any stall warning. Pause SMS Campaign, Resume SMS Campaign, and Update SMS Campaign Throttle act on a run that is already moving. An agent watching those counters can slow a campaign that is erroring rather than waiting for a person to notice the next morning. The six pricing operations are documented as public and work on an account with no key configured at all, which makes cost modeling available to a flow that has not yet been trusted with send credentials.

Without FlowRunner

Audiences named but never counted A campaign targets a tag somebody created last year that nobody has resolved to a number since
Cleanup that quietly removes reach A tidy up deletes an unfamiliar tag and the campaigns targeting it go out to an empty audience
Price discovered on the invoice Per country rates and email plan overage are looked up after the send, if at all

With FlowRunner

Audiences resolved before they are used Every tag in a campaign is expanded to a live contact count before the campaign is created
Cleanup a person authorizes Reversible membership fixes run unattended, irreversible deletions wait for the owner who knows what targets them
Price read from the vendor's own tables The public price lists are read inside the flow, so a market's cost is known before copy is written for it

Use Case Scenarios

The audience that gets resolved before it is targeted

An operations team inherits a RelationCity account with several years of accumulated tags and custom fields, and no reliable picture of what any of them mean. The agent runs List Contact Tags and List Contact Fields to enumerate the vocabulary, then calls List Contacts By Tag for each tag so every name becomes a count. It cross references List SMS Templates and List Email Triggers to see which merge fields are actually referenced by a live template. Memberships that clearly drifted, a contact tagged for a market its phone number does not belong to, get corrected with Add Tag To Contact and Remove Tag From Contact, which are reversible and run unattended. Everything that would delete rather than adjust is written up and posted into Slack with its resolved count, and the working file lands in Google Sheets so the review has a record.

A campaign that stays under control while it runs

A retail team sends a promotional campaign across a tagged segment. The agent creates it with Create SMS Campaign in draft, with an explicit throttle and the message class the copy requires, then polls Get SMS Campaign Status. The counters are the point. When the failed and errored counts climb past what the team accepts, or the response carries a stall warning, the agent calls Pause SMS Campaign immediately and reports what it saw rather than asking permission first, because pausing is reversible and a bad run is not. It then proposes a lower rate through Update SMS Campaign Throttle and calls Resume SMS Campaign once a person has looked. The reach and the per country price were established before the campaign existed, using List Contacts By Tag and List SMS Transaction Prices.

Transactional email that fails before it sends, not after

Order and account emails go out through RelationCity's trigger templates. When an order event fires in Shopify, the agent calls Get Email Trigger for the template it intends to use and reads which merge fields the template declares mandatory. It maps the order data onto those fields and, if one is missing, it does not send a broken email and it does not silently substitute a placeholder. It calls Trigger Email only when the mapping is complete, and otherwise raises the gap with the specific field named. The SMS half of the same lifecycle runs through Send SMS With Template with the same discipline, and Create Contact or Update Contact keeps the record current so the next message interpolates the right values.

Human-in-Loop Highlight

The gate on RelationCity is Delete Contact Tag, and it is worth being precise about what that operation destroys, because it is not the data anyone would expect. The contacts survive. Every one of them keeps their name, phone number, email, and custom field values. What is destroyed is the ability to address them as a group. The tag is removed from every contact carrying it in one call, and since Create SMS Campaign targets by contact tag, any campaign that pointed at that tag now points at nothing. RelationCity publishes no route to restore a deleted tag or to reattach it in bulk to the contacts it was stripped from. So a well intentioned cleanup agent can silently unbuild the targeting of campaigns that have not run yet, and the failure surfaces weeks later as a send that went to fewer people than anyone expected.

That is why the agent does the reversible half of a cleanup unattended and stops before the irreversible half. Into Slack: "Audience review complete. 6 contact tags unused by any campaign in 180 days. Resolved counts: nordic-winback 8,412 contacts and is the only tag targeted by the Q4 reactivation campaign, still in draft. legacy-import-2023 41 contacts. trade-show-oslo 0 contacts. Three others under 20. Also proposing retirement of contact field ORDER_REF, which two SMS templates still reference as a merge field. Delete Contact Tag removes the tag from every carrier with no restore, and Delete Contact Field deletes the stored values along with the field. Which of these do we actually retire?"

A person reads that and does the thing an agent cannot: recognizes that nordic-winback is not stale, it is next quarter's campaign that has not launched yet. This is human-in-the-loop working the way Orchestration as a Service intends. The agent has already done the expensive part, resolving six names into six counts and tracing a field to the templates that use it. What it hands over is only the judgment that requires knowing what the business plans to do next. One further operation sits on the gated side for the same reason. Delete Contact and Delete Contact By Phone Number are permanent, and a consent request phrased as a deletion is often satisfied by Update Contact clearing the email opt in instead, which is reversible if the person changes their mind.

Agent processes routinely
Detects exception requiring judgment
Clear match Continues automatically
Ambiguous Routes to human via Slack
Human decides
Agent resumes with decision

Agent Capabilities

42 actions

Contacts

12
  • Create Contact Creates one contact from a name and a full international phone number, optionally with existing tag identifiers, text and date field values, an email address, and an email opt in with optional double opt in.
  • Create Contacts In Bulk Creates several contacts in a single request, each accepting the same fields as a single create. This is the import path for a segment arriving from a CRM or a warehouse query.
  • List Contacts Returns a cursor paginated page of contacts with a cursor for the next page, which is what a full sync walks.
  • Get Contact Retrieves one contact by its RelationCity identifier.
  • Get Contact By Phone Number Retrieves one contact by international phone number with no symbols, which is the lookup a messaging flow uses when all it has is the number that texted in.
  • Get Contact By Email Address Retrieves one contact by email address, used when the inbound event comes from an email system rather than a phone.
  • List Contacts By Tag Returns a cursor paginated page of the contacts carrying a given contact tag. This is the operation that converts an audience name into an audience size, and it belongs in front of every campaign decision.
  • Update Contact Partially updates name, phone number, active state, email address, email opt in state, and text or date field values. Clearing an opt in here is the reversible alternative to deleting a person.
  • Add Tag To Contact Attaches an existing contact tag to a contact, which is how membership in a campaign audience is granted.
  • Remove Tag From Contact Detaches a contact tag from one contact while leaving the tag itself intact for everyone else carrying it.
  • Delete Contact Permanently deletes a contact by identifier.
  • Delete Contact By Phone Number Permanently deletes a contact by phone number, which is the shape a consent erasure request usually arrives in.

Contact Tags

5
  • Create Contact Tag Creates a tag used to group contacts and to target SMS campaigns. Because campaigns target by tag, creating one is defining an audience.
  • List Contact Tags Returns a cursor paginated page of contact tags, which is the account's audience vocabulary.
  • Get Contact Tag Retrieves a single contact tag by identifier.
  • Update Contact Tag Renames a contact tag without disturbing its membership.
  • Delete Contact Tag Deletes a contact tag and removes it from every contact carrying it. The contacts survive, the grouping does not, and any campaign that targeted the tag loses its audience.

Contact Fields

5
  • Create Contact Field Creates a custom contact field of type text or date. RelationCity derives an uppercase merge tag from the field name, which is what templates then interpolate.
  • List Contact Fields Returns the account's contact fields as a flat array, which a flow reads before it maps external data onto a template.
  • Get Contact Field Retrieves a single contact field by identifier.
  • Update Contact Field Updates the type, name, and placeholder of a field. The API requires the type on every update, so pass the current type when it is not the thing changing.
  • Delete Contact Field Deletes a contact field and the values stored for it on every contact, which also breaks any template still referencing its merge tag.

SMS

4
  • Send SMS Sends a message to one or more recipients with a free text sender and a standard or premium message class, optionally with a session token for grouped tracking and a status callback URL. It returns the session token, total price, and currency, so the cost of the send comes back with the send.
  • List SMS Templates Returns every SMS template with its content and the merge field names it expects, which is how a flow validates a mapping before it dispatches.
  • Get SMS Template Retrieves a single SMS template by identifier.
  • Send SMS With Template Sends a stored template to one or more recipients with a key value object of merge field values, which keeps approved wording in the platform rather than in flow configuration.

SMS Campaigns

7
  • Create SMS Campaign Creates a campaign targeting the contacts carrying the given contact tags, with sender, message, message class, send status of pre draft, draft, or queued, throttle, encoding, and an optional scheduled send time. The draft states exist so a campaign can be built before it is committed.
  • Get SMS Campaign Status Returns live counters for a running campaign: send status, recipient count, sent, received, failed, and errored counts, estimated remaining send time, a paused flag, an allowed hours flag, and any stall warning. This is the instrument an agent watches rather than a summary it reads afterward.
  • Pause SMS Campaign Stops further dispatch on a running campaign. Pausing is reversible, so an agent seeing an error rate climb should pause first and report second.
  • Resume SMS Campaign Resumes a paused campaign, which is the call that belongs after a person has looked at why it was paused.
  • Update SMS Campaign Throttle Changes the sending rate in messages per second on a campaign, within the range the vendor documents. A value outside that range is rejected locally rather than spending a round trip on a guaranteed failure.
  • List Campaign Tags Returns every campaign tag on the account, used to label campaigns for reporting.
  • Create Campaign Tag Creates a campaign tag. These label campaigns and are a separate namespace from the contact tags that define audiences.

Email Triggers

3
  • List Email Triggers Returns every email trigger template with its status and declared merge fields.
  • Get Email Trigger Retrieves a single email trigger template including which merge fields are mandatory, which is the check that keeps a broken transactional email from being sent rather than discovered.
  • Trigger Email Sends a transactional email to one recipient from a trigger template with merge field values and optional sender and reply to overrides.

Prices

6
  • List SMS Price Models Returns the public SMS price model as a single object with per country transaction, subscription number, and subscription keyword tables in euros and Danish kroner.
  • List SMS Transaction Prices Returns public per message SMS prices by country, paginated, which is what a market entry forecast should be built on.
  • List SMS Subscription Number Prices Returns the public monthly price for an incoming number by country.
  • List SMS Subscription Keyword Prices Returns the public monthly price for a keyword subscription by country.
  • List Email Prices Returns the public email price plans with included volume and overage pricing.
  • List Email Prices Paginated Returns the same email price plans in pages, for accounts modeling many plans at once.

Frequently Asked Questions

What can FlowRunner do with RelationCity?

FlowRunner agents can run Create Contact, Create Contacts In Bulk, and List Contacts in RelationCity, plus 39 more actions.

Does connecting RelationCity to FlowRunner require OAuth?

No. RelationCity connects to FlowRunner with an API key, no OAuth flow required.

Can RelationCity trigger a FlowRunner workflow automatically?

RelationCity doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

Start building with RelationCity

$100 in credits. No card required. Connect in minutes.