- Brand
- Conversion
- Category
- Marketing
- Primary Subcategory
- Email & SMS Lifecycle Marketing Automation
Integration details
Description
Connect ChatGPT to the Conversion marketing data platform to inspect CRM contacts, build emails, audiences, forms, and campaigns, diagnose why a contact did not receive an email or enter a workflow, and audit sync failures with Salesforce and other connected systems. Read-only tools cover contacts, opportunities, campaigns, forms, workflows, sync logs, and email performance metrics. Write tools create blast emails, audiences, campaigns, folders, contacts, and CSV imports within the user's authenticated Conversion workspace.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Email & SMS Lifecycle Marketing Automation
- Secondary Subcategories
- None listed
- Brand
- Conversion
- Access
- Account required
- First tracked
- 2026-07-08
- Tool count
- 205
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Conversion
Get updates when Conversion’s Discoverability Score or category rank changes.
Competing in ChatGPT Email & SMS Lifecycle Marketing Automation
View Category205 tools agents can invoke
Get an ad campaign and its ad sets. In a segmented audience, each segment gets its own ad set copied from the campaign's template ad set (marked `template`); an ad set's `segmentId` says whose it is. `managed` ad sets and ads have a Conversion `draft` (what edits change) and a `live` copy (what's on the platform).
Change an ad campaign's draft: its name or objective. Set only what changes. Nothing goes live until a person pushes the campaign. Ad sets and ads change with ad_set_update and ad_update.
Add a draft single image ad to an ad set, with its name, intro text, headline, destination URL, call to action, and image. It goes live only when a person pushes it.
Get an ad set with its ads: name, status, budget, schedule, and each ad's copy, call to action, destination URL, and image, as Conversion's `draft` and the platform's `live` copy. A segment's ad set variant is `variant.variantAssetId` from audience_segment_get.
Change an ad set's draft: its name, budget, or schedule. Set only what changes. Nothing goes live until a person pushes the ad set. Targeting isn't changed here; a segment's ad set already targets that segment.
Change an ad's draft: its name, intro text, headline, destination URL, call to action, or image. Set only what changes. Nothing goes live until a person pushes the ad. Keep the copy within the platform's limits; a refused edit says why. A `locked` ad is already on the platform and can't change; add a new ad with ad_create instead.
Immediately add contacts to a STATIC audience by their UUIDs.
Find out whether an email, landing page, or ad campaign is personalized: a BASE that an audience personalizes (with its instructions and variant statuses), a segment's VARIANT of a base (with the base, audience, and segment), or NONE. Use it before editing an asset that might be a base or variant, such as one the user has open, so an edit meant for every segment isn't made to one variant, or the reverse.
Create a new audience. DYNAMIC audiences require a filter. BEFORE CALLING: Call `learn_statement_semantics` first to load the schema before calling this tool. Audience filters require the UI/operand OR→AND shape. Use VARIABLE with a real `variableSchemaId` from `list` (resource `fields`) for contact fields, ENGAGEMENT for events, or RELATIONSHIP to filter on linked records such as custom object records; direct root comparisons are not valid here.
Create a segmented audience for account-based marketing, with personalization on in the given mode, or off when `mode` is omitted. It starts with no segments: add target accounts with audience_segment_add_accounts (ACCOUNTS mode) or groups with audience_segment_create (CUSTOM mode), then personalize assets for it with audience_personalize_asset. Segments start off; only a person turns them on.
Permanently delete an audience. Use `list` (resource `audiences`) first when you need to verify the target.
Get one audience by id. A segmented audience (type PARTITIONED) also returns its `segments` in evaluation order (a contact belongs to the first turned-on segment it matches; ENABLED is on) and its `personalizationSettings`.
List audiences for the current business with cursor pagination and optional sorting.
List the emails, landing pages, and ad campaigns a segmented audience personalizes (its bases), each with its personalization instructions, whether a base email goes to recipients with no variant (`sendBaseFallback`), and how many of its segment variants are in each status. For one segment's variants and their ids, use audience_segment_get.
Personalize an email, landing page, or ad campaign for a segmented audience: it becomes one of the audience's bases, and every segment gets its own variant of it (an ad set, for an ad campaign). Variants are created in the background as draft copies of the base; nothing is published or sent. The audience must have personalization on (audience_set_personalization), and an asset is personalized for at most one audience. Write instructions that say how to tailor the asset per segment. Variants start as plain copies: to write them, run the ABM agent with audience_segment_personalize once they exist (audience_segment_get shows each segment's variant).
Add target accounts to a segmented audience: one segment per company, whose members are that company's contacts. This is how to add segments in ACCOUNTS mode, which accepts no other statement; it works in CUSTOM mode too. Each segment starts off (DISABLED) and is added last. A company the audience already targets is skipped. Find companies with `list` (resource `companies`) or `search`. Each segment is named after its company unless you pass `name`.
Add a segment to a segmented audience. It starts off (DISABLED), so it has no members until a person turns it on. Place it after or before another segment, or omit both to add it last; order matters because a contact belongs to the first turned-on segment it matches. In ACCOUNTS mode, add target accounts with audience_segment_add_accounts instead.
Delete up to 10 segments of a segmented audience. Only a segment that is off can be deleted. Its variants of every personalized email, landing page, and ad campaign go to the trash with it. Confirm with the user first.
Turn off up to 10 segments of a segmented audience. Their members leave the audience or fall through to the next turned-on segment they match. Turning a segment on publishes its variants and starts membership, so only a person can do that.
Get one segment of a segmented audience: its name, description, statement, and status (ENABLED is on, DISABLED is off), the audience's personalization mode, and every base asset linked to the audience with its personalization instructions and this segment's variant (`variant.variantAssetId` is the id of the copy: an email, a landing page, or for an ad campaign an ad set, with its status). In ACCOUNTS mode each segment is one target account (its statement is a single company), and `targetCompanyId` is that company's id: read it with `company_get`. Variant statuses: NONE (not personalized yet, or reviewed), PERSONALIZING, NEEDS_REVIEW (personalized, waiting for review), PUBLISHING, PUBLISHED, FAILED (`variant.error.message` says why). A base with no variant, or whose variant's copy isn't written yet, can't be personalized until the copy exists. To change one segment's copy, edit `variant.variantAssetId` with `edit_email` or `edit_landing_page`, or for an ad set read it with `ad_set_get` and edit its ads with `ad_update`. Editing the base never changes existing variants.
Check personalization progress for up to 20 segments of a personalized audience: whether each segment's personalization run is still going, how many of its variants are in each status, and why any failed. Use it when the user asks how personalization is going, instead of reading each segment in full.
Check whether up to 20 segments are ready to be turned on, and what turning each on would publish. Turning a segment on publishes its email and landing page variants, so it stays off if any can't be published; this lists each blocker. Ad sets don't block it. You can't turn segments on: a person does that from the audience's Segments tab. Use this to tell them what's left first. Each result lists bases by id: `willPublish` go live for the first time, `unpublishedEdits` are already live and keep serving their published version (draft edits since stay unpublished), and `needsReview` haven't been reviewed, which doesn't block but is worth saying, since turning on publishes them unreviewed.
Start one segment's variant over from its base: its draft is replaced with a copy of the base's DRAFT (default) or PUBLISHED version, and its personalization is lost. This can't be undone, and nothing is published. A blast email and an ad set reset only from DRAFT; an ad set resets to its ad campaign's template, keeping ads already on the platform. Refused while the variant is being personalized. To rewrite a variant with the ABM agent instead, use audience_segment_personalize with its base in `assetIds`.
Set the personalization status of one or more of a segment's variants. Each variant is named by its base asset id. A move the variant's current status doesn't allow is reported per variant; the others still apply.
Rename, describe, restate, or move a segment that is off. A segment that is on can't be changed here: a person must turn it off first. Set only what changes.
Turn personalization on or off for a segmented audience, or change its settings. Set only what changes. - `mode`: ACCOUNTS for 1:1 ABM, where every segment is one target account (add them with audience_segment_add_accounts); CUSTOM for 1:few, where a segment is any group. Switching to ACCOUNTS is refused unless every segment is already a single target account. - `adPlatforms`: platforms where each segment gets its own draft platform audience for its ad set variants. - `off`: turn personalization off. Refused while any asset is personalized for the audience. Turning it on creates draft variants of any assets later personalized for it; nothing is published.
Stop personalizing an asset for an audience: every segment's variant of it goes to the trash, including their personalized drafts and any live variant. The base itself is unchanged. Confirm with the user first. A base must be removed this way before it can be deleted.
Change a personalized asset's instructions or `sendBaseFallback`. Set only what changes. New instructions apply to later personalization runs; existing variants keep what they have until they're personalized again.
Get the business's email limits, link tracking, and one-click unsubscribe scope.
Get the business's logo and icon asset IDs. Returns four fields: logoLight, logoDark, iconLight, iconDark. Each is a tapp-assets asset ID — render via https://assets.conversion.ai/i/{id}, or empty string if unset.
Immediately add members. The categories take different arguments: CUSTOM adds everyone matching a `statement`; WEBINAR and FIELD_EVENT add an explicit list of `contactIds`. A webinar member cannot be added as Registered here. That status registers the person with the webinar's provider (Zoom and friends) for real and can email them, so it is left to a person working in the app. Leave `statusId` unset to use the webinar's first status (Invited). A field event never registers anyone on its provider, so every one of its statuses is available. BEFORE CALLING (CUSTOM only): Call `learn_statement_semantics` first to load the schema before calling this tool.
Create a campaign. Set `category` to choose which kind. CUSTOM creates a user-built campaign and needs `campaignTypeId` — resolve one with `list` (resource `campaign_types`) first. Optionally connect it to Salesforce: set `externalId` to link an existing Salesforce campaign, OR `createSalesforceCampaign: true` to create a new one — never both, they are mutually exclusive. Either one queues an initial member sync. Omit both for a Conversion-only campaign. The campaign is still created if the Salesforce connect fails, and this tool cannot tell the difference — so never report the campaign as connected on the strength of this call alone. Confirm with `list` (resource `campaigns`) that its `externalId` is set (for a newly created Salesforce campaign that happens asynchronously, so it may be empty at first). WEBINAR creates a webinar, always unbound: it is not attached to a provider webinar (Zoom and friends). Attach it afterwards with `list` (resource `bindable_webinars`) then `campaign_link_provider`. `campaignTypeId` does not apply — the managed Webinar type is seeded automatically. FIELD_EVENT creates a field event (a conference, tradeshow, dinner or similar real-world event), always unbound, and needs a FIELD_EVENT-category `campaignTypeId` — resolve one with `list` (resource `campaign_types`). Attach it to its event on Cvent, Luma or Splash afterwards with `list` (resource `bindable_field_events`) then `campaign_link_provider`; connect Salesforce with `campaign_link_salesforce` or `campaign_sync_salesforce`. Event details (dates, venue, capacity) are campaign fields the provider fills in on bind, not arguments here.
Create a new campaign type with initial member statuses. Set `category: "FIELD_EVENT"` for a type field events use; its statuses carry `systemStatuses` meanings so Cvent, Luma and Splash know which status to write registrations, waitlists, check-ins and no-shows to.
Add a new member status to an existing campaign type. Statuses define the lifecycle stages a contact can be in for any campaign of this type (e.g., adding 'Waitlisted' to an 'Event' type). Before calling, use `list` (resource `campaign_type_statuses`) to see what's already defined — duplicate names are confusing for downstream reporting.
Permanently delete a campaign that is already EMPTY. Works for custom campaigns, webinars and field events — set `category` to say which, since the id alone does not identify the kind. Use `list` (resource `campaigns`) first when you need to verify the target. Deleting a bound webinar or field event removes it here only; the event still exists at the provider, and a linked Salesforce campaign is untouched. A field event the user is merely done with should be archived (edit_campaign with `archived: true`), not deleted. A campaign holding assets cannot be deleted, and nothing is cascaded: every email, automation, form, audience and nested campaign or folder inside it has to be deleted (or moved out) first. This tool refuses and lists what is in the way rather than deleting anything, so `list` (resource `campaign_items`) is only needed when you want to look before calling.
Permanently delete a campaign type that no campaign is on. Refused while any campaign still uses it — deleting a type never deletes or retypes those campaigns. Use `list` (resource `campaign_types`) and `list` (resource `campaigns`) first to verify the target and find what is still on it.
Permanently delete a campaign member status. Refused while any campaign member still has the status — a status in use can only be retired by hiding it, which keeps existing members on it but stops it being offered when picking a status. Use `list` (resource `campaign_type_statuses`) first to verify the target.
Get all assets inside a campaign (emails, automations, forms, etc.). Takes a custom campaign, webinar or field event id — all are containers, so no category is needed.
Get member counts by status for a webinar or a field event — total members plus one count per status (e.g. Invited, Registered, Attended, No Show), zero-filled and ordered by the status ladder. Statuses with isSuccess true count as attendance; a field event's statuses also carry their systemStatuses meanings. Prefer this over paging `list` (resource `campaign_members`) when you only need counts. Custom campaigns report memberCount on `list` (resource `campaigns`) instead.
Bind a Conversion webinar to a provider webinar (Zoom, Sequel, or Goldcast) and cache that provider's title, schedule, host, and registration URL. Resolve `provider` and `providerWebinarId` with `list` (resource `bindable_webinars`) — never guess them. Fails if the Conversion webinar is already bound (`list` (resource `campaigns`) with `category: "WEBINAR"`, check `bound`) or if that provider webinar is already bound to another Conversion webinar. Binding is one-shot: you cannot unbind or re-bind from here — unbinding is done from the webinar's page in the app. This does NOT connect the webinar to Salesforce. Use `campaign_link_salesforce` or `campaign_sync_salesforce` for that.
Connect a campaign to an EXISTING Salesforce campaign and queue the initial member sync. Set `category` to choose which kind. Resolve `salesforceCampaignId` with `list` (resource `salesforce_campaigns`) — never guess it. Fails if the campaign is already connected: check it first with `list` (resource `campaigns`) (`externalId` for CUSTOM, `salesforceId` for WEBINAR and FIELD_EVENT) and if it's set, tell the user instead of retrying. A Salesforce campaign can be linked to only one campaign, webinar or field event. To create a new Salesforce campaign instead, use `campaign_sync_salesforce`. The sync is queued, not instant. For a WEBINAR or FIELD_EVENT this connects it to Salesforce only. It does NOT connect it to the provider that hosts it (Zoom, Cvent and friends) — use `campaign_link_provider` for that.
List campaigns for the current business. Campaigns come in three kinds and this tool covers all of them: custom campaigns, which the user builds; webinars, which may be bound to a provider such as Zoom; and field events (conferences, tradeshows, dinners), which may be bound to Cvent, Luma, or Splash. Omit `category` to see every kind — that returns the first page of each and no cursor. Pass a `category` to page through one kind with `after`. When the user asks about "campaigns" or "events" without qualifying, omit `category` so webinars and field events are not silently left out.
List events at the business's connected providers that are not already bound to a Conversion webinar or field event. For WEBINAR (the default) this lists webinars across every connected webinar provider (Zoom, Sequel, Goldcast, Wistia, GoTo Webinar) in one call. For FIELD_EVENT pass the `provider` (CVENT, LUMA or SPLASH) — each provider is listed separately, newest start first, and pages with `after`; `query` searches titles on Cvent and Splash (Luma lists by date only). Use this to resolve the `provider` and `providerWebinarId` / `providerEventId` you pass to `campaign_link_provider` — never guess those values. Already-bound events are omitted. An empty list means no provider is connected, or every event is already bound. Salesforce campaigns are not in this list — use `list` (resource `salesforce_campaigns`) for those.
List members of a campaign with cursor pagination. Works for custom campaigns, webinars and field events — set `category` to say which, since the id alone does not identify the kind. Returns each member with their contact details and campaign status. Supports statement filters to narrow by contact properties.
List the member statuses defined on a campaign type (e.g., Invited, Registered, Attended). Each status has an id, name, isSuccess flag, and hidden flag — a hidden status is retired: members already on it keep it, but don't pick one when setting a member's status. Call this before `campaign_create_type_status` to avoid creating a duplicate, and before referencing a status by id in `edit_campaign` (memberStatuses).
List campaign types for the business. Each type defines a set of member statuses (e.g., Invited, Registered, Attended). You need a campaign type ID to create a campaign.
Immediately set a campaign's value for one token.
Create a NEW Salesforce campaign for an existing campaign and queue the initial sync, pushing its members out to Salesforce. Set `category` to choose which kind. Fails if the campaign is already connected — check it first with `list` (resource `campaigns`) (`externalId` for CUSTOM, `salesforceId` for WEBINAR and FIELD_EVENT) — or if its statuses aren't Salesforce-compatible. To connect it to a Salesforce campaign that already exists, use `campaign_link_salesforce`. The sync is queued, not instant. For a WEBINAR the managed Webinar statuses are what get created in Salesforce. For a FIELD_EVENT the event's type statuses are created and the Salesforce campaign's Type is set to the field event type's name. Neither connects the event to the provider that hosts it — use `campaign_link_provider` for that.
Immediately set a member's status. Works for custom campaigns, webinars and field events — set `category` to say which. A webinar member cannot be moved to Registered here. That status registers the person with the webinar's provider (Zoom and friends) for real and can email them, so it is left to a person working in the app. Every other webinar status is available. A field event never registers anyone on its provider, so every one of its statuses is available; a status the provider owns (registered, attended) may be re-asserted by the provider's next sync.
Update an existing campaign type. Any of name, description, archived may be set; omitted fields are left unchanged. Statuses on the type are managed separately.
Conversion ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Conversion's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Conversion alternatives on ChatGPT?
As of 2026-11-02, Conversion competes with ActiveCampaign, Aivie, Attentive, AWeber, Banger, beehiiv, Bizgo, Brevo and 45 more in ChatGPT Email & SMS Lifecycle Marketing Automation, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.