---
title: iPost API Integration on Truto
slug: ipost
category: Marketing Automation
canonical: "https://truto.one/integrations/detail/ipost/"
---

# iPost API Integration on Truto



**Category:** Marketing Automation  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 38 tools for iPost that AI agents can call directly.

- **create_a_i_post_contact** — Add a contact to the iPost account. GlobalEmailStatus and GlobalMobileStatus are assumed true when their corresponding Email or Mobile fields are present, and ignored when those fields are absent. Returns: Contact_ID, Email, Mobile, GlobalEmailStatus, GlobalMobileStatus.
- **update_a_i_post_contact_by_id** — Update an iPost contact's information by ContactID. GlobalEmailStatus and GlobalMobileStatus are assumed true when their corresponding Email or Mobile fields are present, and ignored when those fields are absent. Returns: Contact_ID, Email, Mobile, GlobalEmailStatus, GlobalMobileStatus. Required: id.
- **get_single_i_post_contact_by_id** — Retrieve an iPost contact using the blob — an encrypted tracking token optionally appended to tracked links in iPost mailings. Returns: Contact_ID, Email, Mobile, GlobalEmailStatus, GlobalMobileStatus. Required: id (blob value).
- **list_all_i_post_contacts** — List contacts on a specific iPost list by list ID. Returns up to 10,000 contact records per call. Returns: Contact_ID, Email, Mobile, GlobalEmailStatus, GlobalMobileStatus. Required: list_id.
- **i_post_contacts_bulk_create** — Add multiple contacts to an iPost journey automation. Each recipient can be identified by an existing Contact_ID or by Email (which may create a new contact if no match is found). An optional Properties object supplies iTL template variable values for journey email assembly, overriding matching contact profile fields. Returns an opaque confirmation response from the journey automation endpoint. Required: journey_id, Recipients.
- **get_single_i_post_contact_status_by_id** — Get the opt-in/opt-out status of a contact across all static lists and topics in ipost. Returns: lists, topics — each keyed by identifier with a value of true if the contact is opted in or false if opted out. Required: id.
- **create_a_i_post_list** — Create a new list in ipost. Returns: id.
- **update_a_i_post_list_by_id** — Update an existing list in ipost by id. Returns: id. Required: id.
- **delete_a_i_post_list_by_id** — Empty an ipost list by removing all contacts from it. Returns an empty 204 response on success. Required: id.
- **create_a_i_post_md_5_list_contact** — Add one or more contacts to an ipost MD5 Suppression List. Uploaded email addresses are hashed to MD5 format upon ingestion; matching is case-sensitive, so the case of each address must match exactly for suppression to apply. Returns an empty 204 response on success. Required: list_id.
- **i_post_contact_lists_bulk_create** — Add a contact in ipost to one or more lists. Returns an empty 204 response on success. Required: contact_id. Note: GlobalEmailStatus and GlobalMobileStatus are assumed true when absent if the corresponding Email or Mobile fields are present, and are ignored when the corresponding fields are absent.
- **delete_a_i_post_list_contact_by_id** — Remove one or more contacts from an iPost list. Required: list_id. Returns an empty 204 response on success.
- **i_post_list_contacts_bulk_create** — Add or update one or more contacts in an iPost list using encrypted blob tokens. Blobs encode contact identity information and can be sourced from iPost email tracking parameters appended to tracked URLs. Required: list_id. Returns an empty 204 response on success.
- **create_a_i_post_column** — Create a new contact column in ipost. Returns: id, name.
- **delete_a_i_post_column_by_id** — Delete an existing contact column in ipost by id. Returns an empty 204 response on success. Required: id.
- **list_all_i_post_columns** — List all existing contact columns in ipost. Returns: id, name.
- **create_a_i_post_process_automation** — Create a new Process Automation in ipost, specifying automation activities and schedule configuration. Returns: id, status. Supports special automation_schedule.schedule_time_zone values: same_time_sending (Recipient Local Time) and send_time_optimisation (Send Time Optimization), in addition to standard timezone identifiers.
- **update_a_i_post_process_automation_by_id** — Update the status of an existing Process Automation in ipost. Returns: id, status. Required: id, status.
- **delete_a_i_post_process_automation_by_id** — Delete a Process Automation from your ipost account by id. Returns an empty 204 response on success. Required: id.
- **create_a_i_post_journey_automation** — Create a Journey Automation in ipost. Supply recipients via the Recipients array (using Contact_ID for existing contacts or Email for new ones, plus optional Properties for iTL variable substitution) and define automation steps via Automation_Activities (use the children array for multi-step flows). Returns: id.
- **get_single_i_post_journey_automation_by_id** — Search for Journey Automations in ipost. Returns matching journey automation records from the data envelope. Returns: id.
- **update_a_i_post_journey_automation_by_id** — Update a Journey Automation in ipost by id. Update enrolled recipients via the Recipients array (Contact_ID, Email, Properties) and redefine automation steps via Automation_Activities (use the children array for multi-step flows). Returns: id. Required: id.
- **create_a_i_post_journey_automation** — Add contacts to an ipost journey automation to enroll them in the journey sequence. Each recipient can be an existing contact identified by Contact_ID, or a new contact identified by Email; an optional Properties object supplies iTL variable substitutions for email content used by the journey. Returns an empty 204 response on success. Required: journey_id.
- **create_a_i_post_datatable** — Create a new DataTable in ipost. Returns the id of the newly created DataTable.
- **update_a_i_post_datatable_by_id** — Modify an existing DataTable in ipost by id. Returns the id of the updated DataTable. Required: id.
- **list_all_i_post_datatable_records** — List records from an ipost DataTable. Returns records including id and attributes (user-defined DataTable column values). Maximum 100 records per call; use the `start` body parameter to set the pagination offset. Required: datatable_id.
- **i_post_datatable_records_bulk_update** — Add or update records in an ipost DataTable. Accepts a JSON body with record data whose fields correspond to the user-defined columns of the specified DataTable. Required: datatable_id.
- **get_single_i_post_data_table_attribute_by_id** — Retrieve all attributes of a specific ipost Data Table by its id. Returns: status, and a data array where each attribute includes data_type, label, key, and required. Required: id.
- **delete_a_i_post_asset_by_id** — Delete an asset in ipost by id. Returns an empty 204 response on success. Required: id.
- **get_single_i_post_bulk_import_by_id** — Get the status of a bulk import in ipost by id. Returns: id, status (one of: 'new', 'inprogress', 'completed', 'error'). Required: id.
- **create_a_i_post_auth_session** — Create an ipost authentication session by submitting credentials. Returns: data (containing token, valid_for, and expires) and status. The token has a fixed validity window and must be re-issued after expiry. Required: client_id, client_secret.
- **create_a_i_post_contacts_upsert** — Add or update a contact record in ipost using the addUpdate endpoint. Returns: contact_id, email, properties. Required: client_token, email.
- **get_single_i_post_contacts_blob_by_id** — Retrieve an iPost contact using the blob, an encrypted token that encodes contact identity and is optionally appended to tracked email links. Returns the contact's email, contact_id, and properties. Required: id.
- **update_a_i_post_contacts_blob_by_id** — Add or update one or more iPost contacts on a list using the blob, an encrypted token that identifies the contact via tracked email links. Returns the contact's email, contact_id, and properties. Required: id.
- **get_single_i_post_contact_statuses_blob_by_id** — Retrieve iPost contact status information for a subscriber identified by their encrypted blob token — an optional URL parameter appended to tracked links that encodes the contact's identity. Returns the contact's identification and subscription status including ContactID, Email, GlobalEmailStatus, and GlobalMobileStatus. Required: client_token, blob.
- **delete_a_i_post_lists_empty_by_id** — Empty an ipost list by removing all contacts from it. Returns an empty 204 response on success. Required: id.
- **create_a_i_post_process_automations_start** — Start a process automation in ipost for the specified automation_id. Initiates the automation only when its status is active; the call returns an error if the automation's status is stopped, draft, or paused. Returns an empty 204 response on success. Required: automation_id.
- **i_post_contact_lists_blob_bulk_create** — Bulk add a contact to one or more iPost lists using the blob token mechanism. Submits a JSON body against the contact identified by id to associate them with lists via blob. Returns an empty 204 response on success. Required: id.

## How it works

1. **Link your customer's iPost account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach iPost.** The Proxy API is a 1-to-1 mapping of the iPost API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Sync loyalty and player identity into marketing journeys** — Hospitality, gaming, and membership SaaS platforms can push unique user identifiers (Player ID, Member ID) into iPost so end users get marketing campaigns tied to their real CRM identity, not just an email address.
- **Stream transactional events into marketer-controlled segments** — SaaS platforms can push purchases, tier changes, check-ins, or redemptions into iPost DataTables, letting their customers' marketing teams build dynamic audiences without engineering involvement on every new segment.
- **Trigger event-driven transactional messages** — Product teams can fire iPost journey automations from in-app events (booking confirmed, tier upgraded, cart abandoned) and pass dynamic Properties so each message contains event-specific data like QR codes or location details.
- **Enable 1-click actions from email links** — SaaS apps powering landing pages can use iPost's encrypted blob tokens to identify users from email click-throughs without a login, enabling 1-click renewals, preference updates, or list removals.
- **Centralize compliance and suppression management** — Regulated industries like gaming, healthcare, and finance can push MD5-hashed suppression entries into iPost from their SaaS platform, keeping PII off the wire while enforcing global opt-outs.

## What you can build

- **Identity-based contact upsert** — Use create_a_i_post_contacts_upsert to map your platform's user ID to an iPost contact, keeping GlobalEmailStatus and GlobalMobileStatus in sync as users change preferences in your app.
- **Real-time event push to DataTables** — Use i_post_datatable_records_bulk_update to stream transactional activity (purchases, tier changes, redemptions) into iPost's relational tables for dynamic segmentation.
- **Triggered journey enrollment with dynamic Properties** — Use create_a_i_post_journey_automation to enroll users in journeys and inject per-message Properties like QR codes, location IDs, or one-time offers.
- **Blob-powered zero-login landing pages** — Use get_single_i_post_contacts_blob_by_id and update_a_i_post_contacts_blob_by_id to identify users from email click tokens and update their state without requiring a login.
- **Localized list management for multi-location customers** — Use create_a_i_post_list, create_a_i_post_md_5_list_contact, and i_post_list_contacts_bulk_create to automatically provision and populate per-location or per-franchisee lists as new entities are created in your platform.
- **Privacy-safe suppression sync** — Use create_a_i_post_md_5_list_contact to push MD5-hashed emails into suppression lists, enforcing global opt-outs without ever sending plaintext PII over the wire.

## FAQs

### How do end users authenticate their iPost account?

Truto handles the iPost auth handshake for your end users via create_a_i_post_auth_session, so you don't need to build credential capture, token refresh, or session management yourself.

### Can we use a primary key other than email address?

Yes. iPost natively supports custom primary identifiers (like Player ID or Member ID). Use create_a_i_post_contacts_upsert to map your platform's unique user ID to the iPost contact record, avoiding deduplication issues common with email-keyed ESPs.

### How do we push high-volume transactional data without rate limit issues?

Use the bulk endpoints — i_post_contacts_bulk_create, i_post_contact_lists_bulk_create, i_post_list_contacts_bulk_create, and i_post_datatable_records_bulk_update — to batch writes. For backfills, get_single_i_post_bulk_import_by_id lets you poll long-running import jobs.

### How do we pass event-specific data into a triggered email?

When enrolling a contact via create_a_i_post_journey_automation, include a Properties payload. These values override contact data only for that send, so you can inject one-time tokens, dynamic QR codes, or location-specific details without mutating the underlying contact record.

### Can we identify users from email link clicks without a login flow?

Yes. iPost blob tokens are encrypted identifiers appended to links. Your landing page can call get_single_i_post_contacts_blob_by_id or get_single_i_post_contact_statuses_blob_by_id to resolve the user, then call update_a_i_post_contacts_blob_by_id or i_post_contact_lists_blob_bulk_create to update state.

### How do we handle suppression without exposing plaintext emails?

Use create_a_i_post_md_5_list_contact to push MD5-hashed emails into a suppression list. This is especially useful for gaming, healthcare, and other regulated verticals where PII handling is restricted.

### Can we manage custom contact fields and schema?

Yes. Use create_a_i_post_column, list_all_i_post_columns, and delete_a_i_post_column_by_id to manage contact columns, and create_a_i_post_datatable plus get_single_i_post_data_table_attribute_by_id to provision relational DataTables for transactional history.

## Related reading

- [Connect iPost to ChatGPT: Sync Contacts, Lists & Automations](https://truto.one/blog/connect-ipost-to-chatgpt-sync-contacts-lists-automations/) — Learn how to connect iPost to ChatGPT using a managed MCP server. Sync contacts, manage MD5 suppression lists, and automate email journeys with AI.
- [Connect iPost to Claude: Manage Journeys, DataTables & Segments](https://truto.one/blog/connect-ipost-to-claude-manage-journeys-datatables-segments/) — Learn how to connect iPost to Claude using a managed MCP server. Automate contact updates, Journey enrollments, and dynamic DataTable schemas without writing code.
- [Connect iPost to AI Agents: Automate Campaign Logic & Bulk Data](https://truto.one/blog/connect-ipost-to-ai-agents-automate-campaign-logic-bulk-data/) — Learn how to connect iPost to AI agents using Truto's /tools endpoint. Build autonomous workflows with LangChain, manage blob tokens, and handle rate limits.
